首页 > 解决方案 > 将 curl 转换为 python 请求,包括 cookie

问题描述

一些背景细节:

我们有一个内部站点,它具有带 2FA 的 SSO,并且还需要客户端证书。它有一个提交工作的表单。我正在尝试通过从 CLI 运行该过程来自动化该过程。到目前为止,我已经能够使用 curl 提交一份工作。为了让它工作,我需要从我的浏览器会话中提取 cookie。所以下面的 curl 命令按预期运行

curl -b cookies.txt -k --cert cert --key key -F 'field=value' url

我现在尝试将其转换为 Python 请求调用。但是,它似乎没有得到 cookie。我可以从进入 SSO 登录页面的脚本输出中看到这一点。这是我到目前为止的脚本

from requests_toolbelt import MultipartEncoder
import requests
import http.cookiejar

cookies = http.cookiejar.MozillaCookieJar('cookies.txt')
cookies.load(ignore_expires=True)

cert = ('cert','key')

m = MultipartEncoder(
    fields={'field': 'value'}
    )

headers = {
     'Content-Type': m.content_type,
}

r = requests.request('POST', url, data=m,
     headers=headers, cookies=cookies, cert=cert, verify=False)

据我所知,我已经匹配了所有 curl 选项。但如前所述,它似乎忽略了 cookie,并尝试运行 SSO。知道如何让它运行吗?如果没有其他方法,我将不得不通过子进程运行 curl。但我宁愿让它在 Python 请求中运行。

非常感谢任何帮助/提示。

标签: pythonpython-3.xcurlpython-requestscookiejar

解决方案


推荐阅读