Посібник із FlareSolverr: вебскрапінг та обхід Cloudflare
У цій статті я покажу вам, як саме налаштувати й використовувати FlareSolverr щоб збирати дані через вебскрапінг без блокувань. Почнімо!
Що таке FlareSolverr?
FlareSolverr — це інструмент з відкритим кодом, який допомагає обходити захисні перевірки Cloudflare. Вебсайти використовують Cloudflare, щоб запобігати вебскрапінгу ботами, але FlareSolverr може обходити ці захисти, працюючи як справжній браузер. Він завантажує вебсторінки так само, як це зробила б людина, проходячи перевірки Cloudflare.
How FlareSolverr Works
FlareSolverr — чудове рішення для вебскрапінгу даних із сайтів, що використовують захист Cloudflare.
- Виконує роль проксі: FlareSolverr працює як проксі-сервер, який перехоплює ваші запити та пересилає їх на цільовий вебсайт.
- Імітує справжній браузер: Він запускає сесію безголового браузера, щоб завантажити вебсторінку й пройти перевірку Cloudflare.
- Повертає зібрані дані: Після розв’язання перевірки FlareSolverr повертає вміст сторінки, щоб ви могли витягти потрібні дані.
Як встановити та налаштувати FlareSolverr
Рекомендований спосіб встановити FlareSolverr — використовувати Docker. Docker допомагає упакувати всі залежності в один контейнер, що значно спрощує встановлення та використання.
Installing Docker
Якщо ви ще не встановили Docker, завантажте й інсталюйте його з офіційного вебсайту: https://www.docker.com/get-started
Після встановлення Docker можна переходити до налаштування FlareSolverr.
Завантаження та запуск FlareSolverr
Виконайте в терміналі таку команду, щоб завантажити найновіший образ FlareSolverr:
docker pull 21hsmw/flaresolverr:nodriver
Після завантаження образу створіть і запустіть контейнер, виконавши:
docker run -d - name flaresolverr -p 8191:8191 21hsmw/flaresolverr:nodriver
Ця команда виконує таке:
- -d запускає контейнер у відокремленому режимі (у фоновому режимі).
- — `name flaresolverr` задає ім’я контейнера.
- -p 8191:8191 налаштовує порт для FlareSolverr.
Verifying FlareSolverr Installation
Щоб перевірити, чи запущено FlareSolverr, відкрийте браузер і перейдіть за адресою:
Якщо все налаштовано правильно, ви побачите повідомлення про успішний запуск FlareSolverr.
Вебскрапінг даних за допомогою FlareSolverr
FlareSolverr працює, обробляючи запити замість вас. Замість того щоб надсилати запити безпосередньо на вебсайт, ви надсилаєте їх до FlareSolverr, який обробляє їх і повертає відповідь.
Ось як виконати вебскрапінг сайту, захищеного Cloudflare, за допомогою Python:
Крок 1: Встановіть потрібні бібліотеки
Спочатку встановіть бібліотеки requests і BeautifulSoup, якщо ви ще цього не зробили:
pip install requests bs4
Крок 2: Напишіть скрипт для вебскрапінгу
Створіть новий файл Python і додайте такий скрипт:
import requests
# Define FlareSolverr URL
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
# Define request parameters
data = {
"cmd": "request.get",
"url": "https://www.example.com",
"maxTimeout": 60000
}
# Send request to FlareSolverr
response = requests.post(url, headers=headers, json=data)
# Print response details
print("Статус:", response.json().get('status', {}))
print("Код статусу:", response.status_code)
print("Повідомлення FlareSolverr:", response.json().get('message', {}))
# Extract page content
page_content = response.json().get('рішення', {}).get('response', '')
print(page_content)
Цей скрипт:
- Надсилає запит до FlareSolverr, щоб обійти Cloudflare.
- Чекає, доки перевірку буде пройдено.
- Повертає HTML-вміст сторінки.
Парсинг зібраних даних
Коли у вас буде вміст сторінки, можна витягнути потрібні дані за допомогою BeautifulSoup.
Змініть свій скрипт, щоб витягувати інформацію:
from bs4 import BeautifulSoup
# Parse HTML content
soup = BeautifulSoup(page_content, 'html.parser')
# Extract specific data
title = soup.find('title').text
print("Заголовок сторінки:", title)
Це витягне й відобразить заголовок сторінки з вебсторінки, з якої виконано вебскрапінг.
Використання проксі з FlareSolverr
Використання проксі допомагає уникати IP-блокувань і географічних обмежень.
Додавання проксі до FlareSolverr
Ви можете використовувати проксі, змінивши тіло запиту:
import random
proxy_list = [
'185.150.85.170',
'45.154.194.148',
'104.244.83.140'
]
proxy_ip = random.choice(proxy_list)
proxies = {
'http': f'http://{proxy_ip}',
'https': f'https://{proxy_ip}',
}
data = {
"cmd": "request.get",
"url": "https://www.example.com",
"maxTimeout": 60000
}
response = requests.post(url, headers=headers, json=data, proxies=proxies)
print("Код статусу:", response.status_code)
Цей скрипт вибирає випадковий проксі зі списку і використовує його для запиту.
Керування сесіями та файлами cookie
Cloudflare використовує cookies для відстеження сеансів користувачів. FlareSolverr може зберігати й повторно використовувати cookies, підвищуючи ефективність вебскрапінгу.
Створення сесії
Щоб створити сесію:
data = {
"cmd": "sessions.create"
}
response = requests.post(url, headers=headers, json=data)
session_id = response.json().get('сесія', {})
print("ID сесії:", session_id)
Використання сесії
Після отримання ID сесії використовуйте його для наступних запитів:
data = {
"cmd": "request.get",
"url": "https://www.example.com",
"maxTimeout": 60000,
"session": session_id
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
Troubleshooting Common Issues
Ось поширені проблеми FlareSolverr і способи їх усунення:
FlareSolverr не запущено
Перевірте, чи запущений контейнер Docker:
docker ps
Перезапустіть контейнер:
docker restart flaresolverr
Запит завершується помилкою через CAPTCHA-перевірку
- Use Ротаційні проксі.
- Зменшіть частоту запитів, щоб імітувати поведінку реального користувача.
Cookies не працюють
Переконайтеся, що ви використовуєте вебскрапінг на основі сесій.
FlareSolverr Alternatives
Якщо FlareSolverr не підходить для вашого сценарію, розгляньте ці альтернативи:
- Playwright & Puppeteer — Автоматизуйте взаємодію з браузером. Дізнайтеся більше про вебскрапінг за допомогою Playwright and Puppeteer.
- Web Scraper APIs — Використовуйте API для вебскрапінгу щоб повністю автоматизувати всю інфраструктуру вебскрапінгу.
- Scraping Browsers — Такі інструменти, як ScrapingBee, мають вбудований обхід Cloudflare.
Conclusion
FlareSolverr — це потужний інструмент для обходу викликів Cloudflare та вебскрапінгу захищених сайтів. Завдяки Docker, проксі та керуванню сесіями ви можете ефективно збирати дані без блокувань. Якщо вам потрібне надійніше рішення для вебскрапінгу, розгляньте альтернативні інструменти, як-от Playwright, Puppeteer або API для вебскрапінгу. Успішного вебскрапінгу!

