一、接口调用流程
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
{
"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:频次超限