requests.sessions cookie更新
时间: 2023-08-10 09:38:58 浏览: 103
当使用 `requests.sessions` 发送 HTTP 请求时,如果服务器返回了新的 cookie,`requests` 会自动将其保存到会话中,以便以后的请求可以使用该 cookie。如果你希望手动更新会话中的 cookie,可以通过 `requests.sessions.Session.cookies` 属性访问会话的 cookie jar,并使用 `set` 方法来设置新的 cookie 值。
以下是一个示例代码,演示了如何手动更新会话中的 cookie:
```python
import requests
# 创建一个会话
session = requests.Session()
# 发送第一个请求
response = session.get('https://example.com')
print(session.cookies) # 输出会话中的 cookie
# 更新 cookie 值
session.cookies.set('my_cookie', 'new_value')
# 发送第二个请求,使用新的 cookie 值
response = session.get('https://example.com')
print(session.cookies) # 输出更新后的 cookie
```
在上面的代码中,首先创建了一个会话,并发送了第一个请求。然后,通过 `session.cookies.set` 方法更新了 cookie 的值,最后发送了第二个请求,使用了更新后的 cookie 值。
相关问题
requests.sessions
requests.sessions 是 Python requests 库中的一个模块,它提供了一个 Session 类,用于管理和维护一个 HTTP 会话。在一个 Session 中,你可以设置一些默认参数,如 headers、cookies 等,这些参数会自动应用于所有的请求中。此外,Session 还支持 cookie 的持久化,即可以自动将服务器返回的 cookie 保存在本地,下次请求时再自动发送给服务器。使用 requests.sessions 可以大大简化 HTTP 请求的编写和管理。
Traceback (most recent call last): File "D:\Program Files\JetBrains\PyCharm 2020.1\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec exec(exp, global_vars, local_vars) File "<input>", line 1, in <module> File "<string>", line 12, in vertifyName File "C:\ProgramData\Anaconda3\envs\env_cv2_cp38\lib\site-packages\requests\api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) File "C:\ProgramData\Anaconda3\envs\env_cv2_cp38\lib\site-packages\requests\api.py", line 59, in request return session.request(method=method, url=url, **kwargs) File "C:\ProgramData\Anaconda3\envs\env_cv2_cp38\lib\site-packages\requests\sessions.py", line 573, in request prep = self.prepare_request(req) File "C:\ProgramData\Anaconda3\envs\env_cv2_cp38\lib\site-packages\requests\sessions.py", line 471, in prepare_request cookies = cookiejar_from_dict(cookies) File "C:\ProgramData\Anaconda3\envs\env_cv2_cp38\lib\site-packages\requests\cookies.py", line 537, in cookiejar_from_dict cookiejar.set_cookie(create_cookie(name, cookie_dict[name])) TypeError: string indices must be integers
这个错误一般是因为请求中的某个参数值不是字典类型而导致的。请检查 payload 参数是否正确构造为字典类型。你可以尝试将 payload 参数中的 JSON 字符串转换为字典类型,如下所示:
```python
import requests
url = "https://crm.baidu.com/polaris-web/sme-cust/verify/verifyName"
payload = {"name": "三本树(上海)教育科技有限公司"}
headers = {
"isajax": "true",
"Cookie": "BIDUPSID=A09C98D9802D21EDCE9B8A4490EC5CE2; PSTM=1684252632; BAIDUID=A09C98D9802D21ED17765F505D625969:FG; BAIDUID_BFESS=A09C98D9802D21ED17765F505D625969:FG; ZFY=qt8fKnqLflisaA:BUnKqV:Awo8rk7t:AVWJCPMo5050PfU:C; HR_SIGN=UC_70a2711cf0144243891424851662987554571; Hm_lpvt_2188c29772eeba07a9fce63dc27d321c=1685026331; RT=\"z; tk=313027c567ba2913015e3f047346a9b2-1685026351022",
"User-Agent": "Apifox/1.0.0 (https://apifox.com)",
"Content-Type": "application/json;charset=UTF-8",
}
response = requests.post(url, headers=headers, json=payload)
print(response.text)
```
阅读全文