不同系统接口会有不同请求流程机制,常用比如cookies请求流程、session请求流程、token请求流程
1、cookies请求流程
下面例子是cookies请求处理处理,cookies请求处理比较简单,只需每次在请求头部带上cookies值即可
def test_login(): url = 'http://www.renren.com/ajaxLogin/login' params = {'1':'1','uniqueTimestamp':'20201418255'} datas = {'email':'xxxxx@163.com','icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login', 'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'} r = requests.post(url=url,params=params,data=datas) rt = r.text return r.cookies #返回cookies def test_profile(): url = 'http://www.renren.com/273782860/profile' r= requests.get(url=url,cookies=test_login()) #调用时带上cookies print(r.text)
2、session请求流程
session请求流程处理与cookies类似,session其实就是cookie中存放着一个sessionID,请求时会发送这个ID,客户端再次发送请求,需要在请求头里面(cookie)带上返回的sessionID
处理思路:
1、发送登录请求
2、登录成功后,把sessionID的信息返回给客户端
3、客户端再次发送请求,需要在请求头里面(cookie)带上返回的sessionID
def test_login(): url = 'http://www.renren.com/ajaxLogin/login' params = {'1':'1','uniqueTimestamp':'20201418255'} datas = {'email':'xxxxx@163.com','icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login', 'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'} r = requests.post(url=url,params=params,data=datas) rt = r.text return r.cookies #返回cookies def test_profile(): url = 'http://www.renren.com/273782860/profile' r= requests.get(url=url,cookies=test_login()) #调用时带上cookies print(r.text)
对cookies、session请求流程处理,还可以使用requests库中session会话进行处理
import requests import requests def test_login(): url = 'http://www.renren.com/ajaxLogin/login' params = {'1':'1','uniqueTimestamp':'20201418255'} datas = {'email':'xxxxxx,'icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login', 'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'} s = requests.session() #建立session会话 r = s.post(url=url,params=params,data=datas) rt = r.text return s #session def test_profile(): url = 'http://www.renren.com/273782860/profile' r= test_login().get(url=url) print(r.text)
3、token请求流程
token
令牌,是用户身份的验证方式。
最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。
token请求处理思路:
1)、发送请求登录
2)、登录成功后,服务端返回给客户端的响应数据中,包含了token
3)、客户端再次发送请求(比如查看各个人主页),那么就需要在客户端里面带上token,在请求中token参数一般有以下2种方式:
a、客户端的请求参数里面 {"user":3465,"token":"rtyuio45678fdg"}
b、在请求头里面
def login(): data={"username":"admin","password":"admin"} r=requests.post( url='http://127.0.0.1:5000/login', json=data) return r.json()['access_token'] #返回token def books(): headers={'Authorization':'jwt {0}'.format(login())} #请求头内包含token r=requests.get( url='http://127.0.0.1:5000/profile', headers=headers) #带上请求头 print(r.text)
cookies、session、token之间区别 (以下内容转载至 https://blog.csdn.net/qq_37939251/article/details/83511451)
token
令牌,是用户身份的验证方式。
最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。
对Token认证的五点认识
一个Token就是一些信息的集合;
在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;
服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;
session
会话,代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续。
cookie中存放着一个sessionID,请求时会发送这个ID;
session因为请求(request对象)而产生;
session是一个容器,可以存放会话过程中的任何对象;
session的创建与使用总是在服务端,浏览器从来都没有得到过session对象;
session是一种http存储机制,目的是为武装的http提供持久机制。
cookie
储存在用户本地终端上的数据,服务器生成,发送给浏览器,下次请求统一网站给服务器。
cookie与session区别
cookie数据存放在客户端上,session数据放在服务器上;
cookie不是很安全,且保存数据有限;
session一定时间内保存在服务器上,当访问增多,占用服务器性能。
session与token
作为身份认证,token安全行比session好;
Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。 而Token ,如果指的是OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对App 。其目的是让 某App有权利访问 某用户 的信息。
token与cookie
Cookie是不允许垮域访问的,但是token是支持的, 前提是传输的用户认证信息通过HTTP头传输;
token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。
参考链接:https://blog.csdn.net/qq_37939251/article/details/83511451