我有curl命令:
curl 'https://example.com/submit' \
-H 'Accept: */*' \
-H 'Referer: http://www.example.com/go/' \
-H 'Origin: http://www.example.com' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' \
-H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryFkQeCsmEXjVI5SJ0' \
--data-binary $'------WebKitFormBoundaryFkQeCsmEXjVI5SJ0\r\nContent-Disposition: form-data; name="firstName"\r\n\r\Oleg\r\n------WebKitFormBoundaryFkQeCsmEXjVI5SJ0\r\nContent-Disposition: form-data; name="campaignCode"\r\n\r\n\r\n------WebKitFormBoundaryFkQeCsmEXjVI5SJ0\r\nContent-Disposition: form-data; name="validation"\r\n\r\n{"firstName":"required"}\r\n------WebKitFormBoundaryFkQeCsmEXjVI5SJ0--\r\n' \
--compressed
有:
^{pr2}$但是我转换成python代码的版本不起作用 在
import requests
headers = {
'Accept': '*/*',
'Referer': 'http://www.example.com/go',
'Origin': 'http://www.example.com',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryFkQeCsmEXjVI5SJ0'
}
data = '$------WebKitFormBoundaryFkQeCsmEXjVI5SJ0\\r\\nContent-Disposition: form-data; name="firstName"\\r\\n\\r\\Oleg\\r\\n------WebKitFormBoundaryFkQeCsmEXjVI5SJ0\\r\\nContent-Disposition: form-data; name="campaignCode"\\r\\n\\r\\n\\r\\n------WebKitFormBoundaryFkQeCsmEXjVI5SJ0\\r\\nContent-Disposition: form-data; name="validation"\\r\\n\\r\\n{"firstName":"required"}\\r\\n------WebKitFormBoundaryFkQeCsmEXjVI5SJ0--\\r\\n'
response = requests.post('https://example.com/submit', headers=headers,
data=data)
也许我遗漏了什么?如何转换--data-binary $
?在
curl命令返回:{"success":true,"count":1}
,而pycode返回:{"success":false,"count":1}
也有错误:
在data
字符串响应中没有$
,字符串响应{"success":false,"count":0}
。
使用bytes
代替str
表示data
。
更新:
这个curl命令可以在linux上与curl7.58.0一起使用,但是在windows上-cmd命令返回的错误与pycode中没有$
相同
问题是你的两个命令没有发送相同的数据。在
假设您在bash或类似的shell中运行它,}的内容。因为几乎可以肯定没有具有该名称的变量,所以您只需获得不带前导
$' -blahblah…'
并不表示字符串'$ -blahblah…'
,它表示环境变量' -blahblah…'
的内容(如果有),或者字符串{$
的字符串。在但是在Python中,您将
$
作为数据的一部分。这意味着您在第一个多部分边界之前有一个额外的条目$
。在要解决这个问题,就不要这么做。而不是这样:
…这样做:
^{pr2}$“curl”版本捕获包的有效负载:
“python”版本捕获包的有效负载:
^{pr2}$第一个条目似乎无法正常识别。在
您应该从python代码中的变量头}。在
data
中删除{然后,新的python版本的捕获包的有效负载:
这和“卷曲”版本相同。在
相关问题 更多 >
编程相关推荐