欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

遇到简单的token加密

程序员文章站 2022-07-14 09:17:23
...

前言

最近在使用python爬取字节跳动的招聘信息时,遇到了token加密,如图
遇到简单的token加密这里遇到了"x-csrf-token"这个请求头,上网查询资料才知道这是一个防范CSRF的攻击方法。
下面说一下如何**这个token加密,仅供参考。


一、"CSRF"是什么?

CSRF(Cross-site request forgery)也被称为 one-click attack或者 session riding,中文全称是叫「跨站请求伪造」。一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。

二、防范CSRF攻击方法

开启token验证:CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的cookie 来通过安全验证。要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有token或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

三、如何解密token

token 在用户登陆后产生并放于session之中然后在每次请求时把token 从 session 中拿出,与请求中的 token 进行比对,这里用session方法保存cookie。

import requests
session = requests.session()

然后去抓包,先清除cookie缓存,然后刷新会抓到一个叫token的包。
遇到简单的token加密
这里先访问token的那个包

r = session.post(url, headers=headers, data=data)

找到set-cookie的响应头,而且这个设置cookie参数包括了csrf的设置。那么这个接口我们就可以用来作为获取csrf校验值的接口。

cookies = session.cookies.get_dict()
cookies

然后使用unquote对cookies进行解码

from urllib.parse import unquote

unquote(cookies['atsx-csrf-token'])

最后使用 session访问想要的数据包就能成功访问了。

相关标签: python cookie