CloudScraper — модуль для автоматизации HTTP-запросов и работы с веб-ресурсами, использующими дополнительные механизмы валидации трафика, такие как Cloudflare. В сочетании с прокси CloudScraper помогает управлять соединениями, задавать сетевые параметры запросов и обеспечивать стабильный доступ к сайтам, проверяющим IP, заголовки и поведение клиента.
CloudScraper реализован на Python и построен на базе библиотеки requests. В отличие от обычных HTTP-клиентов, он может автоматически обрабатывать challenge-страницы с JavaScript-чекпойнтами, эмулируя поведение браузера. Модуль добавляет нужные заголовки, управляет cookies, выполняет редиректы и способен работать с типовыми механизмами защиты, если они не включают капчу.
При использовании совместно с прокси CloudScraper позволяет:
Библиотека работает без запуска браузера и может заменить headless-инструменты Puppeteer, Playwright и аналогичные.
Cloudflare применяет разные уровни защиты от автоматических запросов: JavaScript-челленджи, HTTP-редиректы, проверку заголовков, cookie-токены и ограничения по IP. Библиотека определяет тип механизма валидации и выбирает соответствующий способ обработки.
CloudScraper — кроссплатформенная библиотека, регулярно обновляемая и совместимая с операционными системами Windows, Linux и macOS. Она поддерживает работу в виртуальных окружениях и на серверах без графического интерфейса.
Для начала работы потребуется установленный Python версии 3.6 или выше. Использование CloudScraper на Python удобно тем, что модуль подключается одной командой и сразу готов к работе в любых средах.
Инструмент устанавливается через стандартный пакетный менеджер Python — pip, который позволяет загружать и обновлять сторонние библиотеки из официального репозитория PyPI. При использовании виртуального окружения его необходимо активировать перед установкой.
pip install cloudscraper
В процессе установки библиотека автоматически подтягивает ключевые зависимости: requests, pyparsing и requests-toolbelt. При необходимости их можно обновить вручную:
pip install --upgrade requests pyparsing requests-toolbelt
Убедиться, что установка завершена корректно, можно с помощью выполнения тестового скрипта:
import cloudscraper
scraper = cloudscraper.create_scraper()
response = scraper.get("https://www.cloudflare.com")
print(response.status_code)
Если скрипт вернет статус-код 200, 301 или 302 — подключение прошло успешно и ответ от сервера получен.
Пример ниже демонстрирует, как с помощью модуля отправить запрос к защищенной странице, указав параметры окружения, соответствующие браузеру Chrome на Windows. Это необходимо для корректной генерации заголовков и повышения шансов на успешное установление сессии:
import cloudscraper
url = "https://example.com/protected"
scraper = cloudscraper.create_scraper(
browser={
'browser': 'chrome',
'platform': 'windows',
'mobile': False
}
)
response = scraper.get(url)
if response.status_code == 200:
print("Доступ получен.")
print(response.text[:500])
elif response.status_code == 403:
print("Запрос отклонен. Проверьте прокси или заголовки.")
else:
print(f"Код ответа: {response.status_code}")
На основе этих параметров модуль подставляет соответствующий User-Agent и другие ключевые заголовки, что позволяет корректно обработать challenge и получить содержимое страницы.
Если используется прокси, CloudScraper принимает его параметры в стандартной форме — как словарь proxies, аналогичный формату библиотеки requests.
Пример, как передать параметры прокси-сервера при выполнении запроса:
proxies = {
'http': 'http://user:[email protected]:port',
'https': 'http://user:[email protected]:port'
}
scraper = cloudscraper.create_scraper()
response = scraper.get(url, proxies=proxies)
Прокси рекомендованы при работе с ресурсами, ограничивающими доступ по IP, региону или частоте обращений. Они помогают распределять нагрузку, моделировать трафик из нужного региона и повышать стабильность доступа.
Несмотря на расширенные механизмы взаимодействия с защитой, обработка капчи в CloudScraper не выполняется автоматически. Это касается интерактивных hCaptcha и графических reCAPTCHA. Библиотека не распознает их содержимое, поэтому не генерирует ответы на подобные формы.
При получении страницы с капчей модуль возвращает HTML, содержащий соответствующий элемент, например:
<iframe src="https://www.google.com/recaptcha/api2/anchor?...">
В этом случае возможны два варианта решения:
captcha_data = {
'method': 'userrecaptcha',
'googlekey': 'SITE_KEY',
'pageurl': 'https://example.com',
'key': 'API_KEY_ANTICAPTCHA'
}
Использование headless-браузеров (например, Puppeteer или Playwright) с поддержкой плагинов для автоматического решения капчи. Это позволяет эмулировать полноценное поведение пользователя.
Если капча появляется даже при умеренной частоте обращений, имеет смысл:
Качество IP-адреса — критический фактор при работе с защищенными ресурсами. Надежные прокси для CloudScraper (резидентские, мобильные, ISP или датацентровые) позволяют снизить вероятность капчи и обеспечить бесперебойную работу сессии. В чем отличие между разными типами прокси и как выбрать оптимальное решение для конкретной задачи, читайте в этом материале.
Модуль решает множество задач, связанных с обходом Cloudflare, но в некоторых случаях может потребоваться другой подход — более специализированный или совместимый с конкретными условиями защиты.
Ниже приведены распространенные альтернативы:
Сравнение решений:
| Характеристика / Инструмент | CloudScraper | Requests+cookies | Puppeteer | Playwright |
|---|---|---|---|---|
| Сложность внедрения | Низкая | Средняя | Высокая | Высокая |
| Скорость работы | Высокая | Высокая | Средняя | Средняя |
| Устойчивость к проверкам | Средняя | Низкая | Высокая | Максимальная |
| Интеграция с капча-сервисами | Да (через API) | Нет | Да (через плагины/API) | Да (через плагины/API) |
| Исполнение JavaScript | Частично | Нет | Да | Да |
| Ресурсоемкость | Низкая | Низкая | Высокая | Высокая |
Даже при корректной установке CloudScraper возможны технические сбои, которые можно быстро устранить, понимая причины их возникновения.
При обработке запроса появляется сообщение о проблеме с SSL-сертификатом. Это указывает на сбой в его верификации — чаще всего из-за окончания срока действия или некорректной системной даты.
Как исправить:
scraper.get(url, verify=False)
Код показывает, как временно обойти ошибку проверки SSL, отключив проверку сертификата. Это полезно для диагностики, но опасно для постоянного использования.
Сервер отклоняет запрос с ошибкой 403, несмотря на то, что URL доступен в браузере. Это происходит, когда защита распознает обращение как автоматизированное.
Как решить проблему:
import cloudscraper
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.199 Safari/537.36',
'Referer': 'https://example.com',
'Accept-Language': 'en-US,en;q=0.9',
'Accept-Encoding': 'gzip, deflate, br'
}
scraper = cloudscraper.create_scraper()
response = scraper.get("https://example.com", headers=headers)
print(response.status_code)
Важно: Если User-Agent задается вручную через headers, использовать параметр browser при создании сессии не требуется — он будет перезаписан.
Также нужно проверить используемые прокси и, при необходимости, сменить IP или выбрать промежуточный сервер из другого региона.
Модуль не может обработать полученную challenge-страницу, возвращая пустой HTML или текст об ошибке. Причина — тип защиты, который библиотека не поддерживает (например, hCaptcha или Turnstile).
Как устранить проблему:
Если ничего не помогло, рекомендуется перейти на headless-браузеры.
При попытке запроса наблюдается повторяющееся перенаправление между страницами. Контент не загружается, а адресная строка меняется несколько раз подряд.
В данном случае сервер перенаправляет пользователя обратно на проверочную страницу, потому что не определяет прохождение защиты. Это может происходить из-за того, что cookies не сохраняются между запросами или сессия теряется при переходах.
Алгоритм действий:
import cloudscraper
scraper = cloudscraper.create_scraper()
response1 = scraper.get("https://example.com/start")
response2 = scraper.get("https://example.com/continue")
print(response2.status_code)
import time
import cloudscraper
scraper = cloudscraper.create_scraper()
response1 = scraper.get("https://example.com/start")
time.sleep(2)
response2 = scraper.get("https://example.com/continue")
Добавление задержки помогает избежать ситуаций, когда сервер классифицирует трафик как автоматизированный из-за слишком высокой частоты обращений. Это актуально при использовании прокси с CloudScraper: пауза повышает стабильность сессии и снижает вероятность срабатывания фильтров.
Запросы выполняются с перебоями: одни проходят, другие завершаются ошибкой соединения или тайм-аутом. Часто такое поведение связано с низким качеством IP-адресов.
Как устранить проблему:
Логирование помогает отслеживать работу модуля при подключении через прокси-сервер (запросы, статус-коды, тип ошибки). В Python это делается через стандартный модуль logging, например:
import logging
import cloudscraper
# базовое логирование в файл
logging.basicConfig(
filename="scraper.log",
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
scraper = cloudscraper.create_scraper()
try:
response = scraper.get("https://example.com")
logging.info(f"Запрос успешен, статус: {response.status_code}")
except Exception as e:
logging.error(f"Ошибка при запросе: {e}")
Так формируется журнал ошибок и успешных запросов, по которому можно определить, на каком прокси возникла проблема и в какой момент.
Если один прокси начал возвращать 403, timeout, SSL-ошибку и т.д., нужно настроить ротацию IP-адресов. Для этого применяется прокси-пул, из которого при сбое выбирается следующий доступный сервер:
import cloudscraper
proxies_list = [
"http://user:pass@proxy1:port",
"http://user:pass@proxy2:port",
"http://user:pass@proxy3:port"
]
url = "https://example.com"
scraper = cloudscraper.create_scraper()
for proxy in proxies_list:
try:
response = scraper.get(url, proxies={"http": proxy, "https": proxy}, timeout=10)
if response.status_code == 200:
print("Успешно через:", proxy)
break
except Exception as e:
print("Ошибка на", proxy, "-", e)
В результате запросы выполняются через первый доступный прокси-сервер из пула, что исключает простои из-за нерабочих адресов.
Вместе с использованием прокси CloudScraper подходит для автоматизации запросов к сайтам с защитой на уровне соединения. Ошибки возникают при нестабильных прокси-серверах, высокой частоте запросов или срабатывании капчи. Решения — надежные IP, адаптация заголовков и контроль частоты обращений.
Нет. Библиотека работает на уровне HTTP-запросов и не воспроизводит поведение реального браузера. Он может маскироваться с помощью заголовков, но не способен эмулировать поведение пользователя или отпечатки (fingerprints), как это делают антидетект-браузеры. Для задач с обходом поведенческих проверок нужны headless-инструменты вроде Playwright или Puppeteer.
Да. Главное — изолировать сессии, использовать прокси-пул и корректно обрабатывать исключения. Важно создавать отдельные сессии для каждого потока. При ошибках подключения (timeout, ProxyError, 403 Forbidden, 429 Too Many Requests) рекомендуется реализовать ротацию прокси-серверов.
CloudScraper подходит для небольших или средних проектов, где важна скорость внедрения. Для критичных задач с большими нагрузками лучше рассматривать более масштабируемые решения (например, Playwright или собственный браузерный движок с кастомной настройкой).
Комментарии: 0