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:
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!