一、先划红线:第三方能干与不能干
| 能干 | 不能干 |
|---|---|
拿到官方授权后通过taobao.item.get抓取公开字段(标题、价格、主图、SKU、销量等) | 用爬虫破解网页或 App 加密接口 |
| 服务自己的签约商家(商家授权给你) | 把数据打包转售给未授权用户 |
| 购买开放平台“独立资源池”提升额度 | 绕过频率限制、秒级轮询 |
二、0→1 准备:第三方必须完成的 4 个动作
注册账号 →企业实名认证(个人额度低,企业可提额到 1 万次/天)
创建“电商服务”类型应用 → 得到
App Key/App Secret在控制台→接口管理 申请
taobao.item.get权限,说明使用场景(如“为签约店铺提供比价看板”),审核 1-3 天让“数据归属”的淘宝商家在后台对你应用点击授权→ 拿到
session_key(如需读取隐私字段才用,公开字段可省)
完成以上四步,你才具备“第三方合法身份”。
三、接口画像(官方版)
网关: https://eco.taobao.com/router/rest Method: taobao.item.get 必选系统参数: app_key, method=taobao.item.get, timestamp, v=2.0, format=json, sign_method=md5, sign 业务参数: num_iid - 商品数字ID(从商家商品链接里截取) fields - 想返回的字段列表,英文逗号分隔四、核心难点:签名算法(Python 版)
淘宝采用“首尾夹 secret + 参数升序拼接 + MD5 大写”模式,第三方必须动态生成,不能硬编码。
import hashlib, time def generate_sign(params: dict, app_secret: str) -> str: """按淘宝开放平台签名规范生成 sign""" sorted_pairs = sorted(params.items(), key=lambda x: x[0]) raw = app_secret for k, v in sorted_pairs: raw += f"{k}{v}" raw += app_secret return hashlib.md5(raw.encode()).hexdigest().upper()实测签错一步就会返回invalid-sign。
五、30 行完整可运行 DEMO
把以下代码保存为tb_item_get.py可直接跑:
import os, time, requests, json from dotenv import load_dotenv load_dotenv() APP_KEY = os.getenv("TB_APP_KEY") APP_SECRET = os.getenv("TB_APP_SECRET") GATEWAY = "https://eco.taobao.com/router/rest" def sign(p): # 复用上一段函数 raw = APP_SECRET + ''.join(f"{k}{v}" for k, v in sorted(p.items())) + APP_SECRET return hashlib.md5(raw.encode()).hexdigest().upper() def item_get(num_iid: str): params = { "method" : "taobao.item.get", "app_key" : APP_KEY, "timestamp" : time.strftime("%Y-%m-%d %H:%M:%S"), "format" : "json", "v" : "2.0", "sign_method": "md5", "num_iid" : num_iid, "fields" : "num_iid,title,price,pic_url,location,sales,sku,desc" } params["sign"] = sign(params) r = requests.get(GATEWAY, params=params, timeout=10) r.raise_for_status() return r.json()["item_get_response"]["item"] if __name__ == "__main__": item = item_get("652874751412") # 替换为商家商品ID print(json.dumps(item, ensure_ascii=False, indent=2))输出示例:
{ "num_iid": "652874751412", "title": "iPhone 15 128G 粉色", "price": "599900", // 单位=分 "pic_url": "https://img.alicdn.com/imgextra/...jpg", "sales": 32876, "location": "浙江 杭州", "sku": { /* 省略 */ } }价格 ÷100 即可得人民币金额。
六、第三方常见 5 大场景封装
| 场景 | 关键字段 | 建议频率 | 备注 |
|---|---|---|---|
| 比价预警 | price, promo_price | 1 次/小时 | 存历史表画折线 |
| 选品库 | sales, title, location | 1 次/天 | 过滤月销>1w+评分>4.8 |
| ERP 同步 | sku.quantity | 1 次/15 分 | 库存<10 件钉钉提醒 |
| 竞品跟踪 | pic_url, desc | 1 次/周 | 图片哈希对比是否换主图 |
| 商家后台 | 全字段 | 用户点“刷新” | 走缓存,不直接打网关 |
七、额度 & 优化
默认 5 万调用/日;高频场景购买“独立资源池”可升至 100 万/日
批量入口:先
taobao.items.onsale.get拉店铺在售列表,再并发item.get(并发≤5,QPS≤1)缓存:SKU 与销量 15 分钟内视为“热数据”,用 Redis 缓存,减少无效调用
八、合规与风控 checklist(第三方必存)
☐ 隐私数据(买家手机号、收货地址)不落地
☐ 图片 URL 走 CDN 代理,不直接嵌入淘宝源链,避免版权投诉
☐ 用户协议加条款“数据来源于淘宝开放平台,所有权归商家与淘宝”
☐ 每年复审续约,如权限被回收 24h 内下线功能
☐ 接受淘宝合规部门抽检,提供调用日志(官方要求保存 6 个月)
如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。