编程教育资源分享平台

网站首页 > 后端开发 正文

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

luoriw 2024-02-01 14:23:46 后端开发 9 ℃ 0 评论

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

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

背景

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

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

接口分析

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

请求参数内容

响应数据结果

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

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

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

参数加密分析

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

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

搜索过程

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

tenant

进入唯一的js文件之后,继续通过ctrl+f搜索tenant可以看到如下的内容:

可以清楚地看到sign参数的构成成分,下面我们一起简单地分析一下,加密之前的sign由什么内容组成。

首先是参数param,也就是我们这次请求压迫提交的参数,一个键值对格式的数据,然后再拼接了一个时间戳和一个固定的字符H, 得到原始数据之后调用了sha256加密的方式对数据进行了处理。

python模拟加密过程

现在我们已经知道了sign参数的加密方式以及加密的原始内容,接下来我们通过python构造出同样的内容以及同样的加密算法,来检查一下能否完成模拟加密的过程。


import hashlib


H = "kbn%&)@<?FGkfs8sdf4Vg1*+;`kf5ndl#34;
param = '{"no":"dy0019","data":{"rankType":5}}'
timestamp = '1613885007548'
# 需要加密参数
encrypt_data = "param=" + param + "×tamp=" + timestamp + "&tenant=1&salt=" + H

hs = hashlib.sha256()
hs.update(encrypt_data.encode('utf-8'))
sign = hs.hexdigest()
print(sign)

根据代码运行的结果,加密后结果与需要验证的sign一致,加密完成。

看到这里,我们的第一篇js网站逆向的内容就结束了,主要给大家分享了,遇到请求参数加密之后,如何冷静地对参数进行分析,以及如何查找参数的加密过程。

想要深入学习可以继续关注,接下来还会更新一系列具体的网站反爬虫的解决方案。

感谢关注~

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表
最新留言