Как отключить "navigator.webdriver" в chromedriver? - PullRequest
0 голосов
/ 26 февраля 2020

После нескольких часов поиска методов я не смог найти ни одного способа, который бы просто работал.

Единственный способ, который я смог найти, - установить для параметра «pageLoadingStrategy» значение «eager», а затем сразу выполнить некоторое значение javascript, чтобы оно могло изменить значение navigator.webdriver до страница была отображена. Но тогда вам нужно менять значение после каждого запроса, и это не очень надежно.

Как установить это значение перед выполнением каких-либо запросов? Есть ли флаг?

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Посмотрев на исходный код chrome, я наконец-то выяснил, какой флаг нужно использовать, чтобы отключить эту неприятность navigator.webdriver.

Вот флаг, который нужно использовать при запуске хромедрайвера. Это полностью отключает даже отображение "webdriver = true". :)

--disable-blink-features=AutomationControlled

Также вот еще несколько функций, которые можно включить / отключить.

Функции

Enable Flag:
--enable-blink-features=example1,example2,example3

Disable Flag
--disable-blink-features=example1,example2,example3

Надеюсь, это поможет кому-то, кто также сталкивался с этой проблемой. Спасибо за просмотр

0 голосов
/ 11 марта 2020
from selenium.webdriver import Chrome
driver = Chrome('./chromedriver')
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
     get: () => undefined
    })
  """
})
driver.get('https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html')

успех для chrome версия 80.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...