
Python-модуль для обхода анти-бот-страницы Cloudflare.
Доработано Zied Boughdir
Все функции протестированы с 100% успешностью для основной функциональности:
Модуль Python для обхода антибот-страницы Cloudflare (также известной как "I'm Under Attack Mode", или IUAM), реализованный с помощью Requests. Эта расширенная версия включает поддержку задач Cloudflare v2, ротацию прокси, режим скрытности и многое другое. Cloudflare периодически меняет свои методы, поэтому я буду часто обновлять этот репозиторий.
Это может быть полезно, если вы хотите скрейпить или обходить сайт, защищённый Cloudflare. В настоящее время антибот-страница Cloudflare просто проверяет, поддерживает ли клиент Javascript, хотя в будущем могут быть добавлены дополнительные методы.
Из-за того, что Cloudflare постоянно меняет и ужесточает свою защитную страницу, cloudscraper требует JavaScript-движок/интерпретатор для решения Javascript-задач. Это позволяет скрипту легко имитировать обычный веб-браузер без явной деобфускации и разбора Javascript от Cloudflare.
Для справки, вот сообщение по умолчанию, которое Cloudflare использует для таких страниц:``` Checking your browser before accessing website.com.
This process is automatic. Your browser will redirect to your requested content shortly.
Please allow up to 5 seconds...
Любой скрипт, использующий cloudscraper, будет «засыпать» примерно на 5 секунд при первом обращении к любому сайту с включённой защитой Cloudflare от ботов, однако после первого запроса задержки не будет.
# Установка
Просто выполните `pip install cloudscraper`. Пакет PyPI доступен по адресу https://pypi.org/project/cloudscraper/```bash
pip install cloudscraper
В качестве альтернативы, клонируйте этот репозиторий и выполните python setup.py install.
Если вы ранее использовали оригинальный пакет cloudscraper, теперь вы можете напрямую использовать эту улучшенную версию:```python
import cloudscraper # Enhanced version
API остаётся совместимым, поэтому вам нужно лишь изменить операторы импорта в вашем коде. Все вызовы функций и параметры работают так же.
### Структура кодовой базы
Кодовая база была оптимизирована для улучшения поддерживаемости и уменьшения путаницы:
- **Единый модуль**: Весь код теперь находится в модуле `cloudscraper`
- **Удалена избыточность**: Избыточные каталоги удалены
- **Обновлённые тесты**: Все тестовые файлы обновлены для использования модуля `cloudscraper`
Это делает кодовую базу чище и проще в сопровождении, обеспечивая при этом обратную совместимость с существующим кодом, использующим исходный API.
## Ключевые возможности cloudscraper
| Возможность | Описание | Статус |
|---------|-------------|--------|
| **🆕 Совместимость с исполняемыми файлами** | Полное исправление конвертации PyInstaller, cx_Freeze, auto-py-to-exe | ✅ **ИСПРАВЛЕНО** |
| **🆕 Задачи JavaScript VM v3** | Поддержка новейших задач Cloudflare на основе JavaScript VM | ✅ **НОВОЕ** |
| **🆕 Поддержка Turnstile** | Поддержка новой замены CAPTCHA от Cloudflare — Turnstile | ✅ **НОВОЕ** |
| **Поддержка современных задач** | Расширенная поддержка задач Cloudflare v1, v2, v3 и Turnstile | ✅ Полностью |
| **Ротация прокси** | Встроенная умная ротация прокси с несколькими стратегиями | ✅ Улучшено |
| **Стелс-режим** | Имитация человеческого поведения для избежания обнаружения | ✅ Улучшено |
| **Эмуляция браузера** | Продвинутое создание цифрового отпечатка браузера для Chrome и Firefox | ✅ Стабильно |
| **Обработка JavaScript** | Улучшенный интерпретатор JS (js2py по умолчанию) для решения задач | ✅ Улучшено |
| **Решатели капчи** | Поддержка нескольких сервисов решения CAPTCHA | ✅ Стабильно |
# Зависимости
- **Python 3.8+** (Прекращена поддержка Python 3.6 и 3.7)
- **[Requests](https://github.com/psf/requests)** >= 2.31.0
- **[requests_toolbelt](https://pypi.org/project/requests-toolbelt/)** >= 1.0.0
- **[pyparsing](https://pypi.org/project/pyparsing/)** >= 3.1.0
- **[pyOpenSSL](https://pypi.org/project/pyOpenSSL/)** >= 24.0.0
- **[pycryptodome](https://pypi.org/project/pycryptodome/)** >= 3.20.0
- **[websocket-client](https://pypi.org/project/websocket-client/)** >= 1.7.0
- **[js2py](https://pypi.org/project/Js2Py/)** >= 0.74
- **[brotli](https://pypi.org/project/Brotli/)** >= 1.1.0
- **[certifi](https://pypi.org/project/certifi/)** >= 2024.2.2
`python setup.py install` автоматически установит зависимости Python. Единственное, что вам нужно установить самостоятельно, — это интерпретаторы и/или движки javascript, которые вы решите использовать, за исключением js2py, входящего в состав требований по умолчанию.
# Интерпретаторы и движки Javascript
Мы поддерживаем следующие интерпретаторы/движки Javascript.