Un sito Web può rilevare quando si utilizza Selenium con chromedriver?

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

Ho testato Selenium con Chromedriver e ho notato che alcune pagine possono rilevare che stai utilizzando Selenium anche se non c'è alcuna automazione. Anche quando sto solo navigando manualmente usando Chrome tramite Selenium e Xephyr Ricevo spesso una pagina che dice che è stata rilevata un'attività sospetta. Ho controllato il mio user agent e l'impronta digitale del mio browser e sono tutti esattamente identici al normale browser Chrome.

Quando navigo su questi siti in Chrome normale, tutto funziona correttamente, ma nel momento in cui lo utilizzo Il selenio è stato rilevato.

In teoria, Chromedriver e Chrome dovrebbero apparire esattamente uguali a qualsiasi server web, ma in qualche modo possono rilevarlo.

Se vuoi un codice di prova, prova questo:

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=Predefinito") 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 "argomenti completati" driver.get ("http://stubhub.com") 

Se navighi su stubhub verrai reindirizzato e "bloccato" entro una o due richieste. Ho indagato su questo e ho non riesco a capire come possono dire che un utente sta usando Selenium.

Come fanno?

Ho installato il plug-in Selenium IDE in Firefox e sono stato bannato quando ho sono andato su stubhub.com nel normale browser Firefox con solo il plug-in aggiuntivo.

Quando utilizzo Fiddler per visualizzare le richieste HTTP inviate avanti e indietro, ho notato che le richieste del "browser falso" spesso hanno "no-cache" nell'intestazione della risposta.

Risultati come questo È th Un modo per rilevare che sono in una pagina di Selenium Webdriver da JavaScript suggerisce che non dovrebbe esserci alcun modo per rilevare quando si utilizza un webdriver. Ma questa prova suggerisce il contrario.

Il sito carica un'impronta digitale sui propri server, ma ho controllato e l'impronta digitale di Selenium è identica all'impronta digitale quando si utilizza Chrome.

Questa è una delle i payload delle impronte digitali che inviano ai propri server: {"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}," font":{"0":"monospace","1":"DejaVuSerif","2":"Georgia","3":"DejaVuSans","4":" ;TrebuchetMS","5":"Verdana","6":"AndaleMono","7":"DejaVuSansMono","8":"LiberationMono","9":" ;NimbusMonoL","10":"CourierNew","11":"Courier"}}

È identico in Selenium e in Chrome.

VPN funzionano per un uso singolo, ma ottengono rilevato dopo aver caricato la prima pagina. Chiaramente viene eseguito del JavaScript per rilevare il selenio.