requests库入门-16-Session和Cookie

本文深入讲解了Session和Cookie的工作原理及应用场景,对比分析了两者的区别,并提供了Requests库中的实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       我们可能听说了Session和Cookies,面试中可能也会被问到这个两者之间的区别。本篇主要通过画图来理解两个机制,然后通过回到两个机制的不同来结束整个Requests的学习。

1.为什么需要Session和Cookie

       我们知道HTTP是一种无状态的响应。上一个请求和下一个请求没有任何关系。但是现实过程中,需要这些请求之间有关系。例如,你在首页登录,但是进入到列表页就显示没有登录,点击一个数据提示你还需要登录。为了解决这样问题,需要两个机制,那就是Session 和 Cookie

2.Cookies机制原理


       浏览器第一次发送请求,没有带cookies,服务器收到之后,在数据库找,找到有相关权限。服务器就给出相应,并设置一个cookie。浏览器收到服务器发送过来的cookie,就开始解析cookie,并把这个cookie保存到本地。这样,以后浏览器每次发送请求,都带上cookie,服务器会对cookie进行解析,发送这个cookie是之前服务器设置的cookie,服务器就开始给浏览器发送HTTP响应,这样,一个完整的交互流程就走下来了。
在requests中是这样实现cooie的:
发送请求的时候带上cookie

cookies=dic(c='xxxx')
requests.get(url,cookies=cookies)

r = requests.get(url)
r.cookies['cookiename']
3.Session机制原理

       首先浏览器发送一个HTTP请求,服务器端完成认证之后,会对这个会话进行保存,也就是会存储Session,这个可能存在服务上,可能存在数据库或者redis上。服务器给出一个响应,带上cookies-session-id的信息。浏览器拿到响应之后,也会保存到本地,但是这个时候cookie很小,可能只有一个id。浏览器开始发送HTTP请求,带上cookie,服务器上解析sessionid,给出HTTP响应。

4.Session和Cookie两者的区别

1)、cookie数据存放在客户的浏览器上,session数据放在服务器上
2)、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session
3)、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE
4)、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能大于3K。


<think>好的,我需要帮助用户学习Pythonrequests的基础用法。用户要求入门教程、基础用法示例。首先,我应该回顾requests的基本概念,然后分步骤讲解常用方法,比如GETPOST请求,处理响应,添加头信息参数。同时,结合用户提供的引用内容,特别是引用[2][3],里面提到了Requests的宗旨基本用法,可能需要引用这些内容。需要确保代码示例正确,并且符合用户的实际需求,比如发送请求、处理响应数据等。还要注意用户提到的引用[4]中的cookie处理,可能需要在适当的地方提到。另外,用户希望结构清晰,逐步解决问题,所以需要分点讲解,每个部分都给出示例代码。最后,生成相关问题,帮助用户进一步学习。需要检查是否所有数学公式都正确使用了$...$格式,但这个问题可能不涉及太多数学内容,所以可能不需要。但如果有变量或代码内的数学符号,要确保格式正确。总之,按照用户提供的系统级指令,组织内容,确保正确引用,并生成相关问题。</think># Python Requests基础教程 ## 一、环境准备 首先通过`pip`安装Requests: ```bash pip install requests ``` 验证安装是否成功: ```python import requests print(requests.__version__) # 应输出版本号如2.28.1 ``` ## 二、GET请求基础用法 ### 1. 发送简单请求 ```python import requests response = requests.get("https://www.example.com") print(response.status_code) # 输出状态码如200 print(response.text[:100]) # 打印前100字符的网页内容 ``` ### 2. 带参数请求 使用`params`参数传递查询参数: ```python params = {"key1": "value1", "key2": "value2"} response = requests.get("https://httpbin.org/get", params=params) print(response.url) # 输出完整带参数的URL ``` ## 三、POST请求基础用法 ### 1. 表单数据提交 ```python payload = {"username": "admin", "password": "123456"} response = requests.post("https://httpbin.org/post", data=payload) print(response.json()["form"]) # 返回提交的表单数据 ``` ### 2. JSON数据提交 ```python headers = {"Content-Type": "application/json"} data = {"name": "Alice", "age": 25} response = requests.post("https://httpbin.org/post", json=data, headers=headers) print(response.json()["json"]) # 返回解析后的JSON数据 ``` ## 四、响应处理技巧 ### 1. 内容解析 ```python # 获取二进制内容 image_data = requests.get("https://example.com/image.jpg").content # 解析JSON响应 json_response = requests.get("https://api.example.com/data").json() ``` ### 2. 状态码检查 ```python response = requests.get("https://example.com") if response.status_code == 200: print("请求成功") elif response.status_code == 404: print("页面未找到") ``` ## 五、进阶配置 ### 1. 自定义请求头 ```python headers = { "User-Agent": "Mozilla/5.0", "Authorization": "Bearer YOUR_TOKEN" } response = requests.get("https://api.example.com", headers=headers) ``` ### 2. Cookie处理 ```python # 自动管理Cookies with requests.Session() as s: s.get("https://example.com/login") # 后续请求自动携带cookie # 手动设置Cookie cookies = {"session_id": "abc123"} response = requests.get(url, cookies=cookies) ``` ## 六、异常处理 ```python try: response = requests.get("https://example.com", timeout=5) response.raise_for_status() # 自动抛出4xx/5xx错误 except requests.exceptions.RequestException as e: print(f"请求发生错误: {e}") ``` [^1]: Requests简化了HTTP请求的发送过程,让开发者更专注于业务逻辑处理 [^2]: 通过Session对象可以保持跨请求的Cookie配置参数 [^3]: 响应对象的text属性会自动根据字符编码解码内容 [^4]: 使用response.json()方法可以快速解析JSON格式的响应内容
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值