Ho testato Selenium con Chromedriver e ho notato che alcune pagine sono in grado di 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 agente utente e la mia impronta digitale del browser e sono tutti esattamente identici al normale browser Chrome.
Quando navigo su questi siti in Chrome normale, tutto funziona bene, ma nel momento in cui utilizzo il selenio mi viene rilevato.
In teoria, chromedriver e Chrome dovrebbero apparire esattamente identici per qualsiasi server web, ma in qualche modo possono rilevarlo.
Se vuoi un testcode 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=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')
Se navighi in stubhub verrai reindirizzato e "bloccato" all'interno di una o due richieste. Ho studiato questo e non riesco a capire come possano dire che un utente sta usando il selenio.
Come lo fanno?
MODIFICA AGGIORNAMENTO:
Ho installato il plug-in IDE di Selenium in Firefox e sono stato bannato quando sono andato su stubhub.com nel normale browser Firefox con solo il plug-in aggiuntivo.
MODIFICARE:
Quando uso Fiddler per visualizzare le richieste HTTP inviate avanti e indietro, ho notato che le richieste di "browser falsi" spesso hanno "no-cache" nell'intestazione della risposta.
MODIFICARE:
risultati come questo Esiste un modo per rilevare che mi trovo in una pagina Selenium Webdriver da Javascript suggerisce che non dovrebbe esserci alcun modo per rilevare quando si utilizza un webdriver. Ma questa prova suggerisce il contrario.
MODIFICARE:
Il sito carica un'impronta digitale sui loro server, ma ho controllato e l'impronta digitale del selenio è identica all'impronta digitale quando si utilizza Chrome.
MODIFICARE:
Questo è uno dei payload delle impronte digitali che inviano ai loro 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":"FutureSplashPlayerapplication/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},"fonts":{"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 selenio e in cromo
MODIFICARE:
Le VPN funzionano per un singolo utilizzo ma vengono rilevate dopo aver caricato la prima pagina. Chiaramente alcuni javascript sono in esecuzione per rilevare il selenio.
distill
tecnologia di rilevamento dei bot e fornisce contenuti utilizzando akamaitechnologies.com
CDN da differenti ips 95.100.59.245
, ad esempio 104.70.243.66
,23.202.161.241