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

使用Requests模块请求Argos API时陷入无限等待无法获取数据的原因排查

问题:使用Requests请求Argos商品库存API时陷入无限等待,无法获取数据

我有一个存储JSON数据的URL:https://www.argos.co.uk/stores/api/orchestrator/v0/locator/availability?origin=RH10&skuQty=6217859_1,在浏览器中访问该URL可以正常显示数据。但当我使用Requests模块编写代码尝试获取该URL的数据时,程序似乎始终无法获取数据并陷入无限等待。以下是我使用的代码:

import requests
main = 'https://www.argos.co.uk/'
s = requests.Session()
s.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'})
s.get(main)
url = 'https://www.argos.co.uk/stores/api/orchestrator/v0/locator/availability?origin=RH10&skuQty=6217859_1'
g = s.get(url)
print(g.content)

请问出现这种无限等待情况的可能原因是什么?

可能的原因及解决思路

让我帮你拆解下几个最可能的原因,以及对应的调试方向:

  • URL中的转义字符未处理:你当前URL里的&是HTML转义后的&符号,浏览器会自动识别并解析成正常的&,但Requests不会做这个转换。API收到错误的参数格式后,可能无法正确处理请求,导致长时间挂起。你需要把URL里的&替换成&,修正后的URL应该是:https://www.argos.co.uk/stores/api/orchestrator/v0/locator/availability?origin=RH10&skuQty=6217859_1。

  • 缺少必要的请求头字段:除了User-Agent,Argos的API可能还依赖其他请求头来验证请求合法性。比如浏览器会自动带上Accept(指定接受的响应格式)、Referer(标识请求来源页面)这些字段。你可以打开浏览器开发者工具(F12),切换到Network标签,找到该API请求,查看Request Headers里的所有字段,把缺失的字段添加到你的Session headers中。比如常见需要补充的:

    s.headers.update({
        'Accept': 'application/json, text/plain, */*',
        'Referer': 'https://www.argos.co.uk/'
    })
    
  • 未设置请求超时时间:你的代码没有给get请求设置超时参数,一旦网络出现波动或者API端响应缓慢,程序就会无限等待下去。建议添加超时限制,比如设置10秒超时:g = s.get(url, timeout=10),这样超过时间就会抛出超时异常,避免程序挂死。

  • 反爬机制拦截:Argos大概率有反爬策略,仅靠Session和基础的User-Agent可能不够。比如需要携带特定的Cookie(比如会话标识、CSRF token),这些Cookie是浏览器访问主站时生成的。你可以在浏览器中访问主站后,查看开发者工具里的Cookie,把关键的Cookie键值对手动添加到Session的cookies中,或者尝试模拟更完整的浏览器行为(比如先访问商品详情页,再请求库存API)。

  • SSL证书验证问题(概率较低):部分网站的SSL证书配置可能和Requests的默认验证逻辑冲突,导致请求卡住。你可以临时关闭SSL验证测试(注意:生产环境不建议这么做,存在安全风险),添加verify=False参数:g = s.get(url, verify=False),看看是否能正常获取响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:47:36