从韩亚航空到Nike官网:手把手教你分析Akamai Bot Manager的sensor_data生成逻辑
2026/5/7 13:39:54 网站建设 项目流程

深入解析Akamai Bot Manager的sensor_data生成机制与逆向实战

在当今的互联网环境中,反爬虫技术已经成为保护网站数据安全的重要手段。作为全球领先的内容分发网络和安全服务提供商,Akamai的Bot Manager解决方案被广泛应用于各大知名网站,如韩亚航空、Nike官网等。本文将深入探讨Akamai Bot Manager的核心防护机制,特别是其sensor_data参数的生成逻辑,为从事数据采集和安全研究的工程师提供一套完整的分析方法论。

1. Akamai Bot Manager防护机制概述

Akamai Bot Manager采用多层次的防护策略来识别和阻止自动化流量。其核心防护机制主要包括以下几个部分:

  • Cookie验证:通过_abckak_bmsc等cookie参数进行会话跟踪和设备指纹识别
  • 行为分析:监控用户交互模式,如鼠标移动、点击频率和键盘输入等
  • 环境检测:收集浏览器特征、设备信息和网络环境等数据
  • 挑战响应:动态生成JavaScript挑战代码,验证客户端执行能力

其中,sensor_data参数是Akamai Bot Manager最新版本中引入的关键防护元素。它包含了大量客户端环境信息和用户行为数据,经过复杂算法加密后发送到服务器端进行验证。

// 典型的sensor_data参数示例 1.41-1,2,-94,-100,ua_string-1,2,-94,-101,do_en,dm_en,t_en-1,2,-94,-105,...

2. sensor_data参数的结构解析

通过对多个受保护网站的分析,我们发现sensor_data参数具有以下结构特征:

2.1 基本组成

sensor_data通常由以下部分组成:

  1. 版本标识:如"1.41",表示Bot Manager的版本号
  2. 数据区块:多个以"-1,2,-94,-XXX"开头的数据段,每个区块包含特定类型的信息
  3. 分隔符:使用逗号分隔不同字段,分号分隔不同事件记录

2.2 关键数据区块

区块代码对应信息类型内容示例
-100用户代理和环境信息浏览器UA、屏幕分辨率等
-101功能启用状态do_en,dm_en,t_en
-105表单信息页面表单字段的哈希值
-108键盘活动按键类型、时间戳等
-110鼠标活动移动轨迹、点击位置等
-119性能指标各种操作的执行时间

3. 逆向分析实战方法论

要深入理解sensor_data的生成逻辑,我们需要采用系统化的分析方法。以下是经过验证的有效方法论:

3.1 初始请求分析

  1. 清除Cookies:从干净会话开始观察初始请求

    # 使用curl模拟初始请求 curl -v "https://www.target-site.com" --cookie-jar /dev/null
  2. 识别关键请求:查找包含sensor_data_abck的请求

  3. 参数追踪:记录所有相关参数的变化规律

3.2 关键函数定位

通过浏览器开发者工具进行堆栈追踪,重点关注以下函数:

  • bmak.gd():生成设备指纹和环境信息
  • bmak.bpd():构建和提交sensor_data
  • bmak.ir():初始化跟踪参数
  • bmak.cma()/bmak.cka():处理鼠标和键盘事件
// 典型的函数调用栈示例 bpd() @ bmak.js:1200 gd() @ bmak.js:800 ir() @ bmak.js:500 init() @ bmak.js:300

3.3 动态行为监控

安装以下浏览器插件辅助分析:

  1. EditThisCookie:实时监控cookie变化
  2. Requestly:拦截和修改请求/响应
  3. Tampermonkey:注入调试脚本

4. 核心算法解析

通过对多个网站的分析,我们总结出sensor_data生成的几个关键算法:

4.1 设备指纹生成

bmak.gd()函数负责收集和生成设备指纹信息:

