浏览器指纹识别
浏览器指纹检测是一种识别和跟踪用户的技术,它通过收集浏览器和设备的信息(如User-Agent、屏幕分辨率、字体等)来生成一个唯一的“指纹”。同时,该技术也可以用来识别浏览器是真人控制还是由自动化工具控制。
例如,使用Selenium控制浏览器时,会在window对象上添加一个名为_selenium的属性。而Puppeteer在自动化Chrome时,会设置window.navigator.webdriver属性为true。通过检查这些属性,网站可以判断用户是否在使用自动化工具。
其次,自动化工具的操作往往非常规则和迅速,与正常用户的行为有明显的区别。例如,人类用户在填写表单时,通常会在每次键入字符后有短暂的停顿,而自动化工具则可能在极短的时间内填写完整个表单。通过分析这些行为,网站可以判断用户是否在使用自动化工具。
总之,网站会采取各种指纹识别技术去甄别用户,一旦发现用户是“机器人”,那么该账号有可能会被封禁,或者IP地址被拉黑等等。
自动化工具如何影响浏览器的指纹
Selenium与Puppeteer是常用的自动化工具。
Selenium支持多种浏览器(Chrome、Firefox、Safari),通过WebDriver与浏览器进行通信,可以通过各种编程语言(如Java、Python、C#等)来控制浏览器。它可以模拟人类用户的各种行为,如点击、滚动、填写表单等。
Puppeteer通过DevTools协议与Chrome或Chromium浏览器进行通信。这种协议允许Puppeteer访问浏览器的许多内部功能,包括网络请求拦截、生成PDF、截屏等。
当使用这些技术操作浏览器的时候,会对浏览器的指纹产生影响:
User-Agent
使用Selenium与Puppeteer,可以设置浏览器的User-Agent,如果您自定义的User-Agent不符合常规或者不合理,可能会被网站认为是机器人。
JavaScript环境
Selenium或Puppeteer在控制浏览器时,会设置window.navigator.webdriver属性为true。这是一种标准的方式,用于让网站知道浏览器正在被自动化工具控制。然而,这也意味着任何可以执行JavaScript的网站都可以检测到这个属性。
特征码
使用Selenium控制浏览器时,会留下很多带有“selenium”的字符特征码,网站只要识别到这些,那么该用户无疑就是被Selenium控制的了:
webdriver
__driver_evaluate
__webdriver_evaluate
__selenium_evaluate
__fxdriver_evaluate
__driver_unwrapped
__webdriver_unwrapped
__selenium_unwrapped
__fxdriver_unwrapped
_Selenium_IDE_Recorder
_selenium
calledSelenium
_WEBDRIVER_ELEM_CACHE
ChromeDriverw
driver-evaluate
webdriver-evaluate
selenium-evaluate
webdriverCommand
webdriver-evaluate-response
__webdriverFunc
__webdriver_script_fn
__$webdriverAsyncExecutor
__lastWatirAlert
__lastWatirConfirm
__lastWatirPrompt
可以绕过自动化检测吗?
其实是可以的,只要您在编写脚本的时候注意去掉带有机器人特征的代码或字符串,在脚本控制浏览器的时候,尽可能的模拟人类的操作,增加延时等等。
在您使用自动化脚本访问目标网站之前,您可以借助BrowserScan的自动化检测工具,检测您的浏览器是否跟真人用户一样。
如果您想了解更多的浏览器指纹知识,可以阅读我们为您准备的指纹系列文章: