Heim >Java >javaLernprogramm >Wie kann ich die Selenium-Erkennung verhindern, indem ich das Flag „navigator.webdriver' ändere?

Wie kann ich die Selenium-Erkennung verhindern, indem ich das Flag „navigator.webdriver' ändere?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-23 19:22:17260Durchsuche

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

Verhindern der Selenium-Erkennung: Ändern des navigator.webdriver-Flags

Beim Versuch, Aufgaben mit Selenium und Chrome zu automatisieren, blockieren bestimmte Websites möglicherweise Anfragen basierend auf der Erkennung eines Selenium -gesteuerter Browser. Eine gängige Erkennungsmethode besteht darin, eine DOM-Variable namens navigator.webdriver verfügbar zu machen, die „true“ zurückgibt, wenn der Browser von Selenium gesteuert wird.

Um diese Erkennung zu umgehen, ziehen Sie die folgenden Ansätze in Betracht:

Automatisierung ausschließen Schalter

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")

Navigator.webdriver ändern

driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

Ändern Benutzeragent

driver.execute_cdp_cmd("Network.setUserAgentOverride", {"userAgent": "new_user_agent"})

Blinkfunktionen deaktivieren

options.add_argument("--disable-blink-features=AutomationControlled")

Umfassendes Codebeispiel

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")

Historische Überlegungen

Die NavigatorAutomationInformation-Schnittstelle enthält den Navigator .webdriver-Flag, das „true“ zurückgibt, wenn der Browser von WebDriver gesteuert wird. Das Ändern dieser Parameter kann jedoch bei unsachgemäßer Verwendung zu Navigationsproblemen oder Erkennungsproblemen führen.

Updates

Neueste Versionen von Selenium bieten zusätzliche Funktionen für die WebDriver-Steuerung, einschließlich des Befehls „execute_cdp_cmd()“ zum Ausführen von DevTools-Befehlen. Die Verwendung dieses Befehls bietet eine bequeme Möglichkeit, das Flag navigator.webdriver zu ändern und die Selenium-Erkennung zu verhindern.

Das obige ist der detaillierte Inhalt vonWie kann ich die Selenium-Erkennung verhindern, indem ich das Flag „navigator.webdriver' ändere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn