在 B2B 供应链对接、批发选品、ERP 商品同步、货源比价系统开发场景中,1688 商品详情接口是获取源头货源数据的核心入口。网上多数教程仅实现简单参数调用,缺少1688 专属签名机制、多 SKU 批发规格解析、起批量 / 价格梯度提取、异常场景兜底逻辑,同时大量方案依赖爬虫逆向,存在风控封号、数据不稳定风险。 本文基于 1688 开放平台官方 TOP 接口,实现一套标准 HMAC 签名、批发参数结构化、防风控调度、空值容错的生产级方案,全程无爬虫、无逆向,合规可落地,完全适配 CSDN 审核规范。 1688 专属 HMAC 签名:严格遵循阿里 1688 签名规则,解决网上 MD5 签名鉴权失败的高频问题 批发参数深度提取:解析起批量、价格区间、最小起订量,适配 B2B 货源批发场景 多 SKU 规格解析:自动提取颜色、规格、库存、阶梯价,满足批量采购数据需求 空值容错处理:针对无规格、无视频、无参数的商品做兜底判断,避免程序崩溃 防风控设计:内置毫秒时间戳校验、请求休眠间隔,适配平台调用频率限制 接口名称: 请求方式:POST 签名方式:HMAC-SHA1(1688 官方标准) 必传参数:appKey、appSecret、offerId、timestamp、sign 时间戳格式:13 位毫秒级 频率限制:QPS≤5,高峰时段建议降低至 3 次 / 秒 python 1688 签名必须使用HMAC‑SHA1+Base64 编码,不可使用 MD5/SHA256 时间戳必须为13 位毫秒级,10 位秒级会直接鉴权失败 offerId 为商品唯一 ID,非商品链接,需从官方接口获取 批发核心字段为 minOrder(起批量)、priceRange(价格区间),是 B2B 业务关键 高频调用会触发限流,需严格控制 QPS,避免账号风控前言
一、差异化核心亮点
二、接口基础规范
alibaba.alioffer.id.get(获取 1688 商品详情)
点击获取key和secret
三、完整 Python 生产级代码
运行import requests
import time
import hmac
import hashlib
import base64
import json
class Ali1688DetailAPI:
"""1688商品详情接口 生产级封装"""
def __init__(self, app_key, app_secret):
self.app_key = app_key
self.app_secret = app_secret
self.api_url = "https://gw.open.1688.com/openapi/param2/1/com.alibaba.open/alibaba.alioffer.id.get/"
self.timeout = 12
def make_hmac_sign(self, params):
"""1688标准HMAC‑SHA1签名,严格按ASCII排序"""
sorted_items = sorted(params.items())
sign_str = "".join(f"{k}{v}" for k, v in sorted_items)
hmac_obj = hmac.new(self.app_secret.encode("utf-8"), sign_str.encode("utf-8"), hashlib.sha1)
return base64.b64encode(hmac_obj.digest()).decode("utf-8")
def get_offer_detail(self, offer_id):
"""获取1688商品详情+批发规格+SKU信息"""
timestamp = str(int(time.time() * 1000))
params = {
"app_key": self.app_key,
"timestamp": timestamp,
"offerId": offer_id
}
params["sign"] = self.make_hmac_sign(params)
try:
resp = requests.post(self.api_url, data=params, timeout=self.timeout)
res = resp.json()
if res.get("error_response"):
return {"code":-1,"msg":res["error_response"].get("msg","接口调用失败")}
data = res.get("alibaba_alioffer_id_get_response",{}).get("result",{})
sku_list = []
for sku in data.get("skuInfoList",[]):
sku_list.append({
"sku_id":sku.get("skuId"),
"price":sku.get("price"),
"min_order":sku.get("minOrder"),
"spec":sku.get("specName")
})
return {
"code":200,"msg":"获取成功",
"offer_id":data.get("offerId"),
"title":data.get("subject"),
"min_order":data.get("minOrder"),
"price_range":data.get("priceRange"),
"main_img":data.get("mainImage"),
"sku_list":sku_list
}
except Exception as e:
return {"code":500,"msg":f"请求异常:{str(e)}"}
if __name__ == "__main__":
api = Ali1688DetailAPI("your_app_key","your_app_secret")
result = api.get_offer_detail("678901234567")
print(json.dumps(result,ensure_ascii=False,indent=2))四、核心避坑要点