Home >Java >javaTutorial >How Can I Prevent Selenium Detection by Modifying the `navigator.webdriver` Flag in Chrome?

How Can I Prevent Selenium Detection by Modifying the `navigator.webdriver` Flag in Chrome?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 04:41:11172browse

How Can I Prevent Selenium Detection by Modifying the `navigator.webdriver` Flag in Chrome?

Modifying navigator.webdriver Flag to Prevent Selenium Detection in Chrome

WebDriver-driven automation often faces detection, with websites employing measures to identify controlled browsers. To prevent this detection, Selenium offers a method to modify the navigator.webdriver flag in Chrome.

1. execute_cdp_cmd() Update

With the introduction of execute_cdp_cmd(), you can execute Google Chrome DevTools commands using Selenium. This empowers you to easily alter the navigator.webdriver flag.

2. Preventing Selenium Detection

To prevent Selenium detection, consider the following approaches:

  • Add the argument '--disable-blink-features=AutomationControlled'
  • Rotate the user agent using execute_cdp_cmd()
  • Set the navigator.webdriver property to undefined
  • Exclude the collection of enable-automation switches
  • Turn off useAutomationExtension

3. Sample Code

Combining these methods, an effective Selenium code snippet would be:

from selenium import webdriver

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_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
print(driver.execute_script("return navigator.userAgent;"))
driver.get('https://www.httpbin.org/headers')

4. Background and Caution

As per the W3C Editor's Draft, the navigator.webdriver flag indicates remote control of the user agent. It is essential to exercise caution, as modifying these parameters may block navigation and highlight the WebDriver instance.

The above is the detailed content of How Can I Prevent Selenium Detection by Modifying the `navigator.webdriver` Flag in Chrome?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn