[英]How can I convert this Curl call into Python 3?
我有以下 curl 可以成功将我登录到网站。 它返回一个 302 和一个 cookie:
curl \
--verbose \
--request POST \
--data '__EVENTTARGET=&body%3Ax%3AtxtLogin=kingkong%40mailinator.com&body%3Ax%3AbtnLogin=&crypted_pass=736015615f9e251692a6a4aa8a7baa14' \
"https://emma.maryland.gov/page.aspx/en/usr/login"
不幸的是,我必须插入帐户的真实用户名和加密密码。 否则这个 curl 它将无法工作。 但是,这是一个完全虚拟的帐户,其中没有私人数据。 所以请不要生我的气。
我想使用requests.post()
将其转换为 Python3 代码。 所以我做了这个代码:
>>> requests.post(
... url='https://emma.maryland.gov/page.aspx/en/usr/login',
... data={
... '__EVENTTARGET': '',
... 'body:x:txtLogin': 'kingkong@mailinator.com',
... 'body:x:btnLogin': '',
... 'crypted_pass': '736015615f9e251692a6a4aa8a7baa14'
... }
... )
<Response [200]>
但是我从 Python3 代码 (200) 得到的响应与我从 Curl (302) 得到的响应不匹配。 这意味着目标服务器感知到两个请求之间的差异。
如何将 curl 转换为发送完全相同的底层 HTTP 请求的 Python3?
您的requests
代码实际上比cURL
命令更智能。
HTTP 302 - 是一个重定向,cURL 没有关注它并给了你它得到的第一个响应。 您可以使用-L
使 cURL 跟随重定向: Is there a way to follow redirects with command line cURL?
requests
代码遵循重定向并给您最终响应,恰好是 HTTP 200。
用-L
试试你的 curl 命令,看看你是否得到 HTTP 200。
或者,您可以使用allow_redirects=False
选项要求requests
不遵循重定向: Is there an easy way to request a URL in python and NOT follow redirects?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.