使用requests库处理HTTP Cookies

112 阅读2分钟

微信图片_20230808094553.png在Python中,requests库是一个功能强大的HTTP客户端库,它提供了对Cookies的内置支持。当你发送HTTP请求时,requests库会自动处理Cookies的发送和接收。

以下是一个使用requests库进行会话管理,并利用HTTP Cookies保持用户登录状态的示例:

python复制代码

 import requests
  
 # 创建一个会话对象
 session = requests.Session()
  
 # 登录请求的URL和数据
 login_url = 'example.com/login' 
 login_data = {
 'username': 'your_username',
 'password': 'your_password' 
 }
  
 # 发送登录请求
 try:
 response = session.post(login_url, data=login_data)
  
 # 检查登录是否成功
 if response.status_code == 200:
 # 登录成功,Cookies已经被session对象保存
 print("登录成功!")
  
 # 发送后续请求(例如,访问受保护的资源)
 protected_url = 'example.com/protected_r…
 protected_response = session.get(protected_url)
  
 if protected_response.status_code == 200:
 # 访问受保护资源成功
 print("访问受保护资源成功!")
 print(protected_response.text)
 else:
 # 访问受保护资源失败
 print(f"访问受保护资源失败,状态码:{protected_response.status_code}")
 else:
 # 登录失败
 print(f"登录失败,状态码:{response.status_code}")
 print(response.text)
  
 except requests.RequestException as e:
 # 处理请求过程中发生的异常
 print(f"请求发生异常:{e}")

在这个示例中,我们首先创建了一个requests.Session()对象。这个对象会维护一个Cookies容器,用于存储从服务器接收到的Cookies,并在后续的请求中自动发送这些Cookies。

然后,我们发送一个POST请求到登录URL,并包含用户名和密码作为请求数据。如果登录成功,服务器会在响应中设置一个或多个Cookies,这些Cookies会被session对象自动保存。

接下来,我们可以使用同一个session对象发送后续的请求,这些请求会自动包含之前保存的Cookies。这样,服务器就能够识别出这是一个已经登录的用户,并允许访问受保护的资源。

通过使用requests.Session()对象,我们可以轻松地实现基于HTTP Cookies的会话管理,从而保持用户的登录状态并访问受保护的资源。