以下内容将带你从"零"开始,完整梳理通过第三方爬虫获取1688商品详情接口的核心思路、落地代码、常见反爬与应对策略,以及合规注意事项,帮助你快速、稳定地拿到商品结构化数据。
一、为什么要用"第三方爬虫"而不是官方 API
-
官方接口(
alibaba.product.get等)需企业实名+类目资质,个人开发者很难一次性通过审批。 -
官方 QPS 极低(≤10),字段高度裁剪,SKU、阶梯价、详情图等关键信息经常缺失。
-
第三方爬虫(广义上指"非官方通道")可直接返回网页原生 JSON,字段最丰富,且无需签约。
二、整体技术路线
| 方案 | 原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| ① 网页接口逆向 | 抓包 laputa.1688.com/offer/ajax/WidgetOfferDetail.do 等动态接口,解析 JSONP |
字段全、更新快 | 易变动、需补签名校验 | 个人/研究 |
| ② Selenium 渲染 | 用浏览器驱动等待 AJAX,再解析 DOM | 能过滑块、验证码 | 资源占用高、慢 | 小批量 |
| ③ 第三方数据商 | 付费调用现成 API,如 https://api.xxx.com/1688/item/{id} |
最省事 | 按条计费、延迟 30~120 min | 生产环境 |
下面给出①网页接口逆向的完整可运行 Demo(Python),也是目前社区使用最广、性价比最高的方式。
三、核心代码(接口逆向版)
python
import re, json, time, requests
from urllib.parse import quote
def get_1688_detail(item_id: str) -> dict:
"""
通过第三方逆向接口获取 1688 商品详情
:param item_id: 1688 商品数字 ID
:return: 结构化字典
"""
# 1. 先拿 Cookie
session = requests.Session()
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"Referer": f"https://detail.1688.com/offer/{item_id}.html",
}
session.get(headers["Referer"], headers=headers, timeout=10)
# 2. 调逆向接口
api_url = f"https://laputa.1688.com/offer/ajax/WidgetOfferDetail.do?offerId={item_id}"
rsp = session.get(api_url, headers=headers, timeout=10)
rsp.raise_for_status()
# 3. 去 JSONP 包装
json_str = re.search(r"\(({.*})\)", rsp.text).group(1)
data = json.loads(json_str)
# 4. 提取常用字段
return {
"title": data.get("subject"),
"price": data.get("price"),
"price_range": data.get("priceRanges"), # 阶梯价
"sku_list": data.get("skuList"), # 多规格
"main_imgs": [i["originalImageURI"] for i in data.get("imageList", [])],
"detail_imgs": [u for u in data.get("descUrl", "").split(",") if u],
"stock": data.get("canBookCount"),
"seller": data.get("seller", {}).get("companyName"),
}
# 运行示例
if __name__ == "__main__":
info = get_1688_detail("643562643789") # 替换成真实 ID
print(json.dumps(info, ensure_ascii=False, indent=2))
一次请求 ≈ 300 ms,可拿到 200+ 字段,包含阶梯价、SKU、详情图、库存、商家信息等。
四、反爬机制与应对策略
| 反爬点 | 现象 | 应对方案 |
|---|---|---|
| Cookie 校验 | 直接调接口返回 400 | 先 GET 商品页,再复用 Cookie |
| IP 频率 | 连续 30 次 403 | 代理池 + 随机延时 1~3 s |
| 滑块/验证码 | 弹窗遮挡 | ① 降速 ② 使用打码平台 ③ 换出口 IP |
| JSONP 变化 | 正则不匹配 | 打印 rsp.text 观察新包裹符,动态调整正则 |
五、数据落地与扩展
-
落库 :MySQL 按
item_id唯一键,价格/库存走 时序表,方便画趋势图。 -
监控 :对重点 SKU 跑 定时任务(每 30 min),价格跌幅≥5% 发飞书机器人。
-
选品 :用
priceRanges字段计算 最低起批量成本,结合 1688 销量排名,快速筛出"高毛利+低门槛"款。
六、合规与红线
-
遵守 robots :1688 官方
robots.txt禁止高频抓取/offer/*.html,务必控制频率。 -
仅限内部使用:不得将数据转售或公开发布,避免侵权。
-
代理池实名:使用正规云厂商弹性 IP,防止"黑代理"连带封号。
七、一句话总结
逆向 laputa 接口是目前成本最低、字段最全的"第三方爬虫"方案;再配合代理池、降频与 Cookie 复用,即可稳定获取 1688 商品详情,为选品、比价、供应链监控提供实时弹药。