今日网站
aHR0cCUzQS8vemhpc2h1LmJhaWR1LmNvbS92Mi9tYWluL2luZGV4Lmh0bWwlMjMvdHJlbmQvJTI1RTglMjU4NSUyNUJFJTI1RTglMjVBRSUyNUFGJTNGd29yZHMlM0QlMjVFOCUyNTg1JTI1QkUlMjVFOCUyNUFFJTI1QUY=
前面写了多篇文章是关于加密参数加密的,今天写一篇关于返回值解密的文章,供各位大佬参考
抓包分析与加密定位
先来看看需要分析的结果,可以看到页面是存在时间轴与指数值两个值的,我们现在就是要抓取这个指数轴的值
经过简单分析,看到下面这个请求有一串的 data 值是以密文的形式返回的,我们大胆猜测这就是加密的返回结果,页面一定存在解密的逻辑来解密这段 data
可以看到这个加密的结果是有 3 段,分别是 pc 、 all 与 wise ,这里解密的逻辑用的应该是同一个,所以我们只要分析一个出来就行了。
分别搜索 data 、 pc 、 wise 等关键次都没有找到加密的逻辑, xhr 断点也试了,也没有找解密的逻辑。
通过参考之前写过的 稀牛数据 的文章还有我在之前写过的一些基础文章中提到的可以通过检索 加解密 的关键词来定位的思路
突然想到还有解密的关键词 decrypt 可以再试试
果不其然,让我找到了下面这些结果
我追进去打上断点,果然就是我们需要的逻辑(希望所有的前端工程师都能写好注释)
也可以通过堆栈找到上一层逻辑来确认
加密逻辑分析
这个逻辑很清楚,我们直接复制出来看看能不能解密
完事,这个逻辑非常简单
这个逻辑也可以复写成 Python 版本
def decrypt_data(password, data): n = list(password) i = list(data) a = {} result = [] ln = int(len(n) / 2) start = n[ln:] end = n[:ln] for j, k in zip(start, end): a.update({k: j}) for j in data: result.append(a.get(j)) return ''.join(result)
以上就是今天的全部内容了,咱们下次再会~
查看更多关于Python 爬虫进阶必备 | 某指数分析平台解密逻辑分析的详细内容...