python post form data 是已知的吗_Python相当于curls –form:使用“form”参数中的数据创建multipart form-data post请求...

我正在寻找一个等效于此curl命令的

python:

curl --referer "https://myreferer" --insecure --form "myparam=1234" https://myurl

这导致以下请求(取自httpbin.org/post):

{

"args": {},

"data": "",

"files": {},

"form": {

"myparam": "1234"

},

"headers": {

"Accept": "*/*",

"Connection": "close",

"Content-Length": "142",

"Content-Type": "multipart/form-data; boundary=----------------------------29a1ce32cc53",

"Host": "httpbin.org",

"Referer": "https://speedport.ip/hcti_start_passwort.stm",

"User-Agent": "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3",

"X-Request-Id": "c67c4461-89d2-4c9f-a9f4-ebfe312c026c"

},

...

如您所见,数据“myparam”以“form”参数提供.

我试图通过pythons请求模块构建这样的请求,并接近这个代码:

import requests

payload={'myparam':'1234'}

url="http://httpbin.org/post"

headers={'User-Agent': 'Mozilla 5.0','referer':'https://myreferer'}

r = requests.post(url, files=payload, headers=headers,verify=False)

但是请求库将数据放入“files”参数中.因此生成的请求如下所示:

{

"args": {},

"data": "",

"files": {

"pws": "1234"

},

"form": {},

"headers": {

"Accept": "*/*",

"Accept-Encoding": "gzip, deflate",

"Connection": "close",

"Content-Length": "143",

"Content-Type": "multipart/form-data; boundary=a878ad29e28d47ffb00e0631319ed0e2",

"Host": "httpbin.org",

"Referer": "https://myreferer",

"User-Agent": "Mozilla 5.0",

"X-Request-Id": "60f5d65e-789a-47fe-bba3-dab88f9bbb65"

...

因此,数据在错误的位置传递,即在“files”参数内,这使得Apache阻塞了“501 Not Implemented”响应.

有人可以建议如何在Python中执行此类请求吗? (我知道我可以把curl作为一个子进程调用,但是因为我想做很多这些请求,所以我想要一个只有python的解决方案(希望更高效)).

而且,正如您可能已经注意到的,我还需要接受自签名证书并发送引用标头.

如果有人能提出一个解决这个问题的简单方法,我会很高兴.

谢谢!

编辑:我已经尝试使用requests.post命令的“data”-param,但这会产生不同的内容类型标题(application / x-www-form-urlencoded).请注意curl请求的内容类型标题.

编辑:我可能需要的是通过requests.post命令的headers param简单地发送正确的Content-Type头,multipart / form-data.但我还必须计算multipart / form-data标头字符串的“边界”部分.我想必须有一种更方便的方法,而不是手动构建标题和计算边界.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值