前言:
而今同学们对“python简单数据加密”大致比较关注,咱们都需要分析一些“python简单数据加密”的相关内容。那么小编也在网络上收集了一些有关“python简单数据加密””的相关文章,希望大家能喜欢,各位老铁们快快来学习一下吧!Hello,我长沙吴彦祖又回来了~~
本次课程中,我们将会学习如何完成网站加密参数的逆向分析,本次的网站案例为
背景
前面我们讲过了,网站为什么会设置加密的参数,简单来讲一是加快网站框架的加载速度,二是屏蔽一些低端的爬虫程序,对于无法解密参数构成的程序是无法发起正常的网络请求的。
下面我们就正式开始对该网站的接口进行分析,准备好了嘛?
接口分析
在分析接口信息之前,首先通过浏览器自带的开发者工具,捕获多个不同的请求。
根据抓包请求显示的内容可以发现,想要获取到榜单数据,则必须要模拟发送请求。
想要模拟发送请求,则必须要先理解每一个参数的含义,其中每次请求会发生变化的参数为sign和timestamp。
经过观察分析之后可以发现timestamp为时间戳,因此我们只需要得到参数sign的加密方式,就能够模拟发送请求。
参数加密分析
在知道需要获取的加密参数之后,通过搜索请求参数的方式找到js加密的位置。
具体的搜索过程如下图所示:
依次多所有的请求参数进行搜索之后,可以发现在搜索参数tenant时,搜索返回的结果只有一个。
进入唯一的js文件之后,继续通过ctrl+f搜索tenant可以看到如下的内容:
可以清楚地看到sign参数的构成成分,下面我们一起简单地分析一下,加密之前的sign由什么内容组成。
首先是参数param,也就是我们这次请求压迫提交的参数,一个键值对格式的数据,然后再拼接了一个时间戳和一个固定的字符H, 得到原始数据之后调用了sha256加密的方式对数据进行了处理。
python模拟加密过程
现在我们已经知道了sign参数的加密方式以及加密的原始内容,接下来我们通过python构造出同样的内容以及同样的加密算法,来检查一下能否完成模拟加密的过程。
import hashlibH = "kbn%&)@<?FGkfs8sdf4Vg1*+;`kf5ndl$"param = '{"no":"dy0019","data":{"rankType":5}}'timestamp = '1613885007548'# 需要加密参数encrypt_data = "param=" + param + "×tamp=" + timestamp + "&tenant=1&salt=" + Hhs = hashlib.sha256()hs.update(encrypt_data.encode('utf-8'))sign = hs.hexdigest()print(sign)
根据代码运行的结果,加密后结果与需要验证的sign一致,加密完成。
看到这里,我们的第一篇js网站逆向的内容就结束了,主要给大家分享了,遇到请求参数加密之后,如何冷静地对参数进行分析,以及如何查找参数的加密过程。
想要深入学习可以继续关注,接下来还会更新一系列具体的网站反爬虫的解决方案。
感谢关注~
标签: #python简单数据加密 #python sha256加密