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

使用Python发送POST请求上传文件时返回500错误求助

问题排查与修改建议

以下是针对你提交文件返回500错误的几个关键修改点:

1. 移除手动设置的Content-Length和Content-Type

requests库在处理multipart/form-data类型的文件上传请求时,会自动计算Content-Length并生成正确的Content-Type(包括动态boundary值),手动设置固定值会和实际请求内容不匹配,这是触发500错误的常见原因。

修改后的headers去掉这两个字段:

headers = {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "en-US,en;q=0.9",
    "Connection": "keep-alive",
    "Cookie": "csrftoken=O9tFpNhZuZrj7DsEnBAcj0wmV00z8qE3; theme=cyborg",
    "Host": "cuckoo.cert.ee",
    "Origin": "https://cuckoo.cert.ee",
    "Referer": "https://cuckoo.cert.ee/submit/",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "Windows",
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
    "X-CSRFToken": "O9tFpNhZuZrj7DsEnBAcj0wmV00z8qE3"
}

2. 确认文件字段的正确名称

你当前files的键是"test.exe",但网站后端接收文件的字段名大概率不是这个(通常是"file"或"sample"这类通用名称)。可以通过浏览器开发者工具确认:

  • 打开浏览器F12切换到Network标签
  • 在网页上正常提交一次文件,找到对应的presubmit请求
  • 查看Form Data里的文件字段名称,替换到代码中

示例(假设字段名为file):

files = {"file": open("test.exe", "rb")}

3. 补充必要的表单data参数

多数文件上传接口除了文件本身,还需要其他表单参数(比如提交说明、分析选项等)。同样通过浏览器开发者工具查看正常请求的Form Data,把缺失参数添加到data中:

data = {
    # 示例参数,根据实际接口要求填写
    "description": "test sample",
    "package": "none"
}

response = requests.post(url, headers=headers, files=files, data=data, verify=False)

4. 清理重复的Cookie字段

你的Cookie里重复了csrftoken,保留一个即可,避免服务器解析异常。

测试辅助建议

修改后可以打印响应文本,查看服务器返回的具体错误信息,帮助进一步定位问题:

print(response.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:24:16