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

Python Requests请求在Postman可用,本地及Colab无法运行求助

解决API请求仅在Postman/Kaggle可用,本地/Colab失效的问题

你的问题是目标API请求在Postman和Kaggle能正常返回数据,但本地机器和Colab执行时被拦截,已尝试更换User-Agent但无效。以下是针对性的排查和解决步骤:

1. 排查Cookie的有效性与环境绑定

你代码里的Cookie字段包含Akamai的会话标识(ak_bmsc、bm_sv),这类Cookie通常和请求IP、User-Agent、会话上下文强绑定,Postman里的Cookie是你当时抓包的会话值,换环境后IP或UA不匹配就会失效。

解决操作:

  • 先尝试移除Cookie字段,直接发送请求,看是否能正常返回(部分公开API的Cookie仅用于会话跟踪,不是必填项)。
  • 如果必须用Cookie,重新从当前环境的浏览器(本地或Colab的虚拟浏览器)抓最新的Cookie值替换。

修改后的示例代码(移除Cookie):

import requests

url = "https://apisae1.phdvasia.com/v1/product-hut-fe/localizations?order_type=C&disposition=C&limit=4"

headers = {
  'accept': 'application/json, text/plain, */*',
  'accept-language': 'en-US,en;q=0.9',
  'client': '57950680-0208-4703-9e0b-c5a8cc45cf42',
  'lang': 'pt',
  'origin': 'https://www.pizzahut.com.br',
  'referer': 'https://www.pizzahut.com.br/',
  'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
  'sec-ch-ua-mobile': '?0',
  'sec-ch-ua-platform': '"Linux"',  # Colab环境改成Linux,本地Windows保留原值
  'sec-fetch-dest': 'empty',
  'sec-fetch-mode': 'cors',
  'sec-fetch-site': 'cross-site',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'  # Colab对应Linux UA
}

response = requests.get(url, headers=headers, allow_redirects=False)
print(response.status_code)
print(response.text)

2. 匹配请求头的环境细节

服务器可能校验请求头里的环境相关字段:

  • 本地Windows环境用"Windows",Colab是Linux环境,必须把sec-ch-ua-platform改成"Linux",否则会被判定为异常请求。
  • 确保user-agent和sec-ch-ua的版本匹配,比如你的UA是Chrome 113,但sec-ch-ua写的是Chrome 114,这种不一致可能触发反爬。

3. 模拟浏览器的请求流程

Postman会自动处理TLS握手、会话保持等细节,而requests库默认的配置可能不符合服务器要求。可以用requests.Session模拟浏览器的会话流程,先访问目标官网再请求API:

import requests

session = requests.Session()

# 先访问官网建立会话
session.get("https://www.pizzahut.com.br/")

# 再发送API请求
url = "https://apisae1.phdvasia.com/v1/product-hut-fe/localizations?order_type=C&disposition=C&limit=4"
headers = {
  'accept': 'application/json, text/plain, */*',
  'client': '57950680-0208-4703-9e0b-c5a8cc45cf42',
  'lang': 'pt',
  'referer': 'https://www.pizzahut.com.br/',
  # 其他必要头信息,去掉可能冲突的Cookie,让Session自动管理
}

response = session.get(url, headers=headers, allow_redirects=False)
print(response.text)

4. 绕过IP封禁

本地和Colab的IP可能被目标网站的反爬系统拉黑,而Kaggle的IP属于云服务商白名单。可以尝试:

  • 使用代理IP(注意选择可靠的代理,避免被检测)
  • 在Colab中更换运行时(重启会话获取新IP)

5. 用浏览器自动化工具兜底

如果以上方法都无效,直接用Selenium或Playwright模拟浏览器请求,完全复刻Postman的环境:

以Playwright为例:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://www.pizzahut.com.br/")
    # 发送API请求
    response = page.request.get("https://apisae1.phdvasia.com/v1/product-hut-fe/localizations?order_type=C&disposition=C&limit=4")
    print(response.json())
    browser.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:49:51