全部文章
1 分钟阅读glizzykingdreko

深入剖析 Akamai v3 Sensor Data:加密、解密与绕过工具

理解并绕过 Akamai 的机器人防护,会因为它的复杂度而让人相当头疼。这篇深入剖析会帮你把 v3 的加密与解密流程理清楚,给出一些能让你上手的实用工具,外加一些经验。

深入剖析 Akamai v3 Sensor Data:加密、解密与绕过工具

理解并绕过 Akamai 的机器人防护,会因为它的复杂度而让人相当头疼。这篇深入剖析会帮你把 v3 的加密与解密流程理清楚,给出一些能让你上手的实用工具,外加一些经验。

v3 加密与解密的详细拆解

加密流程

Akamai 的 v3 加密用的是一套精巧的两步算法:

  1. 元素洗牌(Element Shuffling):
  • JSON payload 数据首先被转换成一个用冒号分隔的字符串。
  • 字符串中的各个元素通过一个伪随机数生成器(PRNG)打乱顺序,该生成器用从 Akamai JavaScript 中提取出的唯一文件哈希来初始化。

2. 字符替换(Character Substitution):

  • 洗牌之后,字符串中的每个字符都会被替换成另一个字符。这次替换用的是另一个 PRNG,其种子是一个从 cookie 派生的哈希,通常来自 bm_sz cookie。

解密流程

要逆转这套加密:

  • 逆向字符替换: 用同一个从 cookie 派生的哈希重新初始化 PRNG,然后逆转字符替换。
  • 逆向元素洗牌: 用原始的、从脚本派生的文件哈希,把字符串中的各元素洗回原来的顺序。

加密和解密都同时需要脚本内容和 cookie 哈希,这一点大大提高了绕过 Akamai v3 的复杂度。

Akamai v3 中的哈希

Cookie 哈希

一开始,第一个 sensor_data 请求使用默认的 cookie 哈希 8888888。一旦这个初始请求返回了有效的 bm_sz cookie,之后的 payload 就会使用从返回的 cookie 中提取出的、派生的哈希。这种结合确保每次会话的 sensor payload 都是唯一的,加大了重放攻击的难度。

文件哈希

Akamai 用动态 JavaScript 文件来生成 sensor data。每个脚本文件都包含对函数、数组和哈希运算的复杂动态拼接,用来算出真正的文件哈希。这个文件哈希随后被用作元素洗牌阶段的种子。关于详细的提取逻辑,你可以在我的 npm GitHub 仓库 里研究基于 AST 的实现,如果你希望我对它做一次深入讲解,告诉我一声。
所以说,要解密 sensor_data,就必须要有它的脚本源代码。

从 v2 到 v3 的重大变化

Akamai sensor data 从 v2 到 v3 的重要升级和改动包括:

  • Cookie 集成: v3 明确使用 cookie 数据参与加密,增强了每个 payload 的安全性和唯一性。
  • 依赖脚本的哈希: 与 v2 不同,v3 加密严重依赖实时的 JavaScript 文件哈希,让静态逆向的工作变得更加困难。
  • 复杂度与安全性: 整体加密复杂度大幅提升,对自动化攻击提供了更强的防护。

作为历史参考和对比,可以看 v2 仓库

Akamai v3 Helper 模块的实际用法

我开源的 Akamai v3 helper(GitHub)简化了对 sensor data 加解密的处理:

安装

npm install akamai-v3-sensor-data-helper

解密示例

const akamaiHelper = require('akamai-v3-sensor-data-helper');
const fs = require('fs');

const scriptContent = fs.readFileSync('akamai_script.js', 'utf-8');
const encryptedSensorData = '{"sensor_data":"3;0;1;0;3753014;..."}';
const decryptedData = akamaiHelper.decrypt(encryptedSensorData, scriptContent);
if (decryptedData.success) {
    console.log(decryptedData.parsedData);
} else {
    console.error("Decryption failed:", decryptedData.message);
}

Web 应用:可视化 Akamai Sensor Data

我开发了 Akamai Tools Web App,一个直观的界面,用来简化 sensor data 的处理:

  • Decrypt Payload 工具: 快速把加密的 sensor_data 转换成可读的 JSON。

  • Encrypt Payload 工具: 轻松从结构化的 JSON 输入生成有效的 sensor_data。

  • Cookie Hash Extractor: 快速从 bm_sz cookie 中提取哈希,用于加密流程。

需要反机器人方面的帮助?

看看我的反机器人绕过 API 公司 TakionAPI。我们为大多数反机器人/验证码提供 API,也为特定项目提供定制化的网页抓取方案。

关注与联系我

喜欢这篇文章吗?欢迎通过 BuyMeACoffee 支持我。

anti-botakamaiabckencryptionsensordata

跳过逆向工程。

Takion 为每一道主流反机器人防护墙返回新鲜的 cookie、请求头和令牌。一次 POST,无需浏览器,一小时内完成首次调用。