Как сделать так, чтобы хромовый драйвер селена неизменно получал высокие оценки на демонстрациях recaptcha v3 - PullRequest
0 голосов
/ 21 января 2020

Итак, я недавно начал тестировать селен для некоторых личных проектов, и одна проблема, с которой я столкнулся, была заблокирована на некоторых сайтах из-за тестов recaptcha v3. Я провел еще несколько исследований, нашел демо recaptcha v3, провел некоторое тестирование и в итоге написал следующее:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36");

driver = webdriver.Chrome(options=options, executable_path=ChromeDriverManager().install())
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})

driver.get("https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php")
WebDriverWait(driver, 10).until(EC.title_contains("Index"))

Я рассмотрел различные вопросы о переполнении стека, включая следующие:

Selenium webdriver: изменение флага navigator.webdriver для предотвращения обнаружения селена

Может ли веб-сайт обнаруживать, когда вы используете селен с хроматографом?

Как это сделать recaptcha 3 знаете, что я использую селен / хромедрайвер?

и более

Хотя добавленные аргументы помогают улучшить показатель recaptcha v3, он все еще крайне противоречив. Примерно в половине случаев я получаю проходной балл 0,7, а в другой половине - неудачный балл 0,1.

Пожалуйста, помогите мне улучшить мои оценки в рекапче и последовательно передавать

РЕДАКТИРОВАТЬ 1: Вход в учетную запись Google в экземпляре chrome часто меняет результаты демонстрации Тем не менее, все еще не полностью предотвратить неудачные оценки

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Никто на самом деле не знает, кроме Google, как они оценивают их. Но ... мы можем себе представить, я думаю, что некоторые очевидные факторы:

  • IP-адрес жилой / бизнес против центра обработки данных

  • Google / OAuth куки

  • очевидные вещи, такие как дактилоскопирование пользовательского агента и браузера.

HTH.

0 голосов
/ 21 января 2020

Чтобы увеличить scrore с .7 до более высоких уровней, т.е. .9 или около того, вы можете повернуть - execute_cdp_cmd() следующим образом:

driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browserClientA"}})

В случае необходимости вы можете добавить кратные значения следующим образом:

driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browserClientA"}})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browserClientB"}})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browserClientC"}})

Решение

Таким образом, ваше рабочее решение будет:

  • Кодовый блок:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
      "source": """
        Object.defineProperty(navigator, 'webdriver', {
          get: () => undefined
        })
      """
    })
    driver.execute_cdp_cmd("Network.enable", {})
    driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser1"}})
    driver.get("https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php")
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "li.step3 pre.response"))).get_attribute("innerHTML"))
    
  • Консольный вывод:

    DevTools listening on ws://127.0.0.1:53748/devtools/browser/eac086e8-f1c0-42d3-8ef8-d132f4b4c82b
    {
      "success": true,
      "hostname": "recaptcha-demo.appspot.com",
      "challenge_ts": "2020-01-20T22:31:32Z",
      "apk_package_name": null,
      "score": 0.9,
      "action": "examples/v3scores",
      "error-codes": []
    }
    
  • Снимок консоли:

recaptcha3_score

...