You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何httpx请求Shopee API返回价格与网页显示不一致?

问题原因及解决办法

原因分析

  1. 地域/会话差异:Shopee会根据请求的IP地域、用户会话(Cookie)、语言偏好返回对应区域的定价。你的httpx请求是无状态的,没有携带浏览器中的地域标识、会话Cookie等信息,API返回的是默认/其他区域的价格,和浏览器中印尼区域的定价不一致。
  2. 缺少关键请求头:除了User-Agent,Shopee的API需要额外的头信息来验证请求合法性并识别区域,比如语言头、来源头、Referer等,缺失这些会导致返回非目标数据。
  3. 会话令牌缺失:原商品URL中的sp_atk是Shopee的会话验证令牌,浏览器请求时会自动携带相关会话信息(Cookie中包含),而你的httpx请求未携带,导致API返回非用户会话对应的价格。

解决步骤

1. 补充完整请求头

从浏览器的网络请求中复制Shopee API请求的完整头信息,至少添加以下关键头:

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
    "Accept-Language": "id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7",
    "x-api-source": "pc",
    "Referer": "https://shopee.co.id/S-B-Golden-Curry-Bumbu-Kari-Japanese-Curry-Mix-Medium-Hot-220-gr-i.65323877.3343602079?sp_atk=0b471505-cfca-491b-b7a2-453d455eecf6&xptdk=0b471505-cfca-491b-b7a2-453d455eecf6",
    "Cookie": "这里粘贴浏览器中Shopee站点的Cookie内容"
}

注意:Cookie需要从浏览器登录Shopee印尼站后复制,有效期内有效。

2. 确保请求IP为印尼地域

如果你的服务器不在印尼,需要使用印尼地区的代理IP,否则Shopee会根据IP返回对应区域的价格。修改httpx请求添加代理:

proxies = {
    "http://": "http://your-indonesia-proxy:port",
    "https://": "http://your-indonesia-proxy:port"
}
resp = httpx.get(url, headers=headers, proxies=proxies)

3. 验证价格单位(可选)

Shopee部分API返回的价格是以微印尼盾为单位(即实际价格 × 1000000),但你的情况中数值差异主要由地域/会话导致,不过可以验证:将返回的price除以1000000,看是否符合实际价格。

4. 使用正确的API参数

确保API请求的shopid和itemid与商品页面一致,同时可以尝试在请求参数中添加sp_atk令牌:

url = f"https://shopee.co.id/api/v4/item/get?shopid=65323877&itemid=3343602079&sp_atk=0b471505-cfca-491b-b7a2-453d455eecf6"

内容的提问来源于stack exchange,提问作者Hal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:43:26