网站可以检测到您何时将硒与chromedriver一起使用吗?
我一直在用Chromedriver测试Selenium,我注意到有些页面可以检测到你正在使用Selenium,即使根本没有自动化。即使我只是手动浏览,只是使用Chrome通过Selenium和Xephyr,我也经常得到一个页面,说检测到可疑活动。我已经检查了我的用户代理和浏览器指纹,它们都与普通的Chrome浏览器完全相同。
当我在正常的Chrome中浏览这些网站时,一切都很好,但是当我使用Selenium的那一刻,我被检测到了。
从理论上讲,chromedriver和Chrome在任何Web服务器上看起来应该完全相同,但不知何故,它们可以检测到它。
如果你想要一些测试代码,试试这个:
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周围浏览,你会在一两个请求中被重定向和“阻止”。我一直在调查这个问题,我不知道他们怎么能分辨出用户正在使用硒。
他们是怎么做到的?
我在Firefox中安装了Selenium IDE插件,当我在正常的Firefox浏览器中 stubhub.com 时,我被禁止了,只有额外的插件。
当我使用Fiddler查看来回发送的HTTP请求时,我注意到“假浏览器”请求通常在响应标头中具有“无缓存”。
像这样的结果 有没有办法检测到我在JavaScript的Selenium Webdriver页面中,这表明当你使用Webdriver时,应该没有办法检测到。但这一证据表明情况并非如此。
该网站将指纹上传到他们的服务器,但我检查了一下,Selenium的指纹与使用Chrome时的指纹相同。
这是他们发送到服务器的指纹有效负载之一:
{"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":"WidevineContentDecryptionMo
dule","3":"NativeClient","4":"ChromePDFViewer"},"mimeTypes":
{"0":"application/pdf","1":"ShockwaveFlashapplication/x-shockwave-
flash","2":"FutureSplashPlayerapplication/futuresplash","3":"WidevineContent
DecryptionModuleapplication/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":"Trebu
chetMS","5":"Verdana","6":"AndaleMono","7":"DejaVuSansMono","8":"LiberationM
ono","9":"NimbusMonoL","10":"CourierNew","11":"Courier"}}
它在硒和铬中是相同的。
VPN适用于单次使用,但在我加载第一页后会检测到它们。显然,一些JavaScript正在运行以检测Selenium。