一些背景细节:
我们有一个内部站点,它具有带 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 请求中运行。
非常感谢任何帮助/提示。