python-调用接口请求实现登录状态保持
cookies是什么
import requests from urllib import request from http import cookiejar from requests.cookies import RequestsCookieJar #什么是cookies cj = cookiejar.CookieJar() rcj = RequestsCookieJar() print(cj) print(rcj) s = requests.session() res = s.get(url='http://127.0.0.1:9000/verify') resrcj = res.cookies resrcj.set('shuzf', '449258746') resrcjdict = res.cookies.get_dict() print(resrcj) print(resrcjdict)
cookies、Session登录保持
import requests url1="http://127.0.0.1:9000/login" url2="http://127.0.0.1:9000/verify" json ={'username': '15669910105', 'password': 'a123456'} #cookies res1 = requests.post(url=url1 ,json=json) #第一个接口,登录 res2 = requests.get(url=url2 ,cookies=res1.cookies) #第二个接口,获取用户信息 print(res1.text) print(res2.text) #Session 继承 s = requests.Session() res3 = s.post(url=url1 ,json=json ) #第一个接口,登录 res4 = s.get(url=url2 ,headers=None,cookies=None) #第二个接口,获取用户信息,即便headers和cookies传空依旧保持 print(res3.text) print(res4.text)
类继承requests.Session
#类继承requests.Session,则该类的class.post(),get(),request()方法具有保持登录,重写方法也具有保存登录 from common.baseRquest import BaseRquest import time url1="http://42.192.162.8:9000/login" url2="http://42.192.162.8:9000/verify" json ={'username': '15669910105', 'password': 'a123456'} req=BaseRquest() req.cookies.clear() res1 = req.post(url=url1,json=json ) #第一个接口,登录 res2 = req.get(url=url2,headers=None,cookies=None) #第二个接口,获取用户信息,即便headers和cookies传空依旧保持 print(res1.text) print(res2.text) req.cookies.clear() time.sleep(2) res3 = req.request(method='post',url=url1 ,json=json) #第一个接口,登录 res4 = req.request(method='get',url=url2 ,headers=None,cookies=None) #第二个接口,获取用户信息,即便headers和cookies传空依旧保持 print(res3.text) print(res4.text) req.cookies.clear() time.sleep(2) res5 = req.post_requests(url=url1,json=json) #第一个接口,登录 res6 = req.get_requests(url=url2,headers=None,cookies=None) #第二个接口,获取用户信息 print(res5.text) print(res6.text) req.cookies.clear() time.sleep(2) res7 = req.post_requests(url=url1 ,json=json) #第一个接口,登录 req.cookies.clear() res8 = req.get_requests(url=url2,headers=None,cookies=None) #第二个接口,获取用户信息 print(res7.text) print(res8.text)
写cookie_dict保持登录
#写cookie_dict使其保持登录 import requests url1 = "http://127.0.0.1:9000/login" url2 = "http://127.0.0.1:9000/verify" json = {'username': '15669910105', 'password': 'a123456'} s = requests.Session() res3 = requests.post(url=url1 ,json=json) #第一个接口,登录 cookie_dict = res3.cookies.get_dict() requests.utils.add_dict_to_cookiejar(s.cookies, cookie_dict) #方法一、初始cookies #s.cookies.update(cookie_dict) #方法二、更新cookies #s.cookies = requests.utils.cookiejar_from_dict(cookie_dict) #方法三、cookiejar_from_dict(),将 dict 转换成一个 RequestsCookieJar 并赋值 res4 = s.get(url=url2 ,headers=None,cookies=None) #第二个接口,获取用户信息 print(res3.text) print(res4.text)
处理报错
s = requests.session() s.keep_alive = False #处理报错报错HTTPConnectionPool Max retires exceeded
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人