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

Comment puis-je empêcher la détection du sélénium en modifiant l'indicateur Navigator.webdriver ?

Mary-Kate Olsen
Libérer: 2024-12-24 06:35:25
original
643 Les gens l'ont consulté

How Can I Prevent Selenium Detection by Modifying the Navigator.webdriver Flag?

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

La détection du sélénium pose un défi important lors de l'automatisation des fonctionnalités banales d'un site Web via Selenium et Chrome. Certains sites Web recherchent activement les navigateurs pilotés par Selenium, empêchant ainsi certaines requêtes. Souvent, ils s'appuient sur des variables DOM exposées, comme navigator.webdriver, pour détecter de tels cas.

Approche de prévention

Pour contrecarrer ce mécanisme de détection, envisagez d'adopter les mesures préventives suivantes :

Ajouter des indicateurs de ligne de commande

Modifiez votre script Selenium pour injecter les arguments spécifiques dans l'instance Chrome. Cela inclut :

  • Désactivation de l'indicateur « AutomationControlled » :

    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument('--disable-blink-features=AutomationControlled')
    driver = webdriver.Chrome(options=options, executable_path=path_to_driver)
    Copier après la connexion
  • Définition d'un agent utilisateur personnalisé :

    driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Your_Custom_User_Agent'})
    Copier après la connexion

Dans le script Modifications

  • Définissez navigator.webdriver sur non défini :

    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
    Copier après la connexion
  • Exclure les commutateurs d'automatisation :

    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    Copier après la connexion
  • Désactiver l'automatisation extension :

    options.add_experimental_option('useAutomationExtension', False)
    Copier après la connexion

Exemple de code

En combinant ces mesures, voici un extrait de code complet :

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=path_to_driver)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Your_Custom_User_Agent'})
print(driver.execute_script("return navigator.userAgent;"))
driver.get('https://www.httpbin.org/headers')
Copier après la connexion

Mises en garde

Soyez prudent car ces modifications peuvent interférer avec la navigation et potentiellement conduire à une détection.

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