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

栏目: 编程工具 · 发布时间: 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的摘要值

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

查看所有标签

猜你喜欢:

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

PHP基础教程

PHP基础教程

厄尔曼 / 贾菡、刘彦博 / 人民邮电出版社 / 2010-1 / 49.00元

《PHP基础教程(第3版)》非常通俗易懂地向初学者介绍了PHP语言的基本概念、使用方法和注意事项。全书通过丰富的示例,引领读者逐步掌握这门流行的Web开发语言,使读者能够上手亲自编写适用于常用场景的PHP脚本。《PHP基础教程(第3版)》适合有基本的HTML经验的读者阅读。 点击链接进入新版: Web开发系列:PHP基础教程(第4版)一起来看看 《PHP基础教程》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试