WEB - token
token概念参考
session和token的区别
2. 用户注册后验证的激活链接也用到token。例如flask-mail实现这个功能。
详细看flasky中如何实现session和token
3. token可以防止csrf攻击,可以防止表单重复提交。
用Python模拟登录网站时需要获取authenticity_token。
原因: https://www.jianshu.com/p/d73e971da41c
注意: 模拟登录并不是进行CSRF攻击,只是模拟浏览器的行为
import requests
from bs4 import BeautifulSoup
# cookies中存了sessionID和其他信息,来验证身份和提供信息给服务器
# 存取cookies,因为登录页面和登录后的页面的cookies不同,所以如果登录成功后还是用登录前的cookies的话,操作会失败,返回到登录页面。
# 用update整合登录前后的cookies,因为可能有关联。
cookie_dict = {}
# 1. 获取authenticity_token,或者又叫csrf_token,防止表单重复提交,防止csrf攻击。其实就是token的功能。
# 发送http请求,获取登录页面
response1 = requests.get('https://github.com/login')
# 实例化文档解析器bs
s1 = BeautifulSoup(response1.text,'html.parser')
# 通过bs找到对应的标签对象,再找到token的值
token = s1.find(name='input',attrs={'name':'authenticity_token'}).get('value')
# 获取第一次请求(登录页面)的cookies,以字典的形式。因为requests的接口是要求传入的cookies是字典形式的。
cookie_dict.update(response1.cookies.get_dict())
# 2. 将用户名,密码和token,登录页面的cookies发送到服务端,post请求进行登录操作。
"""
utf8:✓
authenticity_token:ollV+avLm6Fh3ZevegPO7gOH7xUzEBL0NWdA1aOQ1IO3YQspjOHbfnaXJOtVLQ95BtW9GZlaCIYd5M6v7FGUKg==
login:asdf
password:asdf
commit:Sign in
"""
response2 = requests.post(
'https://github.com/session',
data={
"utf8": '✓',
"authenticity_token": token,
'login': 'xxx@qq.com',
'password': 'xxx',
'commit': 'Sign in'
},
cookies=cookie_dict
)
# print(response2.text)
# 3. 登录成功后,利用登录后的cookies。进行访问/settings/emails这个页面的操作
cookie_dict.update(response2.cookies.get_dict())
#
response3 = requests.get(
url='https://github.com/settings/emails',
cookies=cookie_dict
)
print(response3.text)
# 4. 操作成功后,将返回的页面写入文件中。(可以本地live server浏览)
with open('./test1111111.html','wb') as f:
f.write(response3.content)
4. 总结
token可保护重要的操作、服务,类似于session,是一种身份验证方法。不用每次都使用username和password去进行身份验证获得服务、操作权限。
WEB - token的更多相关文章
- 使用Json Web Token设计Passport系统
>>Token Auth机制 基于Token的身份验证是无状态的,我们不将用户信息存在服务器或Session中. 相比原始的Cookie+Session方式,更适合分布式系统的用户认证,绕 ...
- JWT【JSON Web Token】 简述
draft: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html http://tools.ietf.org/html/ ...
- 八幅漫画理解使用JSON Web Token设计单点登录系统
用jwt这种token的验证方式,是不是必须用https协议保证token不被其他人拦截? 是的.因为其实只是Base64编码而已,所以很容易就被解码了.如果你的JWT被嗅探到,那么别人就可以相应地解 ...
- JSON Web Token - 在Web应用间安全地传递信息(zhuan)
来自 http://blog.leapoahead.com/2015/09/06/understanding-jwt/ JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用 ...
- JSON Web Token
What is JSON Web Token? JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact a ...
- Web Token JWT
基于Token的WEB后台认证机制 JSON Web Token in ASP.NET Web API 2 using Owin 翻译:Token Authentication in ASP.NET ...
- [认证授权] 2.OAuth2(续) & JSON Web Token
0. RFC6749还有哪些可以完善的? 0.1. 撤销Token 在上篇[认证授权] 1.OAuth2授权中介绍到了OAuth2可以帮我们解决第三方Client访问受保护资源的问题,但是只提供了如何 ...
- Hacking JWT(JSON Web Token)
0x01 JWT工作流程 JSON Web Token(JWT)是一个非常轻巧的规范. 这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. JWT常被用于前后端分离,可以和Restful ...
- 什么是JWT(JSON WEB TOKEN)
转自于:http://www.jianshu.com/p/576dbf44b2ae 什么是JWT Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准( ...
- JSON Web Token - 在Web应用间安全地传递信息
转载自:http://blog.leapoahead.com/2015/09/06/understanding-jwt/ JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使 ...
随机推荐
- 关于java中MD5加密(可直接使用)
本文转自:http://www.cnblogs.com/solove/archive/2011/10/18/2216715.html 上部分是转载的关于字符串的加密,后半部分则比较全,包括字符串.文件 ...
- Springboot项目搭建(3)-shiro登录
shiro简述+实现简单登录:https://www.jianshu.com/p/7f724bec3dc3
- 转载:进程退出状态--waitpid status意义
最近遇到一个进程突然退出的问题,由于没有注册signalhandler所以没有捕捉到任何信号. 但是从log中看到init waitpid返回的status为0x008b,以前对status不是很了解 ...
- SQL语句 分组 多行合并成一行
,,'')) FROM Table d GROUP by Id 另外: sql 单引号转义:两个单引号转义为一个单引号 set @sql='STUFF((SELECT '','' + Names FR ...
- Vue - 实现双击显示编辑框;自动聚焦点击的显示框;点击编辑框外的地方,隐藏编辑框
实现这三个功能的踩坑记录. 1. 需求 在Vue中,有一个input, 双击时编辑文本,点击该input节点外的其他地方,则取消编辑. 那么这里有三个要实现的地方 第一是双击显示编辑框. 第二是自动聚 ...
- Steam游戏《Nine Parchments(九张羊皮纸)》修改器制作-[先使用CE写,之后有时间的话改用C#](2020年寒假小目标02)
日期:2020.01.09 博客期:122 星期四 [温馨提示]: 只是想要修改器的网友,可以直接点击此链接下载: 只是想要部分CT文件的网友,可以直接点击此链接下载: 没有博客园账号的网友,可以将页 ...
- PTA的Python练习题(十八)
第4章-20 求矩阵各行元素之和 遇到一个麻烦的事情: 上面a,b输入,如果一起输入转int会报错,因为int只能一对一 但是明明我分开来int了,下面第十行还是报错说我的b是string字符,难不成 ...
- Vue基础笔记2
目录 1. 如何获取Vue对象中的成员? 2. pre指定 3. for循环 4. todolist 5. 分隔符 6. computed 计算后的 7. vue的生命周期(讲解不全) 8. watc ...
- 连接(JOIN)
join 用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. INNER JOIN 从多个表中返回满足 JOIN 条件的所有行. INNER JOIN:如果表中有至少一个匹配,则返回行 L ...
- JSAJAX请求
let xmlHttp = new XMLHttpRequest();//创建发送请求的对象 //这是为了兼容IE的获取ajac请求对象的方法 // let getXmlHttpReq ...