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.
Pour contrecarrer ce mécanisme de détection, envisagez d'adopter les mesures préventives suivantes :
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)
Définition d'un agent utilisateur personnalisé :
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Your_Custom_User_Agent'})
Définissez navigator.webdriver sur non défini :
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
Exclure les commutateurs d'automatisation :
options.add_experimental_option("excludeSwitches", ["enable-automation"])
Désactiver l'automatisation extension :
options.add_experimental_option('useAutomationExtension', False)
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')
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!