Python编写Akamai sensor data生成器获取Zalando有效_abck cookie实现自动结账
Zalando自动结账sensor_data生成实现思路
sensor_data是Akamai Bot Manager生成的客户端指纹校验数据,校验通过才会下发有效_abck cookie,以下是可行的实现方向:
逆向JS生成方案
- 先抓包定位结账页面加载的Akamai核心JS脚本,搜索包含
sensor_data、_abck关键字的JS文件即可找到核心生成逻辑 - 对JS做混淆还原后,梳理采集字段规则,核心采集项包括:
- 基础浏览器指纹:需和请求头携带的User-Agent、语言、时区完全匹配,包含屏幕分辨率、插件列表、canvas/webgl指纹、是否支持webp等媒体格式、内核版本等信息
- 环境特征校验:要屏蔽所有自动化工具特征,比如将
navigator.webdriver设为false、移除无头浏览器标识、修改webdriver相关的原型链属性、模拟真实的plugins/mimeTypes数据 - 行为模拟数据:模拟鼠标移动、点击、滚动、键盘输入的时序和坐标数据,数据要加入随机噪声,不能出现完全规则的轨迹
- 动态关联参数:需要提取当前页面返回的动态nonce值、之前请求拿到的无效
_abck的指定片段、页面加载时长等和当前会话绑定的参数
- 所有字段按照JS里的拼接、加密规则组装后,就能生成合法的sensor_data
低开发成本替代方案
如果逆向JS的成本过高,可以用浏览器自动化工具截获现成的sensor数据:
- 使用带stealth插件的Playwright/Puppeteer启动真实Chrome内核,正常模拟访问结账页面
- 监听浏览器发出的所有请求,匹配Akamai的sensor提交接口,直接截取请求里的完整sensor_data payload
- 同时提取请求成功后浏览器存储的有效
_abckcookie,导入到你现有的requests会话中继续走后续结账流程
现有代码优化建议
- 删掉手动拼接Cookie头的代码,requests的session会自动按规则携带所有已存储的cookie,手动拼接容易出现字段顺序错误、漏字段的问题,反而会触发拦截
- 当前使用的Chrome94版本UA过于老旧,Akamai对过时浏览器版本的拦截概率更高,建议替换为最新版Chrome的UA参数
- 提交sensor_data的Akamai接口路径是动态变化的,不要写死路径,每次访问页面时要重新提取最新的接口地址
内容的提问来源于stack exchange,提问作者Oscar
相关产品推荐
相关产品推荐

