Контекст
В настоящее время я пытаюсь создать небольшого бота с использованием модуля Selenium и запросов в Python.
Однако веб-страница, с которой я хочу взаимодействовать, работает за Cloudflare.
Мой сценарий python выполняется через Tor с использованием модуля основы.
Анализ моего трафика c основан на Firefox «Параметры разработчика-> Сеть» с использованием журналов сохранения.
Мои выводы пока:
- Веб-драйвер Selenium Firefox часто может получить доступ к веб-странице без прохождения «проверки страницы браузера» (код возврата 503) и «страницы ввода кода» (код возврата 403).
- Запросы объекта сеанса с одним и тем же пользовательским агентом всегда приводят к «странице ввода капчи» (код возврата 403).
Если Cloudflare проверял мою Javascript функциональность, мой модуль запросов не должен возвращать 503 ?
Пример кода
driver = webdriver.Firefox(firefox_profile=fp, options=fOptions)
driver.get("https://www.cloudflare.com") # usually returns code 200 without verifying the browser
session = requests.Session()
# ... applied socks5 proxy for both http and https ... #
session.headers.update({"user-agent": driver.execute_script("return navigator.userAgent;")})
page = session.get("https://www.cloudflare.com")
print(page.status_code) # return code 403
print(page.text) # returns "captcha page"
Оба модуля Selenium и Requests используют один и тот же пользовательский агент и IP.
Оба используют GET без каких-либо параметров.
Как Cloudflare dis tin guish эти трафик c?
Я что-то упустил?
Я попытался передать файлы cookie с веб-драйвера в сеанс запросов, чтобы узнать, возможен ли обход, но не повезло.
Вот используемый код:
for c in driver.get_cookies():
session.cookies.set(c['name'], c['value'], domain=c['domain'])