媒介
啃了这么长时间,基本上已把某数的套路摸了个八九不离十,不愧是中国反爬界的集大成者,觉得收成满满,这里就简朴纪录一下剖析效果。
注重:某数在差别的网站上有差别的版本,其流程也略有差别,这里的流程不一定适用于别的网站。
东西和材料
- QQ群 – Javascript高等爬虫 – 作者自建群,迎接到场!
- 中国商标网加密接口 – 仅作演示
- 之前的文章1 – 纪录了之前尝试的别的要领
- 之前的文章2 – 对加密殽杂后的js的一些开端剖析
- awesome-java-crawler – 我收集的爬虫相干东西和材料
- java-curl – 我编写的java HTTP库
- 另一个用了某数加密的网站的破解SDK
前端流程
- 要求页面,返回应对;假如有之前天生的有用FSSBBIl1UgzbN7N80T cookie值,要求时须带上。
应对的html中,包含以下症结数据:
-
<meta id="9DhefwqGPrzGxEp9hPaoag">
元素的content,这是加密后的数据,内里包含字符串映照表、全局要领映照表、加解密算法密钥等;注重有些网站的meta.id差别 -
<script r="m">
的元素,其中有一个是外部js链接,另一个则包含指导JS代码段,背面称为bootstrap.js。这段代码是动态天生的,每次要求均不雷同。
-
- 假如应对中包含FSSBBIl1UgzbN7N80T的cookie,保存起来,背面更新此cookie时会用到
前面的外部js链接,实在内容是静态的,能够预先拿到并保存起来,内里的症结代码是:
$_ts.FxJzG50F = '......';
- 这个FxJzG50F的值就是加密后的中心JS代码段,背面称为main.js。
- 这里比较巧妙的是:虽然加密后的内容是牢固的,然则解密出来的JS内里的变量名、要领名、要领递次倒是随机的!
实行bootstrap.js,包含以下症结步骤:
- 把经常运用值、经常运用要领赋值给全局变量,以疑惑黑客,比方_$wy = window; _$wG = undefined; _$a1 = String.prototype.charAt
- 猎取页面中的meta的content,分多少步骤解密之,这会在window中增加一堆全局变量和全局要领,包含一切的常量字符串映照
- 猎取window.$_ts.FxJzG50F的值,连系meta中的数据,天生中心JS代码即main.js
实行main.js,这里的步骤就太多了,排列一些症结的吧:
- 继承从meta中解密一部分症结数据
- 在以下事宜上挂钩子,以纪录用户行动:
鼠标事宜,触屏事宜,键盘事宜,输入事宜,滚屏事宜,加速器事宜,屏幕方向转变事宜,电池充电事宜,窗口隐蔽/显现事宜 - 别的,按键、点击、滚屏等事宜的钩子函数同时也会更新FSSBBIl1UgzbN7N80T的cookie值
- 在以下收集要求相干对象或要领上挂钩子,令其在提议要求时背面自动增加MmEwMD参数:
ActiveXObject, XMLHttpRequest, Request, fetch, HTMLFormElement.submit - 症结要领检测,测试eval等几个要领是不是被替换成非native版本
- 增加一个频仍实行的定时器,其作用是检测debugger语句是不是见效,假如见效申明有黑客在调试
- 搜检selenium, webdriver, PhantomJS, HeadlessChrome等自动化框架的特性
- 搜检浏览器范例,收集浏览器特性,收集衬着器特性
- 实行WebGL 3D衬着测试,实行Canvas 2D衬着测试,现在看其测试效果并未实际运用,但不消除别的网站会运用此数据标识浏览器指纹
- 增加一个50秒的定时器,其作用为更新FSSBBIl1UgzbN7N80T的cookie值
- 对FSSBBIl1UgzbN7N80T cookie值举行初次更新
FSSBBIl1UgzbN7N80T cookie值的内容
- 这是全部某数加密的中心了,每次要求,不管GET, POST,是不是XHR,都邑带着这个cookie
- 此cookie的值是许多数据加密后的内容,这里就不细致说了,至少是包含前面收集到的浏览器特性和用户行动数据的,简朴的捏造User-Agent肯定是绕不过去的
- 更新前会考证和重用之前的FSSBBIl1UgzbN7N80T值
依据其内容可知,某数的后端是能够晓得要求泉源于何种浏览器,用户点击链接前有何行动等,如许他们能够做到:
- 考证是不是大批要求泉源于雷同特性的浏览器
- 有挑选的禁用某些浏览器
- 给用户行动存疑的泉源下毒
MmEwMD参数的内容
- 这个参数只会在XHR, 表单提交等场所用到,觉得和FSSBBIl1UgzbN7N80T的作用有反复,不确定某数的后端是不是真的会严厉考证其内容
- 其内容的主体部分和FSSBBIl1UgzbN7N80T一致,别的会在前面连接上URL的择要值