首页 > 解决方案 > curl 和 python cookie 是不同的

问题描述

我有一组 curl 命令,我试图将它们转换为 python 请求,但我卡在了 cookie 上。在 curl 中,说明说要通过

curl 'https://signon.jgi.doe.gov/signon/create' --data-urlencode 'login=USER_NAME' --data-urlencode 'password=USER_PASSWORD' -c cookies > /dev/null

这给了我以下文件

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.jgi.doe.gov    TRUE    /       FALSE   0       jgi_session     <REDACTED>
#HttpOnly_signon-old.jgi.doe.gov        FALSE   /       FALSE   0       _caliban_session        <REDACTED>

当我在请求中尝试相同的事情时:

import requests
get_cookie = requests.post('https://signon.jgi.doe.gov/signon/create', data={'login':<USERNAME>, 'password': <PASSWORD>})
get_cookie.cookies
    <RequestsCookieJar[Cookie(version=0, name='_caliban_session', value='<REDACTED>', port=None, port_specified=False, domain='signon.jgi.doe.gov', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)]>

返回的 cookie 是_caliban_session,它在 curl cookie 文件中被注释掉。正确的 cookiejgi_session似乎没有返回。结果,我使用 cookie 的后续请求被拒绝。

为什么 python 和 curl 的 cookie 不同?以及如何让 python 请求与 curl cookie 匹配?

标签: pythoncurlcookiespython-requests

解决方案


推荐阅读