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

使用Python Requests库发送POST请求时出现INVALID_REQUEST错误的排查与解决咨询

使用Python Requests库发送POST请求时出现INVALID_REQUEST错误的排查与解决咨询

Hey,我看了你遇到的问题,刚上手requests库的时候确实容易踩这类坑,咱们一步步来排查和解决:

  • 首先,JSON数据的发送方式错了:你设置的Content-Type是application/json,但代码里用了data=data参数,requests默认会把data里的字典以表单格式(application/x-www-form-urlencoded)发送,这和服务器期望的JSON格式不匹配,这大概率是导致INVALID_REQUEST的核心原因。你应该把data替换成json参数,或者手动把字典转成JSON字符串再用data发送(但前者更简单)。

  • 不要手动指定Content-Length:requests会自动根据你发送的内容计算并设置这个请求头,你手动写的166如果和实际发送的JSON内容长度不一致,服务器会因为请求体长度不匹配拒绝请求,直接删掉这个头就行。

  • 检查URL参数的完整性和正确性:你的URL里有一堆长参数(比如signup_session_id、rh_session_id),这些参数都是会话相关的,要确保和BurpSuite里抓到的原始请求完全一致,哪怕少一个字符或者打错一个字母,都可能导致请求无效。

  • 验证Authorization头的准确性:你用的Basic Auth字符串要和Burp里的完全一致,检查有没有复制时遗漏或多打了字符,这个头是身份验证的关键,出错的话服务器也会返回无效请求。

  • 对比原始请求和代码发送的请求:可以开启requests的调试模式,或者用抓包工具(比如再次用Burp)捕获代码发送的请求,和你从Burp拿到的原始请求逐行对比,看头信息、请求体格式、URL参数有没有差异,这是排查这类问题最有效的方法。

下面是修改后的示例代码,你可以试试:

import requests

CreateAndStartHeaders = {
    "Host": "germany-rental.taxify.eu",
    "Accept": "*/*",
    "Content-Type": "application/json",
    "Accept-Encoding": "gzip, deflate",
    "Authorization": "Basic KzQ5MTc2NzA4Njc1MDQ6MUZCRjAwMEYtQkQzRC00RjgwLUE5NUItRUZFODg4RjYzQzVB",
    "User-Agent": "Bolt/109764413 CFNetwork/1390 Darwin/22.0.0",
    "Accept-Language": "en-GB,en;q=0.9",
    "Cache-Control": "no-cache"
}

data = {
    "vehicle_handle" : {
        "value" : "333-333",
        "type" : "uuid"
    },
    "source" : "single_order",
    "payment_instrument_id" : "adyen_paypal\/6216325090316059"
}

url = "https://germany-rental.taxify.eu/micromobility/user/ui/order/createAndStart?gps_age=0.4934508800506592&signup_session_id=e17333a3083993252554877ff58328094ffc3e225168026c4ed412a6518e8f47&country=de&lat=50.09257534411632&user_id=90791700&gps_lat=50.09243612776929&version=CI.91.0&device_name=iPhone12,8&gps_lng=8.225763438023886&lng=8.225648382329815&deviceType=iphone&distinct_id=client-90791700&rh_session_id=90791700u1684582741&language=en-GB&gps_accuracy_m=9.485426861614163&deviceId=ABD8E483-E0A1-496F-826E-6E96A2677BA8&device_os_version=iOS16.0&session_id=90791700u1684583212"

# 这里把data改成json参数,让requests自动以JSON格式发送
r = requests.post(url, headers=CreateAndStartHeaders, json=data)

print(r.content)

如果还是不行,建议你把代码发送的请求和Burp里的原始请求做对比,重点看请求体的格式、请求头的差异,应该就能找到问题所在啦。

备注:内容来源于stack exchange,提问作者abdonis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 12:44:33