fingerprint
fingerprint.js其实是 Electronic Frontier Foundation 研究出来的技术,可以匿名识别 Web 浏览器,准确率高达94%。通过查询浏览器的代理字符串,屏幕色深,语言,插件安装与支持的 MIME 类型,时区偏移量和其他功能,如本地存储和会话存储等等,然后这些值通过散列函数传递产生指纹,不需要通过 Cookie 存储就可以识别浏览器。

<script type="text/javascript" src="${base}/js/fingerprint.js"></script>   
 
//页面访问统计  
var fingerprint = new Fingerprint().get();   

var fingerprint = new Fingerprint().get();
如果你想使用 Canvas FingerPrinting,则如下调用:

var fingerprint = new Fingerprint({canvas: true}).get();
如果你想使用屏幕分辨率计算指纹,则需如下调用:
1
var fingerprint = new Fingerprint({screen_resolution: true}).get();
使用自定义的哈希函数

var my_hasher = new function(value, seed){ return value.length % seed; };
var fingerprint = new Fingerprint({hasher: my_hasher}).get();
或者直接传递方法:

var my_hasher = new function(value, seed){ return value.length % seed; };
var fingerprint = new Fingerprint(my_hasher).get();

总的来说这一个js的反爬技术能够get到部分爬虫学者,对于浏览器的指纹识别,能够很准确的反自动化调试脚本,无头浏览器等目前比较流行的爬虫技术,开源版本的fingerprint.js识别率能够到达60%,而pro版本的更是高达99.5%
除了使用 navigator, 还用到了canvas指纹,字体宽高等其他方面
为了防止这样的技术识别,你需要写大量的js代码来植入自动化浏览器,淘宝更是没落下一个,某多多也一样.堵死了自动化浏览器的道路,而非自动化的request更别想了.随便给个token,sign之类的,就能堵死大部分爬虫,你在mobile的web版本某宝和某多直接搜索fingerprint都能够找到这个关键词,正当你洋洋得意使用selenium爬取某宝的时候,你不要以为它不知道,你只是还没到那个临界点而已.

最后修改:2023 年 01 月 07 日
如果觉得我的文章对你有用,请随意赞赏