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

《某数加密的流程与道理简析》

媒介

啃了这么长时间,基本上已把某数的套路摸了个八九不离十,不愧是中国反爬界的集大成者,觉得收成满满,这里就简朴纪录一下剖析效果。
注重:某数在差别的网站上有差别的版本,其流程也略有差别,这里的流程不一定适用于别的网站。

东西和材料

前端流程

  1. 要求页面,返回应对;假如有之前天生的有用FSSBBIl1UgzbN7N80T cookie值,要求时须带上。
  2. 应对的html中,包含以下症结数据:

    • <meta id="9DhefwqGPrzGxEp9hPaoag">元素的content,这是加密后的数据,内里包含字符串映照表、全局要领映照表、加解密算法密钥等;注重有些网站的meta.id差别
    • <script r="m">的元素,其中有一个是外部js链接,另一个则包含指导JS代码段,背面称为bootstrap.js。这段代码是动态天生的,每次要求均不雷同。
  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的择要值
    原文作者:rockswang
    原文地址: https://segmentfault.com/a/1190000018311861
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