电子说
一、接口调用流程
认证授权
需先通过开放平台申请App Key和App Secret,获取access_token:
# Python示例 import requests auth_url = "https://gw.open.1688.com/auth/authorize" params = { "client_id": "YOUR_APP_KEY", "redirect_uri": "CALLBACK_URL", "site": "china" } # 获取授权码后交换token
请求构造
核心搜索接口地址:
https://api.1688.com/param2/1/com.alibaba.product/alibaba.product.search/
必备参数:
{ "keyword": "手机", // 搜索关键字 "pageNo": 1, // 页码 "pageSize": 20, // 每页数量 "access_token": "xxx" // 认证令牌 }
二、响应数据结构解析
{ "result": { "totalCount": 1500, "products": [ { "productId": 123456789, "subject": "华为Mate60 Pro 5G手机", "price": "¥5999", "imageUrl": "https://img.alicdn.com/xxx.jpg", "minOrder": 1, "unit": "台" } ], "pageIndex": 1, "pageSize": 20, "totalPage": 75 } }
三、签名安全机制
需使用HMAC-SHA1签名算法:
// PHP签名示例 $params = ksort($params); // 参数按键名排序 $stringToSign = strtoupper('GET') . '&' . urlencode('/api/endpoint') . '&'; foreach ($params as $k = > $v) { $stringToSign .= urlencode("$k=$v") . '&'; } $sign = base64_encode(hash_hmac('sha1', $stringToSign, $appSecret, true));
四、分页处理技巧
通过totalPage字段计算总页数: $$ text{总页数} = lceil frac{text{totalCount}}{text{pageSize}} rceil $$
推荐增量爬取:
current_page = 1 while current_page <= response['totalPage']: # 延时避免限流 time.sleep(1.5) current_page += 1
五、注意事项
频率限制:免费版限速200次/分钟,企业版可申请提升至500次/分钟
数据新鲜度:接口数据延迟约15-30分钟
错误码处理:
10000:签名无效
10001:参数缺失
20000:频次超限
完整文档参考:1688开放平台搜索API文档
建议使用官方SDK简化开发流程,支持Java/Python/PHP等多语言集成。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !