Testowałem Selenium za pomocą Chromedrivera i zauważyłem, że niektóre strony mogą wykryć, że używasz Selenium, mimo że w ogóle nie ma automatyzacji. Nawet gdy przeglądam ręcznie, używając Chrome za pośrednictwem Selenium i Xephyr, często pojawia się strona z informacją o wykryciu podejrzanej aktywności. Sprawdziłem agenta użytkownika i odcisk palca przeglądarki i wszystkie są dokładnie identyczne jak normalna przeglądarka chrome.
Kiedy przeglądam te strony w normalnym chrome, wszystko działa dobrze, ale w momencie, gdy używam Selenium, jestem wykrywany.
Teoretycznie chromedriver i chrome powinny wyglądać dosłownie tak samo na każdym serwerze internetowym, ale w jakiś sposób mogą je wykryć.
Jeśli chcesz trochę kodu testowego, wypróbuj to:
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')
Jeśli przeglądasz stubhub, zostaniesz przekierowany i „zablokowany” w ramach jednego lub dwóch żądań. Badałem to i nie mogę dowiedzieć się, w jaki sposób można stwierdzić, że użytkownik używa Selenium.
Jak oni to robią?
EDYCJA AKTUALIZACJI:
Zainstalowałem wtyczkę Selenium IDE w Firefoksie i zostałem zbanowany, gdy poszedłem na stubhub.com w normalnej przeglądarce Firefox z tylko dodatkową wtyczką.
EDYTOWAĆ:
Kiedy używam Fiddlera do przeglądania żądań HTTP przesyłanych tam iz powrotem, zauważyłem, że żądania „fałszywych przeglądarek” często zawierają „brak pamięci podręcznej” w nagłówku odpowiedzi.
EDYTOWAĆ:
wyniki takie jak to Czy istnieje sposób na wykrycie, że jestem na stronie Selenium Webdriver ze strony Javascript sugeruje, że nie powinno być sposobu na wykrycie, kiedy używasz webdriver. Ale te dowody sugerują inaczej.
EDYTOWAĆ:
Witryna przesyła odcisk palca na swoje serwery, ale sprawdziłem, a odcisk palca selenu jest identyczny jak odcisk palca przy użyciu chrome.
EDYTOWAĆ:
Jest to jeden z ładunków odcisków palców wysyłanych na ich serwery
{"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"}}
Jest identyczny w selenie i chromie
EDYTOWAĆ:
Sieci VPN działają do jednorazowego użytku, ale są wykrywane po załadowaniu pierwszej strony. Najwyraźniej jakiś skrypt JavaScript jest uruchamiany w celu wykrycia Selenium.
distill
technologii wykrywania botów i dostarcza zawartość za pomocą akamaitechnologies.com
CDN od rozróżnianie ips np 95.100.59.245
, 104.70.243.66
,23.202.161.241