function gd() { var a = uar(); // 获取用户代理字符串 var t = '' + ab(a); // 计算UA的校验和 var e = start_ts / 2; // 收集屏幕信息 var n = window.screen ? window.screen.availWidth : -1; var o = window.screen ? window.screen.availHeight : -1; // 构建指纹字符串 return a + ',uaend,' + xagg + "," + psub + "," + lang + "," + prod + "," + plen + "..."; }

4.2 行为数据收集

Akamai会监控多种用户行为事件:

  1. 鼠标移动:通过mousemove事件收集坐标和轨迹
  2. 点击事件:记录点击位置、目标和时间间隔
  3. 键盘输入:监控keydownkeypresskeyup事件
  4. 触摸事件:针对移动设备的触摸交互
// 鼠标事件处理示例 function cma(a, t) { try { var e = a || window.event; var n = -1, o = -1; // 获取坐标位置 if (e && e.pageX && e.pageY) { n = Math.floor(e.pageX); o = Math.floor(e.pageY); } // 构建行为记录 var i = get_cf_date() - start_ts; var c = me_cnt + "," + t + "," + i + "," + n + "," + o; // 更新行为数据 mact = mact + c + ';'; me_vel = me_vel + me_cnt + t + i + n + o; ta += i; } catch (a) {} }

4.3 加密与编码

收集的原始数据会经过多层处理和编码:

  1. 校验和计算:对关键字符串进行简单校验

    function ab(a) { if (null == a) return -1; var t = 0; for (var e = 0; e < a.length; e++) { var n = a.charCodeAt(e); n < 128 && (t += n); } return t; }
  2. 数据混淆:使用固定算法对数据进行变换

    function od(a, t) { try { a = String(a), t = String(t); var e = [], n = t.length; if (n > 0) { for (var o = 0; o < a.length; o++) { var m = a.charCodeAt(o); var r = a.charAt(o); var i = t.charCodeAt(o % n); m = rir(m, 47, 57, i); m != a.charCodeAt(o) && (r = String.fromCharCode(m)); e.push(r); } return e.join(''); } } catch (a) {} return a; }
  3. 最终组装:将所有数据块按特定格式拼接

5. 对抗策略与注意事项

在分析Akamai防护时,需要注意以下关键点:

5.1 常见检测特征

  1. WebDriver特征:如$cdc_asdjflasutopfhvcZLmcfl_等标记
  2. 头信息验证:检查User-AgentAccept-Language等的一致性
  3. 时间戳异常:操作间隔不符合人类行为模式
  4. 环境完整性:验证浏览器API是否被修改或缺失

5.2 调试技巧

  1. 断点设置:在关键函数入口设置断点

    // 在控制台重写关键函数进行调试 var old_gd = bmak.gd; bmak.gd = function() { console.log('gd() called'); return old_gd.apply(this, arguments); };
  2. 日志注入:修改代码增加调试输出

    // 在bpd函数开始处注入日志 bmak.bpd = function() { console.log('bpd() started', arguments); // 原始函数逻辑... }
  3. 请求重放:使用工具模拟合法sensor_data

5.3 法律与道德考量

在进行任何逆向分析前,必须考虑:

  1. 服务条款:严格遵守目标网站的使用条款
  2. 数据隐私:不获取或存储任何用户隐私数据
  3. 访问频率:控制请求速率,避免对服务造成影响
  4. 合法用途:仅用于安全研究和授权测试

6. 实战案例分析

我们以韩亚航空网站为例,演示完整的分析流程:

6.1 初始请求观察

  1. 首次访问会收到包含Bot Manager JavaScript的响应
  2. 客户端执行后发送包含sensor_data的验证请求
  3. 服务器返回设置_abckcookie的指令

6.2 关键函数调用链

  1. bmak.init():初始化运行环境
  2. bmak.ir():重置计数器
  3. bmak.startTracking():开始监控用户行为
  4. bmak.bpd():生成并提交行为数据

6.3 参数关联分析

通过对比多个会话,发现以下关联关系:

  • _abckcookie值与sensor_data中的校验和相关
  • 鼠标移动轨迹影响me_vel参数
  • 键盘活动记录在kact变量中

7. 自动化检测的应对策略

Akamai会通过多种方式检测自动化工具:

  1. 行为模式分析:检测鼠标移动的曲线和速度变化
  2. 事件触发顺序:验证事件触发的合理性和时间间隔
  3. 内存状态检查:检测浏览器环境的异常修改
  4. 挑战响应测试:动态注入JavaScript代码验证执行能力

在实际项目中,我们发现最有效的策略是真实浏览器环境结合人性化操作模拟,而不是简单的参数复制。

8. 总结与最佳实践

通过对Akamai Bot Manager的深入分析,我们总结出以下最佳实践:

  1. 环境真实性:使用完整浏览器环境而非简单HTTP客户端
  2. 行为模拟:实现符合人类行为模式的交互脚本
  3. 参数动态生成:实时计算而非固定值重用
  4. 错误处理:完善的重试和验证机制
  5. 持续更新:定期跟踪防护策略的变化

需要强调的是,本文的技术分析仅用于安全研究和防御目的。在实际应用中,应当始终遵守相关法律法规和网站的使用条款。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询