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

Telerik Fiddler成功POST请求转Python脚本遇400错误求助

解决Python requests POST请求返回400错误的问题

我来帮你排查这个问题——你在Fiddler里构造的POST请求能正常执行,但转成Python脚本后返回400,核心问题不是缺少依赖库,而是请求头的设置有误,具体分析和解决方案如下:

问题根源

你手动设置了Content-Length和Host这两个请求头,但这两个头其实是requests库会自动处理的:

  • Content-Length:你写的105是占位符xxx/xxxx对应的请求体长度,但换成真实的用户名密码后,请求体实际长度会变化,服务器校验到请求头里的长度和实际内容长度不匹配,就会返回400错误。
  • Host:requests会从你传入的URL自动提取并添加这个头,手动设置反而可能出现格式或值不匹配的问题。

修改后的Python脚本

移除多余的请求头,同时确保用户名和密码是真实有效值,脚本如下:

import requests

headers = {
    'Connection': 'Keep-Alive',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': 'application/json',
    'Authorization': 'Basic XyXyXyXyXyXyXyXyXyXyXy='
}
body = {
    'grant_type': 'password',
    'username': '你的真实用户名',
    'password': '你的真实密码',
    'scope': 'random.api.external'
}

response = requests.post('https://login.random.com/connect/token', headers=headers, data=body)

# 打印响应信息,方便排查后续问题
print("响应状态码:", response.status_code)
print("响应内容:", response.text)

额外排查建议

如果修改后还是报错,可以尝试直接传入URL编码格式的请求体字符串(跳过字典自动编码步骤):

body = 'grant_type=password&username=你的真实用户名&password=你的真实密码&scope=random.api.external'
response = requests.post('https://login.random.com/connect/token', headers=headers, data=body)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:16:44