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
Libérer: 2024-12-30 17:48:11
original
735 Les gens l'ont consulté

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)
    Copier après la connexion
  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'})
    Copier après la connexion
  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})")
    Copier après la connexion
  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"])
    Copier après la connexion
  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)
    Copier après la connexion

É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/')
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal