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

如何用Python发送带payload的POST请求,获取与浏览器一致的接口返回数据

解决方法

你遇到的问题主要是请求体格式错误、缺少必要请求头和Cookie导致的,按以下步骤调整即可:

    1. 请求体格式修正:requests.post传data参数时默认发送表单格式数据,该接口需要接收JSON格式,改为使用json关键字传参即可
    1. 补充模拟浏览器的请求头:至少需要添加User-Agent避免被服务器识别为爬虫拦截
    1. 加入你从浏览器获取的Cookie,替换代码中对应位置的Cookie值即可
    1. 可先打印响应状态码排查请求是否被服务器正常接收,避免直接打印内容无法定位错误

调整后的参考代码如下:

import requests

url = "https://flight-api-v1.utravs.com/Flight/statistic/FlightPriceStatistics"
request_data = {
    "minimumPriceStatisticRequest": {
        "$id": 1,
        "availabilityRequest": {
            "$id": 2,
            "segments": {
                "$id": 3,
                "$values": [
                    {
                        "$id": 4,
                        "destination": "KIH-Kish-all",
                        "origin": "THR-Tehran-all",
                        "departureDateTime": "2021-12-02T00:00:00.000Z",
                        "uniqueIndex": 0
                    }
                ]
            },
            "passengers": {
                "$id": 5,
                "$values": [
                    {
                        "$id": 6,
                        "type": 1,
                        "quantity": 1,
                        "optionalServices": {
                            "$id": 7,
                            "$values": []
                        }
                    }
                ]
            },
            "travelDetails": {
                "$id": 8,
                "cabinType": 1,
                "airTripType": 1,
                "stopQuantityType": 3,
                "pricingSourceType": 3
            },
            "availabilityType": 0
        },
        "minRange": 10,
        "maxRange": 10
    }
}
# 替换为你自己从浏览器请求中复制的请求头和Cookie
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Cookie": "你从浏览器第二张截图里复制的完整Cookie字符串"
}

response = requests.post(url, json=request_data, headers=headers, timeout=30)
# 先查看响应状态码,200为请求正常,4xx/5xx分别对应客户端和服务端错误
print("响应状态码:", response.status_code)
print("返回内容:", response.text)

注意:如果仍然返回错误,可从浏览器的请求头里复制Origin、Referer字段补充到headers字典中;另外Cookie存在有效期,过期后需要重新从浏览器获取;示例中的查询日期为2021年,若要查询最新数据请替换为对应日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:45:03