爬虫漫游指南
浏览器指纹
最近深入阅读了瑞数的源码,发现瑞数收集了很多浏览器的特征信息,这部分源码对了解浏览器具有很高的学习价值,为此整理了这些特征信息,并尽可能还原了可读可用的代码来获取这些信息。本文测试环境为Chrome、Firefox和IE。
基础信息
这里的基础信息,指直接能获取到的浏览器属性,如navigator.userAgent这样最基础的信息。
navigator下的基础信息
- navigator.languages:浏览器的语言环境,一个数组,形如[“zh-CN”];
- navigator.hardwareConcurrency:当前浏览器环境所拥有的CPU核心数,准确的说是线程数,而非核数,比如6核12线程的i5-10500显示的值是12;
- navigator.cpuClass:同样是cpu信息,形如"x86",只在IE中发现了这一属性,Chrome和Firefox中均为undefined;
- navigator.oscpu:操作系统信息,形如"Windows NT 10.0; Win64; x64",只在Firefox中发现了这一属性,Chrome和IE中均为undefined;
- navigator.platform:用户的操作系统信息,比如Mac、Intel、Win32、Linux x86_64等;
- navigator.appName:测试中3个浏览器均为"Netscape";
- navigator.productSub:Chrome浏览器中该值为"20030107",IE无此属性;
- navigator.product:测试中3个浏览器均为"Gecko";
- navigator.webdriver:在早几年的版本中,只有Chrome的无头浏览器puppeteer中有这一属性,当时只要检测
navigator.webdriver == true就可判断为模拟浏览器,正常使用的Chrome中是undefined,在后来的更新中正常启动的Chrome也有了这一属性,值为false; - navigator.getBattery(): 这一方法Chrome支持、IE不支持、Firefox默认禁用,但可以启用,这一方法的检测代码是
"getBattery" in "navigator";
window下的基础信息
前面的部分是开胃小菜,从这里开始要上硬菜了。
_$Rn = [
"AudioTrackList",
"defaultStatus",
"Object.setPrototypeOf",
"taobrowser_Event",
"webkitRequestFileSystem",
"onoperadetachedviewchange",
"Path2D.prototype.addPath",
"SourceBuffer.prototype.changeType",
"weatherBridge",
"chrome.csi",
"password_manager_enabled",
"document.body.x-ms-acceleratorkey",
"external.AddFavorite",
"SogouLoginUtils",
"SourceBuffer",
"showModalDialog",
"document.selection.typeDetail",
"SVGPatternElement.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX",
"document.onselectionchange",
"document.body.style.backgroundBlendMode",
"document.documentElement.onresize



被折叠的 条评论
为什么被折叠?



