首页 > 解决方案 > 无法正确将 curl/fetch 转移到 python

问题描述

我目前正在编写简单的消息发送应用程序。它应该只是将 txt 文件中的消息发送到服务器。

获取请求如下所示:

fetch(url, 
{"credentials":"include",
"headers":{"accept":"application/json, text/javascript, */*; q=0.01","accept-language":"ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7","content-type":"multipart/form-data; boundary=----WebKitFormBoundaryMdUdjyDYgjOTGBXW","is-api-query":"true","x-requested-with":"XMLHttpRequest"},
"referrer":"",
"referrerPolicy":"no-referrer-when-downgrade",
"body":"------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\n\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"oid\"\r\n\r\n560579\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"uid\"\r\n\r\n20591\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\n2\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"coion\"\r\n\r\n259\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"rec\"\r\n\r\n1\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"upload[]\"; filename=\"sample.txt\"\r\nContent-Type: text/plain\r\n\r\n\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"chht\"\r\n\r\n\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"csctoe\"\r\n\r\n1\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"cuid\"\r\n\r\n133338\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"cclid\"\r\n\r\n2155\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"cwid\"\r\n\r\n0\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"coid\"\r\n\r\n589454\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW--\r\n",
"method":"POST",
"mode":"cors"});

它工作正常,它发送一个名为“sample.txt”的空文件。但是当我尝试在 Python 中做同样的事情时,服务器返回请求的正文不正确。

我已经尝试按原样发​​送它:

headers = {
    'Connection': 'keep-alive',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'is-api-query': 'true',
    'DNT': '1',
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
    'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryMdUdjyDYgjOTGBXW',
    'Origin': '',
    'Referer': '',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
}

data = '^------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^text^\\^^\n\n^\n\n^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^oid^\\^^\n\n^\n\n560579^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^uid^\\^^\n\n^\n\n20591^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^type^\\^^\n\n^\n\n2^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^coion^\\^^\n\n^\n\n259^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^recipient^\\^^\n\n^\n\n1^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^upload^[^]^\\^; filename=^\\^sample.txt^\\^^\n\nContent-Type: text/plain^\n\n^\n\n^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^chht^\\^^\n\n^\n\n^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^csctoe^\\^^\n\n^\n\n1^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^cuid^\\^^\n\n^\n\n133338^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^cclid^\\^^\n\n^\n\n2155^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^cwid^\\^^\n\n^\n\n0^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^coid^\\^^\n\n^\n\n589454^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW--^\n\n^'

response = requests.post(url, headers=headers, cookies=cookies, data=data)

我也尝试将数据作为 json.dumps() 发送,但没有运气。

我究竟做错了什么?

标签: javascriptpythonnginxcurlfetch

解决方案


推荐阅读