如何使用Requests从响应头Set-Cookie中提取Session_id?
方法一:利用Requests自带的CookieJar(推荐)
Requests库会自动解析响应中的Cookie,存入response.cookies(一个RequestsCookieJar对象),可以直接通过键名获取目标Cookie值:
url = 'https://passport.yandex.ru/registration-validations/change-pwd-commit' header = { 'User-Agent': my_user_agent, 'referer': 'https://passport.yandex.ru/', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': "Windows", 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'Host': 'passport.yandex.ru', 'Origin': 'https://passport.yandex.ru', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'ru', 'X-Requested-With': 'XMLHttpRequest' } data = { 'csrf_token': csrf_token, 'track_id': track_id } # 注意:GET请求传data不符合常规规范,若接口要求POST请改用requests.post,否则建议改为params=data response = requests.get(url=url, headers=header, data=data) # 直接通过键名获取Session_id session_id = response.cookies.get('Session_id') print(session_id)
方法二:手动解析Set-Cookie字符串
如果需要直接处理响应头中的Set-Cookie字段,可以按以下步骤拆分提取:
- 从响应头中取出
Set-Cookie值 - 用逗号拆分多个独立的Cookie条目(多个Set-Cookie头会被合并为逗号分隔的字符串)
- 遍历条目,拆分出键值对并匹配目标Cookie
# 获取Set-Cookie字符串 set_cookie_str = response.headers.get('Set-Cookie', '') # 拆分多个Cookie条目 cookie_entries = set_cookie_str.split(', ') session_id = None for entry in cookie_entries: # 拆分键值对,忽略后续的expires、path等属性 key_value = entry.split(';')[0].split('=', 1) if len(key_value) == 2 and key_value[0] == 'Session_id': session_id = key_value[1] break print(session_id)
内容的提问来源于stack exchange,提问作者Trollface
相关产品推荐
相关产品推荐

