Как обойти проверку на робота Cloudflare с использованием Selenium на Python?

Я нашел готовый байпас по следующей ссылке: <a href="https://www.nowsecure.nl" rel="nofollow">ТЫК</a>. Однако он не соответствует моим требованиям, поскольку при открытии двух вкладок (одной с байпасом и другой с сайтом, на котором необходимо обойти проверку) этот байпас ничего не делает. Я понял, что это не то, что мне нужно. Также мне требуется возможность добавления значений в сессионное хранилище. При использовании <b>driver.get("<a href="https://www.nowsecure.nl" rel="nofollow">https://www.nowsecure.nl</a>")</b> и <b>driver.execute_script("window.open('<a href="https://webcaptcha.xrocket.tg/fHjOZw9g1AaXlkr" rel="nofollow">https://webcaptcha.xrocket.tg/fHjOZw9g1AaXlkr</a>")")</b>, когда я применяю <b>driver.execute_script(f"sessionStorage.setItem('{key_first}', '{value_first}');")</b>, сессионное хранилище обновляется только для <b>driver.get("<a href="https://www.nowsecure.nl" rel="nofollow">https://www.nowsecure.nl</a>")</b>, а мне необходимо, чтобы это изменение касалось новой открытой вкладки. <br/> Попробовал сделать это самостоятельно, но у меня закончились идеи, поэтому обращаюсь за помощью. <br/> Вот мой текущий код: <pre><code class="python">options = webdriver.ChromeOptions()

options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)

driver.get('https://www.nowsecure.nl')
driver.execute_script("window.open('about:blank', 'tab2');")
driver.switch_to.window(driver.window_handles[1])
driver.get("https://webcaptcha.xrocket.tg/fHjOZw9g1AaXlkr")

key_first = 'ph_phc_8F7cboL2F6Trmh58gOn4JwnpPeqSrMjbGmyCmXK5Be2_posthog'
value_first = '{"$referrer":"https://web.telegram.org/","$
  • 8 сентября 2024 г. 5:33
Ответы на вопрос 2
Попытки обойти Cloudflare при помощи Selenium могут быть сложными, так как Cloudflare применяет различные методы защиты от автоматизированного доступа, такие как проверки на роботов, капчи и другие механизмы аутентификации. Тем не менее, вот некоторые шаги и советы, которые могут помочь вам улучшить свой подход, но помните, что обход этих ограничений может нарушать условия использования веб-сайтов и иметь юридические последствия.

### Основные советы:

1. **Сетевые заголовки**: Убедитесь, что ваш скрипт имитирует обычный браузер, устанавливая заголовки, такие как `User-Agent`. Вы можете использовать опции Chrome для установки кастомного User-Agent.

2. **Паузы и взаимодействия**: Если Cloudflare подозревает, что скрипт автоматизирован, это может активировать проверки. Добавьте случайные паузы между действиями и имитируйте взаимодействие с браузером (например, перемещение мыши, нажатия клавиш).

3. **Использование прокси**: Иногда использование прокси-серверов может помочь избежать блокировок. Это может уменьшить вероятность того, что Cloudflare заблокирует ваш IP-адрес.

4. **Куки и локальное хранилище**: Если требуется передать cookies или данные хранилища между вкладками, вы можете использовать метод `driver.get_cookies()`, чтобы получить куки с одной вкладки и установить их на другой с помощью `driver.add_cookie(...)`.

5. **Использование WebDriverWait**: Для ожидания элементов, которые могут загружаться динамически.

### Пример кода:

Вот пример, как можно улучшить ваш код, чтобы использовать куки и попытаться обойти проверку:

```python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time

# Настройте ваши параметры для Chrome
options = Options()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
driver = webdriver.Chrome(service=Service('/path/to/chromedriver'), options=options)

try:
    # Открываем первую вкладку
    driver.get('https://www.nowsecure.nl')
    time.sleep(5)  # Добавьте паузу, чтобы дать время для загрузки страницы

    # Сохраните куки
    cookies = driver.get_cookies()

    # Откройте новую вкладку
    driver.execute_script("window.open('about:blank', 'tab2');")
    driver.switch_to.window(driver.window_handles[1])
    driver.get("https://webcaptcha.xrocket.tg/fHjOZw9g1AaXlkr")

    # Устанавливаем куки для второй вкладки
    for cookie in cookies:
        driver.add_cookie(cookie)

    # Теперь загрузите страницу снова для применения куки
    driver.get("https://webcaptcha.xrocket.tg/fHjOZw9g1AaXlkr")

    # Ваш код для работы с сессионным хранилищем
    driver.execute_script(f"sessionStorage.setItem('{key_first}', '{value_first}');")

finally:
    time.sleep(5)  # Для просмотра результатов
    driver.quit()
```

### Замечания:
- Код запускает Chrome в режиме автоматизации, пытаясь имитировать поведение пользователя, что может помочь избежать некоторых проверок от Cloudflare.
- Учтите, что использование таких техник может быть воспринимаемо как нарушение условий использования сервисов, что может привести к блокировке вашего аккаунта или IP.
- Всегда соблюдайте законы и правила, связанные с веб-скрейпингом и доступом к данным.
Актуально? 

Используйте SeleniumBase + расширения YesCaptcha + UC Mode = 100% пробитья новую каптчу CF.
Похожие вопросы