Kann eine Website erkennen, wenn Sie Selenium mit Chromedriver verwenden?

| | | | | | | | | | | | | | | | | | | | | | | | | |

Ich habe Selenium mit Chromedriver getestet und festgestellt, dass einige Seiten erkennen können, dass Sie Selenium verwenden, obwohl überhaupt keine Automatisierung vorhanden ist. Selbst wenn ich nur manuell surfe, indem ich Chrome über Selenium verwende und Xephyr Ich bekomme oft eine Seite, die besagt, dass verdächtige Aktivitäten entdeckt wurden. Ich habe meinen Benutzeragenten und meinen Browser-Fingerabdruck überprüft, und sie sind alle genau identisch mit dem normalen Chrome-Browser.

Wenn ich diese Seiten im normalen Chrome durchsuche, funktioniert alles einwandfrei, aber im Moment verwende ich Selenium wird erkannt.

Theoretisch sollten Chromedriver und Chrome für jeden Webserver buchstäblich genau gleich aussehen, aber irgendwie können sie es erkennen.

Wenn Sie etwas Testcode ausprobieren möchten this:

from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=1, size=(1600, 902)) display.start() chrome_options = webdriver.ChromeOptions() chrome_options. add_argument("--disable-extensions") chrome_options.add_argument("--profile-directory=Default") chrome_options.add_argument("--incognito") chrome_options.add_argument("--disable-plugins-discovery") ; chrome_options.add_argument("--start-maximized") driver = webdriver.Chrome(chrome_options=chrome_options) driver.delete_all_cookies() driver.set_window_size(800,800) driver.set_window_position(0,0) print "arguments done" driver.get ("http://stubhub.com") 

Wenn Sie sich auf Stubhub umsehen, werden Sie innerhalb von ein oder zwei Anfragen umgeleitet und "blockiert". Ich habe dies untersucht und ich können nicht herausfinden, wie sie feststellen können, dass ein Benutzer Selenium verwendet.

Wie machen sie das?

Ich habe das Selenium-IDE-Plugin in Firefox installiert und wurde gesperrt, als ich ging zu stubhub.com im normalen Firefox-Browser mit nur dem zusätzlichen Plugin.

Wenn ich Fiddler verwende, um die HTTP-Anforderungen anzuzeigen, die hin und her gesendet werden, habe ich bemerkt, dass die Anforderungen des "gefälschten Browsers" sind haben oft "no-cache" im Antwortheader.

Ergebnisse wie dieses Ist th Es gibt keine Möglichkeit, über JavaScript zu erkennen, dass ich mich auf einer Selenium-Webdriver-Seite befinde. schlägt vor, dass es keine Möglichkeit geben sollte, zu erkennen, wenn Sie einen Webdriver verwenden. Aber diese Beweise deuten auf etwas anderes hin.

Die Website lädt einen Fingerabdruck auf ihre Server hoch, aber ich habe es überprüft und der Fingerabdruck von Selenium ist identisch mit dem Fingerabdruck bei Verwendung von Chrome.

Dies ist einer von die Fingerabdruck-Payloads, die sie an ihre Server senden: {"appName":"Netscape","platform":"Linuxx86_64","cookies":1,"syslang":"en-US", "userlang":"en-US","cpu":"","productSub":"20030107","setTimeout":1,"setInterval":1,"plugins" :{"0":"ChromePDFViewer","1":"ShockwaveFlash","2":"WidevineContentDecryptionModule","3":"NativeClient","4":"ChromePDFViewer" ;},"mimeTypes":{"0":"application/pdf","1":"ShockwaveFlashapplication/x-shockwave-flash","2":"FutureSplashPlayerap plication/futuresplash","3":"WidevineContentDecryptionModuleapplication/x-ppapi-widevine-cdm","4":"NativeClientExecutableapplication/x-nacl","5":"PortableNativeClientExecutableapplication/x-pnacl" ,"6":"PortableDocumentFormatapplication/x-google-chrome-pdf"},"screen":{"width":1600,"height":900,"colorDepth":24}," Schriftarten":{"0":"monospace","1":"DejaVuSerif","2":"Georgia","3":"DejaVuSans","4":" ;TrebuchetMS“, „5“: „Verdana“, „6“: „AndaleMono“, „7“: „DejaVuSansMono“, „8“: „LiberationMono“, „9“:“ ;NimbusMonoL","10":"CourierNew","11":"Courier"}}

In Selenium und Chrome ist es identisch.

VPNs Arbeit für den einmaligen Gebrauch, aber sie bekommen erkannt, nachdem ich die erste Seite geladen habe. Offensichtlich wird JavaScript ausgeführt, um Selenium zu erkennen.