某数加密的流程与原理简析

栏目: 编程工具 · 发布时间: 5年前

内容简介:啃了这么长时间,基本上已经把某数的套路摸了个八九不离十,不愧是中国反爬界的集大成者,感觉收获满满,这里就简单记录一下分析成果。注意:某数在不同的网站上有不同的版本,其流程也略有不同,这里的流程不一定适用于其它网站。

啃了这么长时间,基本上已经把某数的套路摸了个八九不离十,不愧是中国反爬界的集大成者,感觉收获满满,这里就简单记录一下分析成果。

注意:某数在不同的网站上有不同的版本,其流程也略有不同,这里的流程不一定适用于其它网站。

工具和资料

前端流程

  1. 请求页面,返回应答;如果有之前生成的有效FSSBBIl1UgzbN7N80T cookie值,请求时须带上。
  2. 应答的html中,包含以下关键数据:

    <meta id="9DhefwqGPrzGxEp9hPaoag">
    <script r="m">
    
  3. 如果应答中包含FSSBBIl1UgzbN7N80T的cookie,保存起来,后面更新此cookie时会用到
  4. 前面的外部js链接,其实内容是静态的,可以预先拿到并保存起来,里面的关键代码是:

    $_ts.FxJzG50F = '......';

    • 这个FxJzG50F的值就是加密后的核心JS代码段,后面称为main.js。
    • 这里比较奇妙的是:虽然加密后的内容是固定的,但是解密出来的JS里面的变量名、方法名、方法顺序却是随机的!
  5. 执行bootstrap.js,包含以下关键步骤:

    1. 把常用值、常用方法赋值给全局变量,以迷惑黑客,比如_$wy = window; _$wG = undefined; _$a1 = String.prototype.charAt
    2. 获取页面中的meta的content,分若干步骤解密之,这会在window中添加一堆全局变量和全局方法,包括所有的常量字符串映射
    3. 获取window.$_ts.FxJzG50F的值,结合meta中的数据,生成核心JS代码即main.js
  6. 执行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的摘要值

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Sovereign Individual

The Sovereign Individual

James Dale Davidson、William Rees-Mogg / Free Press / 1999-08-26 / USD 16.00

Two renowned investment advisors and authors of the bestseller The Great Reckoning bring to light both currents of disaster and the potential for prosperity and renewal in the face of radical changes ......一起来看看 《The Sovereign Individual》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换