爬虫漫游指南:浏览器指纹

爬虫漫游指南

浏览器指纹

最近深入阅读了瑞数的源码,发现瑞数收集了很多浏览器的特征信息,这部分源码对了解浏览器具有很高的学习价值,为此整理了这些特征信息,并尽可能还原了可读可用的代码来获取这些信息。本文测试环境为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
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值