如何用Python构建请求获取指定页面XHR接口的JSON响应?
解决方法
1. 确认正确的请求参数
打开Firefox的网络面板(F12),找到返回目标JSON的请求,记录以下信息:
- 完整的请求URL(注意末尾是否带斜杠、是否有查询参数)
- 请求头中的关键字段:
User-Agent、Accept、Referer等
2. 模拟浏览器请求
重定向循环通常是因为请求缺少必要的头信息,或者URL格式不正确。试试以下代码:
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0', 'Accept': 'application/json, text/plain, */*' } # 注意URL末尾的斜杠,很多API会因为斜杠问题触发重定向 response = requests.get('https://api.unverpacktverband.de/map/', headers=headers) response.raise_for_status() # 抛出HTTP错误 data = response.json() print(data)
3. 排查重定向细节
如果还是有问题,打印重定向的历史来定位循环点:
import requests session = requests.Session() session.headers.update({ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0' }) try: response = session.get('https://api.unverpacktverband.de/map', allow_redirects=True) except requests.TooManyRedirects as e: print("重定向历史:") for resp in session.history: print(f"{resp.status_code} -> {resp.url}")
通过打印的重定向历史,可以看到请求是在哪个URL之间循环,调整URL或请求头即可解决。
内容的提问来源于stack exchange,提问作者afrobdeluxe
相关产品推荐
相关产品推荐

