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

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

Mary-Kate Olsen
Libérer: 2024-12-23 19:22:17
original
260 Les gens l'ont consulté

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

Prévention de la détection du sélénium : modification de l'indicateur navigator.webdriver

Lors de la tentative d'automatisation des tâches à l'aide de Selenium et de Chrome, certains sites Web peuvent bloquer les requêtes en fonction de la détection d'un sélénium -navigateur piloté. Une méthode de détection courante consiste à exposer une variable DOM appelée navigator.webdriver, qui renvoie vrai si le navigateur est contrôlé par Selenium.

Pour contourner cette détection, envisagez les approches suivantes :

À l'exclusion de l'automatisation Commutateurs

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
driver = webdriver.Chrome(options=options, executable_path=r"path/to/chromedriver.exe")
Copier après la connexion

Modification navigator.webdriver

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

Modification de l'agent utilisateur

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

Désactivation des fonctionnalités de clignotement

options.add_argument("--disable-blink-features=AutomationControlled")
Copier après la connexion

Exemple 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=r"path/to/chromedriver.exe")
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd("Network.setUserAgentOverride", {"userAgent": "new_user_agent"})
driver.get("https://www.example.com")
Copier après la connexion

Historique Considérations

L'interface NavigatorAutomationInformation comprend le Indicateur navigator.webdriver, qui renvoie vrai lorsque le navigateur est contrôlé par WebDriver. Cependant, la modification de ces paramètres peut entraîner des problèmes de navigation ou de détection en cas d'utilisation incorrecte.

Mises à jour

Les versions récentes de Selenium offrent des fonctionnalités supplémentaires pour le contrôle WebDriver, notamment la commande execute_cdp_cmd() pour exécuter les commandes DevTools. L'utilisation de cette commande constitue un moyen pratique de modifier l'indicateur navigator.webdriver et d'empêcher la détection de Selenium.

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