【2025 实战】淘宝天猫商品数据接口逆向分析手记:新手也能看懂的技术拆解
item_get 获得淘宝商品详情
item_get_pro 获得淘宝商品详情高级版
item_review 获取商品评论数据

商品评论数据

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

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

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

前言
最近在研究电商数据抓取时,发现阿里系的反爬机制又升级了。作为技术爱好者,我花了三周时间逆向分析了 2025 年最新版的淘宝天猫商品接口,总结出这份实战指南。本文纯属技术交流,请勿用于非法用途。
一、接口现状分析
2025 年的淘宝天猫接口有几个明显变化:
加密参数从 3 个增加到 7 个(新增了
_timezone
、_fingerprint
等)数据返回格式改为二进制流(不再是明文的 JSON)
请求必须携带设备指纹(包括 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
建议使用真实浏览器环境生成,纯模拟难度较大。
三、请求流程示例
完整请求需要经过:
获取令牌(返回有效期 5 分钟)
获取临时密钥(需解密)
构造带签名的请求
处理二进制响应(需要 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())
四、常见坑点记录
请求频率限制:单个 IP 限制为 30 次/分钟,建议使用优质代理
参数时效性:
_timestamp
误差不能超过±30 秒浏览器特征:缺少
navigator.hardwareConcurrency
会被识别Cookie 更新:
_m_h5_tk
每 2 小时失效
五、数据解析技巧
返回的二进制数据结构:
前 4 字节:数据长度
接下来 2 字节:压缩标志(0x1F8B 表示 gzip)
剩余部分:加密的业务数据
解密后是 protobuf 格式,需要对应的.proto 文件才能正确解析。
结语
阿里系的防护确实越来越完善,但核心思路仍然是:
逆向关键参数生成逻辑
模拟完整请求链路
处理好各种时效性参数
建议研究时多使用 Charles 抓包和浏览器开发者工具,重点关注 XHR 请求和 WebSocket 通信。
(注:文中部分细节已做模糊处理,请遵守相关法律法规)
评论