2、但是这个登录接口,登录成功后有返回token,如下图
请求头带token
1、登录成功后继续操作其它页面,发现post请求的请求头,都会带有token参数
2、这种请求其实比cookie更简单,直接把登录后的token放到头部即可
token关联
1、用脚本实现登录,获取token参数,获取后传参到请求头就可以了
2、如果登录有验证码,前面的脚本登录步骤就省略了,自己手动登录后获取token
参考代码
1 # coding:utf-8
2 import requests
3 header = { # 登录抓包获取的头部
4 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
5 "Accept": "*/*",
6 "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
7 "Accept-Encoding": "gzip, deflate",
8 "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
9 "X-Requested-With": "XMLHttpRequest",
10 "Content-Length": "423",
11 "Connection": "keep-alive"
12 }
13 body = {"key1": "value1",
14 "key2": "value2"} # 这里账号密码就是抓包的数据
15 s = requests.session()
16 login_url = "http://xxx.login" # 自己找带token网址
17 login_ret = s.post(login_url, headers=header, data=body)
18 # 这里token在返回的json里,可以直接提取
19 token = login_ret.json()["token"]
20 # 这是登录后发的一个post请求
21 post_url = "http://xxx"
22 # 添加token到请求头
23 header["token"] = token
24 # 如果这个post请求的头部其它参数变了,也可以直接更新
25 header["Content-Length"]="9"
26 body1 = {
27 "key": "value"
28 }
29 post_ret = s.post(post_url, headers=header, data=body1)
30 print post_ret.content
小结
Token的意义及用法
一.Token的来源:
当客户端多次向服务端请求数据时,服务端就需要多次从数据库中查询用户名和密码并进行对比,判断用户名和密码是否正确,并作出相应提示。但这样无疑会增加服务器端的运行压力,是否可以有一种方式只需要验证用户就是之前的用
户而不需要每次在客户端请求数据时都需要查询数据库判断用户名和密码是否正确。在这种请求下,引入了token来解决服务器端多次访问数据库问题。
1、什么是Token:
Token是服务端端生成的一串字符串,作为客户端进行请求时辨别客户身份的的一个令牌。当用户第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
2、使用Token的目的:
Token的目的是为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
二. Token的运用流程:
1、当用户首次登录成功之后, 服务器端就会生成一个 token 值,这个值,会在服务器保存token值(保存在数据库中),再将这个token值返回给客户端;
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!