如何从curl获取会话id并在下一个get请求中再次使用它

2024-09-27 17:55:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我做这个curl请求是为了在python中获取一些数据,如何获取curl请求的会话id,以便再次重用。

commands.getoutput("curl -H \"Content-Type:application/json\" -k -u username:password -X GET https://10.39.11.4/wapi/v2.7/member -s"

Tags: 数据httpsidjsongetapplicationtypeusername
2条回答

curl有一个内置的cookie jar,用于存储cookie并将它们发送回服务器。

为了在cookie jar中存储cookies,我们使用-c标志并给它一个我们希望存储cookies的文件名。

$ curl -X POST -c cookies.txt -u "user1:password1" website.com/login
$ cat cookies.txt

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

#HttpOnly_quiet-waters-1228.herokuapp.com FALSE / FALSE 0 _curl_test_app_rails_

session cm53d2RJN1VncV........

在这里您可以找到会话ID。

如Daniel Stenberg所述:

在随后的curl命令行中使用-b cookies.txt来使用这些cookies

您应该检查请求库,它有如下描述的会话管理:http://docs.python-requests.org/en/master/user/advanced/#session-objects

s = requests.Session()
s.auth = ('username', 'password')
s.headers.update({'Content-Type': 'application/json'})
r = s.get('https://10.39.11.4/wapi/v2.7/member')

如果要保存会话并加载它,应使用dict_from_cookiejarcookiejar_from_dict如下:

# Save session
s_dict = requests.utils.dict_from_cookiejar(s.cookies)
# Load session
cookies = requests.utils.cookiejar_from_dict(s_dict)
s = requests.session(cookies=cookies)

相关问题 更多 >

    热门问题