Maison >Java >javaDidacticiel >Comment puis-je empêcher Selenium Webdriver d'être détecté par les sites Web ?

Comment puis-je empêcher Selenium Webdriver d'être détecté par les sites Web ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-30 17:48:11724parcourir

How Can I Prevent Selenium Webdriver from Being Detected by Websites?

Selenium Webdriver : empêcher la détection en modifiant l'indicateur navigator.webdriver

Introduction

Selenium, un framework d'automatisation Web populaire, est confronté à des défis lorsque les sites Web sont mis en œuvre mécanismes de détection qui signalent les navigateurs pilotés par Selenium. Cet article vise à résoudre ces problèmes de détection en fournissant des méthodes efficaces pour modifier l'indicateur navigator.webdriver, empêchant ainsi la détection de Selenium.

Approche

  1. Ajouter des arguments Chrome :

    • --disable-blink-features=AutomationControlled désactive la fonction de détection d'automatisation.
    options = webdriver.ChromeOptions()
    options.add_argument('--disable-blink-features=AutomationControlled')
    driver = webdriver.Chrome(options=options)
  2. Exécuter la commande CDP :

    • execute_cdp_cmd permet la manipulation directe du navigateur Protocole Chrome DevTools (CDP).
    • Modifiez l'agent utilisateur pour imiter davantage comportement réel de l'utilisateur.
    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'})
  3. Modifier la propriété navigator.webdriver :

    • Modifier la valeur de la propriété du navigateur. pilote Web pour non défini.
    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
  4. Exclure les commutateurs d'automatisation :

    • Ajouter des commutateurs d'exclusion pour empêcher la collecte de commutateurs liés à l'automatisation commutateurs.
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
  5. Désactiver l'extension d'automatisation :

    • Désactivez l'option useAutomationExtension pour réduire davantage la détection.
    options.add_experimental_option('useAutomationExtension', False)

Échantillon Code

Combinaison des méthodes ci-dessus en un seul bloc de code :

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options)
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'})
driver.get('https://www.website.com/')

Contexte historique

Le drapeau navigator.webdriver est défini par le W3C comme un moyen d'indiquer que un agent utilisateur est sous contrôle à distance.

Attention

La modification de ces paramètres peut interférer avec la navigation dans le navigateur et rendre l'instance WebDriver détectable.

Mises à jour

  • Les clients Selenium Python prennent désormais en charge la méthode execute_cdp_cmd.
  • Des paramètres supplémentaires ont été ajoutés pour améliorer encore la détection prévention.

Conclusion

En suivant ces méthodes, vous pouvez modifier efficacement l'indicateur navigator.webdriver et empêcher les sites Web de détecter votre navigateur piloté par Selenium. Cependant, il est important de gérer ces changements avec prudence pour éviter d'être détectés.

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