Все отлично работает на моем локальном компьютере с Windows, но парсер постоянно дает сбой при развертывании в размещенной среде (Hugging Face Spaces, работающий в Docker).
Эти целевые сайты используют Cloudflare Turnstile.
Поведение
- Локально (Windows, домашний IP-адрес):
с олицетворением TLS работает.Код: Выделить всё
curl_cffi - проходит испытание «Подтвердите, что вы человек».
Код: Выделить всё
undetected-chromedriver
- запросы возвращают 403 немедленно.
Код: Выделить всё
curl_cffi - Selenium загружает страницу, но застревает в бесконечном цикле Turnstile.
- Даже когда флажок обнаружен и нажат (щелчок JS, обычный щелчок и Tab+пробел на клавиатуре), задача никогда не завершается.
Это убедительно свидетельствует о том, что Cloudflare блокирует в первую очередь на основе репутации IP/ASN и/или безголового/контейнерного снятия отпечатков пальцев.
Tech Stack
- Python 3.9
- Бэкенд FastAPI
- Основной метод запроса: Curl_cffi (подмена отпечатка TLS)
- Резервный вариант: Selenium с undetected-chromedriver
- Среда: Docker (Debian, Chrome) Стабильно)
1. Подмена TLS с помощью Curl_cffi
Код: Выделить всё
from curl_cffi import requests
response = requests.get(url, impersonate="chrome120", headers=headers)
# Works locally, fails in Docker with 403
response = requests.get(url, impersonate="safari15_5", headers=headers)
# Also fails in Docker
2. Selenium с необнаруженным хромированным драйвером
Код: Выделить всё
import undetected_chromedriver as uc
options = uc.ChromeOptions()
options.add_argument("--headless=new")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
driver = uc.Chrome(options=options)
- Обнаружение iframe
- Проверка теневого DOM
- Стандартный клик + клик JS
- Навигация с помощью клавиатуры (Tab + Пробел)
Вопросы
- По состоянию на начало 2026 года действительно ли возможно обойти современный турникет Cloudflare из центра обработки данных/облачного IP-адреса, используя только инструменты с открытым исходным кодом (например, undetected-chromedriver, Playwright, Curl_cffi)?
- Если и Curl_cffi, и Selenium эффективно заблокированы из-за репутации IP/ASN, есть ли какой-либо флаг конфигурации или настройка браузера, которые мне не хватает, которые могли бы заставить эту работу работать из размещенного контейнера?
- Какова стандартная архитектура обходной путь для размещенного веб-приложения, которому необходимо очищать такие сайты без взаимодействия с пользователем?
- Является ли единственный реалистичный вариант:
резидентные прокси? - Или переносить очистку на локальный агент, работающий на компьютере пользователя?
- Является ли единственный реалистичный вариант:
Является ли теперь Cloudflare Turnstile принципиально неразрешимой задачей в средах центров обработки данных, что делает сбор частных IP-адресов или клиентскую/локальную очистку единственным возможным путем?
Я пытаюсь определить, упускаю ли я какие-то технические детали или это проблема просто жесткое архитектурное ограничение в 2026 году.
Подробнее: https://stackoverflow.com/questions/798 ... ng-seleniu
Мобильная версия