Die Selenium-Erkennung stellt eine erhebliche Herausforderung bei der Automatisierung alltäglicher Website-Funktionen durch Selenium und Chrome dar. Einige Websites suchen aktiv nach Selenium-gesteuerten Browsern und verhindern so bestimmte Anfragen. Oft stützen sie sich auf exponierte DOM-Variablen wie navigator.webdriver, um solche Vorfälle zu erkennen.
Um diesen Erkennungsmechanismus zu vereiteln, sollten Sie die folgenden vorbeugenden Maßnahmen in Betracht ziehen:
Ändern Sie Ihr Selenium-Skript, um die spezifischen Argumente in die Chrome-Instanz einzufügen. Dazu gehört:
Deaktivieren des „AutomationControlled“-Flags:
from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('--disable-blink-features=AutomationControlled') driver = webdriver.Chrome(options=options, executable_path=path_to_driver)
Einstellen eines benutzerdefinierten Benutzeragenten:
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Your_Custom_User_Agent'})
navigator.webdriver auf undefiniert setzen:
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
Automatisierungsschalter ausschließen:
options.add_experimental_option("excludeSwitches", ["enable-automation"])
Automatisierung deaktivieren Erweiterung:
options.add_experimental_option('useAutomationExtension', False)
In Kombination dieser Maßnahmen finden Sie hier einen umfassenden Codeausschnitt:
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')
Seien Sie vorsichtig, da diese Änderungen die Navigation beeinträchtigen und möglicherweise zur Erkennung führen können.
Das obige ist der detaillierte Inhalt vonWie kann ich die Selenerkennung verhindern, indem ich das Navigator.webdriver-Flag ändere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!