龙空技术网

python爬虫入门教程!某人点集——sign参数加密

吾爱python 87

前言:

而今同学们对“python简单数据加密”大致比较关注,咱们都需要分析一些“python简单数据加密”的相关内容。那么小编也在网络上收集了一些有关“python简单数据加密””的相关文章,希望大家能喜欢,各位老铁们快快来学习一下吧!

Hello,我长沙吴彦祖又回来了~~

本次课程中,我们将会学习如何完成网站加密参数的逆向分析,本次的网站案例为

背景

前面我们讲过了,网站为什么会设置加密的参数,简单来讲一是加快网站框架的加载速度,二是屏蔽一些低端的爬虫程序,对于无法解密参数构成的程序是无法发起正常的网络请求的。

下面我们就正式开始对该网站的接口进行分析,准备好了嘛?

接口分析

在分析接口信息之前,首先通过浏览器自带的开发者工具,捕获多个不同的请求。

请求参数内容

响应数据结果

根据抓包请求显示的内容可以发现,想要获取到榜单数据,则必须要模拟发送请求。

想要模拟发送请求,则必须要先理解每一个参数的含义,其中每次请求会发生变化的参数为sign和timestamp。

经过观察分析之后可以发现timestamp为时间戳,因此我们只需要得到参数sign的加密方式,就能够模拟发送请求。

参数加密分析

在知道需要获取的加密参数之后,通过搜索请求参数的方式找到js加密的位置。

具体的搜索过程如下图所示:

搜索过程

依次多所有的请求参数进行搜索之后,可以发现在搜索参数tenant时,搜索返回的结果只有一个。

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加密