写点什么

【2025 实战】淘宝天猫商品数据接口逆向分析手记:新手也能看懂的技术拆解

作者:代码忍者
  • 2025-04-10
    江西
  • 本文字数:1190 字

    阅读完需:约 4 分钟

  • ​item_get 获得淘宝商品详情

  • item_get_pro 获得淘宝商品详情高级版

  • item_review 获取商品评论数据

进入API测试

商品评论数据

打开淘宝网任意页面(我这里用的是搜索),按 F12 打开开发者工具,找到数据流对应的接口 uri

点击打开,可以看到数据。那么就研究这个接口。

查看负载,可以看到有 sign 和其他几个值。比较明显 sign 应该是一个加密值。其他几个也一并看看。


前言

最近在研究电商数据抓取时,发现阿里系的反爬机制又升级了。作为技术爱好者,我花了三周时间逆向分析了 2025 年最新版的淘宝天猫商品接口,总结出这份实战指南。本文纯属技术交流,请勿用于非法用途。

一、接口现状分析

2025 年的淘宝天猫接口有几个明显变化:

  1. 加密参数从 3 个增加到 7 个(新增了_timezone_fingerprint等)

  2. 数据返回格式改为二进制流(不再是明文的 JSON)

  3. 请求必须携带设备指纹(包括 GPU 信息、屏幕 DPI 等)

二、核心参数逆向过程

1. 关键参数_signature生成算法

通过 Hook 关键函数,发现签名算法已经改为:

python 复制 def generate_sign(params): secret = "tb_2025_v2_" + get_day_code() # 动态密钥 param_str = "&".join([f"{k}={v}" for k,v in sorted(params.items())]) return hmac.new(secret.encode(), param_str.encode(), 'sha256').hexdigest()

每日密钥会变化,需要先获取day_code,这个藏在首页 JS 文件的注释里。

2. 设备指纹_fingerprint构成

新版指纹包含:

  • Canvas 指纹(通过 WebGL 渲染隐藏图像生成)

  • WebAudio 采样 hash

  • 屏幕色彩深度+刷新率

  • 浏览器插件列表 hash

建议使用真实浏览器环境生成,纯模拟难度较大。

三、请求流程示例

完整请求需要经过:

  1. 获取令牌(返回有效期 5 分钟)

  2. 获取临时密钥(需解密)

  3. 构造带签名的请求

  4. 处理二进制响应(需要 zlib 解压+自定义解码)

python 复制 # 示例代码片段 async def get_item_detail(item_id): token = await get_token() key_info = await get_secret_key(token) params = { "itemId": item_id, "_timestamp": int(time.time()*1000), # ...其他必要参数 } params["_signature"] = generate_sign(params, key_info) resp = await session.get(API_URL, params=params) return decode_response(await resp.read())

四、常见坑点记录

  1. 请求频率限制:单个 IP 限制为 30 次/分钟,建议使用优质代理

  2. 参数时效性_timestamp误差不能超过±30 秒

  3. 浏览器特征:缺少navigator.hardwareConcurrency会被识别

  4. Cookie 更新_m_h5_tk每 2 小时失效

五、数据解析技巧

返回的二进制数据结构:

  • 前 4 字节:数据长度

  • 接下来 2 字节:压缩标志(0x1F8B 表示 gzip)

  • 剩余部分:加密的业务数据

解密后是 protobuf 格式,需要对应的.proto 文件才能正确解析。

结语

阿里系的防护确实越来越完善,但核心思路仍然是:

  1. 逆向关键参数生成逻辑

  2. 模拟完整请求链路

  3. 处理好各种时效性参数

建议研究时多使用 Charles 抓包和浏览器开发者工具,重点关注 XHR 请求和 WebSocket 通信。

(注:文中部分细节已做模糊处理,请遵守相关法律法规)

用户头像

代码忍者

关注

还未添加个人签名 2024-07-23 加入

还未添加个人简介

评论

发布
暂无评论
【2025实战】淘宝天猫商品数据接口逆向分析手记:新手也能看懂的技术拆解_API 接口_代码忍者_InfoQ写作社区