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
Freigeben: 2024-12-23 19:22:17
Original
283 Leute haben es durchsucht

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")
Nach dem Login kopieren

Navigator.webdriver ändern

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

Ändern Benutzeragent

driver.execute_cdp_cmd("Network.setUserAgentOverride", {"userAgent": "new_user_agent"})
Nach dem Login kopieren

Blinkfunktionen deaktivieren

options.add_argument("--disable-blink-features=AutomationControlled")
Nach dem Login kopieren

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")
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage