Я тестировал Selenium с Chromedriver, и я заметил, что некоторые страницы могут обнаружить, что вы используете Selenium, хотя автоматики вообще нет. Даже когда я просто просматриваю вручную, просто используя хром через Selenium и Xephyr, я часто получаю страницу с сообщением о подозрительной активности. Я проверил свой пользовательский агент и отпечаток пальца моего браузера, и все они точно совпадают с обычным браузером Chrome.
Когда я просматриваю эти сайты в обычном хроме, все работает нормально, но в тот момент, когда я использую Selenium, я обнаружил.
В теории хромированная решетка и хром должны выглядеть буквально точно так же, как на любом веб-сервере, но каким-то образом они могут ее обнаружить.
Если вы хотите, чтобы какой-либо тестовый код попробовал это:
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')
Если вы просматриваете stubhub, вы будете перенаправлены и заблокированы в течение одного или двух запросов. Я изучал это, и я не могу понять, как они могут сказать, что пользователь использует Selenium.
Как они это делают?
ИЗМЕНИТЬ ОБНОВЛЕНИЕ:
Я установил плагин Selenium IDE в Firefox, и мне запретили, когда я пошел на stubhub.com в обычном браузере Firefox с помощью только дополнительного плагина.
EDIT:
Когда я использую Fiddler для просмотра HTTP-запросов, отправляемых туда и обратно, я заметил, что запросы "поддельного браузера" часто имеют "no-cache" в заголовке ответа.
EDIT:
Результат выглядит следующим образом Есть ли способ обнаружить, что я на странице Selenium Webdriver из Javascript, говорит о том, что не должно быть способа обнаружить, когда вы используете webdriver. Но это свидетельствует о другом.
EDIT:
Сайт загружает отпечатки пальцев на свои серверы, но я проверил, и отпечаток пальца селена идентичен отпечатку пальца при использовании хрома.
EDIT:
Это одна из полезных данных отпечатка пальца, которые они отправляют на свои серверы.
{"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"}}
Его идентичность в селене и в хроме
EDIT:
VPN работают для одного использования, но обнаруживаются после загрузки первой страницы. Очевидно, что некоторые javascript запускаются для обнаружения Selenium.