FlareSolverr – это инструмент с открытым исходным кодом для обхода проблем Cloudflare и защиты DDoS-Guard. Он устанавливает прокси-сервер для ваших запросов, имитирует браузер Chrome, чтобы пройти проверку безопасности, и отображает содержимое сайта.
В этой статье вы узнаете, как установить FlareSolverr и настроить инструмент для веб-скреппинга. Вы также узнаете, как обойти проблемы безопасности веб-сайтов.
Реализация FlareSolverr
FlareSolverr предлагает несколько способов установки. Однако для последовательной реализации рекомендуется использовать Docker, так как он упаковывает все зависимости и конфигурации в ваш контейнер Docker.
Настройка FlareSolverr с помощью Docker
Установив Docker на устройство, загрузите последнюю версию FlareSolverr, доступную на DockerHub, в реестре GitHub и в репозиториях сообщества. Следующая команда оболочки извлекает последний образ FlareSolverr из Docker:
docker pull 21hsmw/flaresolverr:nodriver
Вы можете выполнить команду docker image ls
, чтобы убедиться, что образ доступен в вашей системе:
FlareSolverr работает как прокси-сервер на вашем устройстве, поэтому вам нужно определить порты, через которые он может обслуживаться и быть доступным. Следующая команда устанавливает 8191
в качестве порта FlareSolverr и создает контейнер для службы:
docker run -d --name flaresolverr -p 8191:8191 21hsmw/flaresolverr:nodriver
Вы также можете настроить переменные окружения для выполнения Docker. FlareSolverr предлагает опции для ведения журнала и мониторинга на сервере, часового пояса и используемого языка, а также любых механизмов решения CAPTCHA, которые вы хотите использовать с вашим сервером. Для целей данного руководства достаточно настроек Docker по умолчанию.
Убедитесь, что FlareSolverr запущен, зайдя на сайт http://localhost:8191
в браузере:
Получение предварительных условий
Это руководство создано для среды Python. Помимо установки FlareSolverr и Docker, вам может понадобиться установить некоторые пакеты Python, например Beautiful Soup.
Подробнее о веб-скреппинге с помощью BeautifulSoup читайте здесь.
Сбор данных с помощью FlareSolverr
Примечание: Всегда соблюдайте условия предоставления услуг на любом сайте, с которого вы берете данные. Ответственное использование общедоступных данных может быть наказано запретом на использование IP-адресов и другими юридическими последствиями.
Скраппинг с помощью FlareSolverr очень похож на обычный процесс скраппинга, только целевой сайт и параметры запроса отправляются на сервер FlareSolverr. Сервер запускает экземпляр браузера с параметрами вашего сайта и ждет, пока не будет пройден вызов Cloudflare, прежде чем отправить содержимое сайта обратно вам. Вы можете отправлять запросы на сервер FlareSolverr через выполнение curl, скрипты Python и сторонние программы.
Вы можете проверить, защищен ли сайт Cloudflare, выполнив поиск по его HTML-коду, заголовкам или DNS-записям, в которых есть ссылки на Cloudflare. Также можно использовать сторонние инструменты, например Check for Cloudflare:
Давайте протестируем процесс FlareSolverr с помощью Python. Создайте файл Python в своем окружении и скопируйте в него следующий сценарий. Этот пример сценария извлекает HTML-контент с защищенного Cloudflare веб-сайта:
# import Requests python library
import requests
# define the payload for your request execution
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000
}
# structure the payload and make the request call
response = requests.post(url, headers=headers, json=data)
# print the request codes
print("Status:", response.json().get('status', {}))
print("Status Code:", response.status_code)
print("FlareSolverr message:", response.json().get('message', {}))
Этот скрипт отправляет запрос на ваш сервер FlareSolverr для сканирования веб-сайта Temu. FlareSolverr обнаруживает проблему Cloudflare на целевом сайте, решает ее, а затем отправляет обратно HTML-контент и информацию о сессии.
Чтобы выполнить сценарий на языке Python, можно воспользоваться командой CLI python3 .py
:
Получение вызова Cloudflare может зависеть от вашего IP-адреса и мер, принятых сайтом, к которому вы обращаетесь.
Если проблема Cloudflare обойдена, вы можете нормально разбирать HTML-содержимое с помощью Beautiful Soup или других библиотек Python.
Убедитесь, что пакет Python установлен в вашей среде. Для установки можно использовать менеджер пакетов pip, выполнив команду pip install bs4
.
Давайте пройдемся по процессу скраппинга. Начнем с того, что получим правильные HTML-теги для нужной информации. Вот название статьи и имя автора:
Используя эту информацию, вы можете написать сценарий для анализа данных с помощью тегов:
# import python libraries
import requests
from bs4 import BeautifulSoup
# define the payload for your request execution
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000
}
# structure the payload and make the request call
response = requests.post(url, headers=headers, json=data)
# print the request codes
print("Status:", response.json().get('status', {}))
print("Status Code:", response.status_code)
print("FlareSolverr message:", response.json().get('message', {}))
# parse logic
page_content = response.json().get('solution', {}).get('response', '')
soup = BeautifulSoup(page_content, 'html.parser')
# find the div with class 'space-y-3'
target_div = soup.find('div', class_='space-y-3')
# article author
spans = target_div.find_all('span')
span_element = spans[-1]
span_text = span_element.get_text(strip=True)
# article title
h2_element = target_div.find('h2', class_=['font-semibold', 'font-poppins'])
h2_text = h2_element.get_text(strip=True)
print(f"article author: ",span_text, " article title: ", h2_text)
Этот скрипт изначально обходит вызов Cloudflare на сайте, возвращает HTML-содержимое и разбирает его с помощью Beautiful Soup для получения нужной вам информации.
Запустите обновленный файл Python с помощью команды CLI python .py
:
FlareSolverr – это гибкий инструмент, который может быть интегрирован в ваш процесс скраппинга и масштабирован для более сложных случаев использования. Для сайтов с географическими запретами и ограничениями вы также можете использовать FlareSolverr с функциями поддержки прокси. Как это работает, вы узнаете в следующем разделе.
Использование прокси-серверов в FlareSolverr
Использование прокси-серверов в стратегии веб-скрапинга повышает эффективность и обеспечивает устойчивый скрапинг. Прокси позволяют избежать географических ограничений и запретов на IP-адреса, а также маскируют вашу веб-идентификацию для большей анонимности. Прокси-серверы также могут напрямую помочь масштабировать ваши операции по скрапбукингу с помощью одновременных запросов, которые позволяют вам оставаться в рамках ограничений по скорости. В зависимости от качества прокси, ваши запросы могут лучше имитировать реальное поведение пользователей и казаться легитимными для наблюдателей сайта.
В зависимости от использования и функциональности вы можете использовать мобильные прокси, прокси для жилых помещений и прокси для центров обработки данных. Мобильный прокси использует реальные IP-адреса, назначенные телекоммуникационными компаниями, для маршрутизации вашего трафика через сети мобильных операторов (3G, 4G, 5G). Поскольку тысячи пользователей используют один и тот же IP-адрес в разное время, этот тип прокси трудно привязать к конкретному пользователю, и он вряд ли сработает с CAPTCHA, Cloudflare или другими проблемами безопасности. Однако он может быть дороже и медленнее, чем другие категории прокси.
Жилой прокси – это еще одна категория прокси, которая использует реальные IP-адреса пользователей, что позволяет лучше маскировать скраппинг. Он также стоит дорого, но не обладает особой анонимностью пользователей, как мобильный прокси; то есть чрезмерное использование и другое подозрительное поведение может привести к блокировке жилого IP. Его лучше всего использовать для обхода географических ограничений и мониторинга. Прокси центра обработки данных – это облачные прокси или прокси сервера данных, не связанные с провайдером. Они обеспечивают высокоскоростное соединение с низкой задержкой по низкой цене, что делает их оптимальными для массового скраппинга. Они в меньшей степени способны имитировать поведение реального пользователя, что повышает вероятность блокировки веб-сайтов и ограничения скорости.
Вы можете добавлять прокси-серверы в запросы FlareSolverr, указывая их в полезной нагрузке запроса. Бесплатные публичные прокси доступны в Интернете, но для производственных случаев, требующих надежности, лучше использовать управляемые прокси-сервисы.
Следующий пример скрипта подключает вращающиеся прокси-серверы от BrightData для ваших запросов к FlareSolverr:
import requests
import random
proxy_list = [
'185.150.85.170',
'45.154.194.148',
'104.244.83.140',
'58.97.241.46',
'103.250.82.245',
'83.229.13.167',
]
proxy_ip = random.choice(proxy_list)
proxies = {
'http': f'http://{proxy_ip}',
'https': f'https://{proxy_ip}',
}
payload = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000
}
response = requests.post(url, headers=headers, json=data, proxies=proxies)
print("Status Code:", response.status_code)
В производственных условиях вы можете поддерживать больший список прокси и просматривать его перед каждым запросом, чтобы обеспечить ротацию выбора прокси для веб-скреппинга.
Управление сеансами и работа с файлами cookie
Cloudflare генерирует и прикрепляет файлы cookie к пользовательскому трафику на веб-сайтах. Это помогает управлять трафиком и защищать от повторных вредоносных запросов, не монополизируя сетевые ресурсы для каждого отдельного запроса. FlareSolverr собирает и передает данные cookie в JSON ответа, что позволяет проверять последующие запросы вместо того, чтобы решать отдельные проблемы Cloudflare при каждом запросе:
FlareSolverr предлагает обработку сеансов для обеспечения большей согласованности при выполнении нескольких запросов. После создания сессии все файлы cookie будут храниться в экземпляре браузера до тех пор, пока сессия не будет уничтожена. Это позволяет улучшить масштабирование и скорость отклика при выполнении запросов на скраппинг.
Следующий код демонстрирует, как создавать сессии в коде скриптов:
import requests
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "sessions.create",
}
response = requests.post(url, headers=headers, json=data)
print(response.text)
Команда в полезной нагрузке запроса меняется на sessions.create
(вместо requests.get
). Значение url
для этой команды не требуется, но вы можете задать прокси для сессии. Ознакомьтесь со структурой команд FlareSolverr, чтобы изучить другие команды, такие как уничтожение сеанса
, список сеансов
и пост-запросы
:
Значение идентификатора сессии можно использовать в последующих запросах, добавив его в полезную нагрузку:
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000,
"session":"<SESSION_ID>"
}
response = requests.post(url, headers=headers, json=data)
print(response.text)
Значение таймаута – это максимальное время в секундах, в течение которого будет выполняться ваш запрос. Если ответ не будет получен в течение этого времени, вы получите ответ об ошибке. Давайте рассмотрим комбинированный сценарий создания сессии и использования идентификатора сессии:
import requests
import time
# creating the session
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
first_request = {
"cmd": "sessions.create",
}
first_response = requests.post(url, headers=headers, json=first_request)
session_id = first_response.json().get('session', {})
# using the session id
second_request = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000,
"session":f"{session_id}"
}
second_response = requests.post(url, headers=headers, json=second_request)
print("Status:", second_response.json().get('status', {}))
Все Python-скрипты можно найти в этом репозитории GitHub.
Теперь вы узнали, как делать запросы в FlareSolverr и интерпретировать ответы, но не менее важно понять, как справляться с отказами.
Устранение неполадок в запросах FlareSolverr
Cloudflare часто обновляет свои протоколы, и различия в веб-сайтах и сценариях использования могут привести к неожиданному поведению. В этом разделе рассказывается о распространенных ошибках, о том, как FlareSolverr справляется с ними, и о том, что можно сделать для решения проблем.
Чтобы устранить неполадки в запросах на скраппинг, всегда начинайте со следующего:
- Журналы FlareSolverr
Вот несколько конкретных ошибок и способы их устранения:
- Повторяющиеся ошибки при запросе/CAPTCHA: это может означать, что сайт пометил ваши запросы как подозрительные. Настройте свои запросы и переключите прокси-серверы, чтобы более точно имитировать реальное поведение пользователей. Срок действия файлов cookie также может истечь, поэтому регулярно обновляйте их, сохраняя сессии запросов.
- Ошибка
"Вызов не обнаружен
“: Это может быть связано с отсутствием вызова, наличием непризнанных мер безопасности, несовместимых с FlareSolverr, использованием устаревшей версии FlareSolverr или намеренным сокрытием вызова. Вы можете получить желаемый контент, если вызов не обнаружен, но если он не работает, попробуйте обновить версию FlareSolverr и провести повторное тестирование, чтобы точно определить проблему. Cookies Provided by FlareSolverr Are Not Valid
error: Эта ошибка возникает, когда cookie-файлы, возвращаемые FlareSolverr, работают некорректно. Часто она возникает из-за несовпадения IP-адресов или сетей между Docker и FlareSolverr, особенно при использовании VPN.
Вы всегда можете найти дополнительную информацию в Интернете, если столкнетесь с другими проблемами, не упомянутыми здесь. За FlareSolverr стоит большое сообщество разработчиков с открытым исходным кодом, поэтому велика вероятность того, что решение возникших у вас проблем уже доступно.
Альтернативы FlareSolverr
FlareSolverr – это инструмент с открытым исходным кодом, предназначенный для пользователей, обладающих техническими навыками, чтобы построить его на своей основе. Однако он не всегда соответствует последним изменениям Cloudflare, что может повлиять на работу, требующую времени. По состоянию на январь 2025 года его решатели CAPTCHA не функционируют, а некоторые сайты ставят перед Cloudflare задачи, которые он не может обойти.
Если вам нужно решение для масштабного скраппинга или более надежного обхода Cloudflare, следующие альтернативы предлагают дополнительные возможности и надежность:
- Браузер для скраппинга: Браузер для скрапинга – это браузер с графическим интерфейсом, разработанный специально для веб-скрапинга, с такими функциями, как автоматическая ротация прокси и встроенное решение CAPTCHA. Bright Data Scraping Browser предлагает простую интеграцию с такими веб-фреймворками, как Playwright, Puppeteer и Selenium, обеспечивая программные рабочие процессы, напрямую связанные с интерактивной средой браузера в масштабе.
- API веб-скраперов: Web Scraper API – это фреймворки, уже интегрированные в целевые домены, позволяющие собирать данные по запросу, не прибегая к ручному процессу скрапинга. Они просты в использовании, имеют готовые структуры данных и архитектуру для обработки массовых вызовов данных. API Bright Data Web Scraper подключаются к ряду популярных доменов, таких как LinkedIn, Zillow, Yelp и Instagram, обеспечивая 100-процентный сбор данных.
- Наборы данных по требованию: При использовании наборов данных по требованию вы получаете управляемую услугу по предоставлению готовых к использованию наборов данных. Это позволяет без особых усилий получить необходимые вам данные, уже структурированные и отформатированные для работы с ними. Bright Data предлагает широкий рынок для различных популярных наборов данных, таких как профили LinkedIn и Instagram, товары Walmart и Shein, а также объявления Booking.com. Эти наборы данных регулярно поддерживаются и обновляются, а для доступа к ним предусмотрены планы подписки.
- Управляемое решение для скрапинга: Наконец, полнофункциональные управляемые решения могут упростить процесс скрапинга благодаря функциям, позволяющим позаботиться о большинстве функций безопасности веб-сайта, таких как рендеринг javascript, отпечатки пальцев браузера, капча и геолокация. Например, Web Unlocker от Bright Data может разблокировать любой домен.
Заключение
В этой статье вы узнали о FlareSolverr и о том, как с его помощью можно обойти проблемы Cloudflare. Вы настроили FlareSolverr для мультипрокси-скреппинга и поддержания доступа к данным в течение нескольких запросов. Наконец, вы узнали, как устранять неполадки в запросах FlareSolverr и с какими распространенными ошибками вы можете столкнуться.
Если вы ищете последовательный и отвечающий всем требованиям инструмент для сбора данных, наш браузер для скрапинга и веб-скраперы предлагают оптимизированные инструменты для ваших процессов скрапинга. Вы получаете управляемые услуги с надежными прокси-серверами, интуитивно понятный пользовательский интерфейс и почти 100-процентные показатели успешности веб-скрапинга.
Зарегистрируйтесь сейчас и начните бесплатную пробную версию!
Кредитная карта не требуется