Maison >Java >javaDidacticiel >Comment puis-je empêcher la détection du sélénium en modifiant l'indicateur « navigateur.webdriver » dans Chrome ?

Comment puis-je empêcher la détection du sélénium en modifiant l'indicateur « navigateur.webdriver » dans Chrome ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 04:41:11175parcourir

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

Modification de l'indicateur navigator.webdriver pour empêcher la détection du sélénium dans Chrome

L'automatisation pilotée par WebDriver est souvent confrontée à la détection, les sites Web employant des mesures pour identifier les navigateurs. Pour éviter cette détection, Selenium propose une méthode pour modifier le drapeau navigator.webdriver dans Chrome.

1. execute_cdp_cmd() Update

Avec l'introduction de execute_cdp_cmd(), vous pouvez exécuter des commandes Google Chrome DevTools à l'aide de Selenium. Cela vous permet de modifier facilement le drapeau navigator.webdriver.

2. Prévenir la détection du sélénium

Pour empêcher la détection du sélénium, envisagez les approches suivantes :

  • Ajoutez l'argument '--disable-blink-features=AutomationControlled'
  • Faites pivoter l'agent utilisateur à l'aide d'execute_cdp_cmd()
  • Définissez le navigateur.webdriver propriété à non définie
  • Exclure la collection de commutateurs d'activation d'automatisation
  • Désactiver useAutomationExtension

3. Exemple de code

En combinant ces méthodes, un extrait de code Selenium efficace serait :

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. Contexte et mise en garde

Conformément au projet de l'éditeur du W3C, l'indicateur navigator.webdriver indique le contrôle à distance de l'agent utilisateur. Il est essentiel de faire preuve de prudence, car la modification de ces paramètres peut bloquer la navigation et mettre en évidence l'instance WebDriver.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn