python 爬虫获取的数据加密 python的爬虫js加密_python 爬虫获取的数据加密

参数加密逻辑分析

先来抓包看看参数,如下图:

python 爬虫获取的数据加密 python的爬虫js加密_代码实现_02


这个参数的值看着像 Base64,不要着急下定论,先搜索参数名试试看。

python 爬虫获取的数据加密 python的爬虫js加密_逻辑分析_03


经过搜索参数名 password: 在文件中定位到3处疑似加密的位置。如下图。

python 爬虫获取的数据加密 python的爬虫js加密_python 爬虫获取的数据加密_04


这里有两种方法判断加密位置:

  • 给所有搜索到的结果位置打上断点,再次点击按钮看看进入到哪个断点当中。
  • 阅读上下文,观察分析大概的代码逻辑。(留意相关的变量名)

这里使用第一种方法,打上断点重新请求,可以看到成功断上了。

这里的 this.password 是测试的密码,我么需要分析的就是这个 this.encrypt 的逻辑是怎样的。

python 爬虫获取的数据加密 python的爬虫js加密_逻辑分析_05


进入到 this.encrypt 函数中,发现了熟悉的RSA加密的标志 this.publicKey

python 爬虫获取的数据加密 python的爬虫js加密_python 爬虫获取的数据加密_06


python 爬虫获取的数据加密 python的爬虫js加密_python 爬虫获取的数据加密_07


在文件中再搜索 publicKey,能够看到文件中已经声明了这个变量。

python 爬虫获取的数据加密 python的爬虫js加密_搜索_08


继续进函数内部看看逻辑,发现进入里面就是加密的逻辑代码了。

python 爬虫获取的数据加密 python的爬虫js加密_搜索_09


在整个流程分析下来,可以发现前面的传参部分,可以完全跳过,只要在JS加密逻辑代码中传入 publicKey 和 明文密码 就可以得出加密之后的密码了。

参数加密代码实现

接上面的,直接复制上面截图所示的全部代码。

然后在编辑器中这么写:

python 爬虫获取的数据加密 python的爬虫js加密_搜索_10


注意:前一千多行都是复制 js文件代码

接着运行一下,看看报错。

运行的报错提示,window is undefine,遇到这种情况我们可以试试在代码上加上window的声明。

python 爬虫获取的数据加密 python的爬虫js加密_代码实现_11


python 爬虫获取的数据加密 python的爬虫js加密_逻辑分析_12


再次运行看看,这里又提示 navigator is not defined

python 爬虫获取的数据加密 python的爬虫js加密_逻辑分析_13


这里我们在代码里重新声明 navigator 。

python 爬虫获取的数据加密 python的爬虫js加密_逻辑分析_14


再次运行就得到加密后的结果辽~~~。

python 爬虫获取的数据加密 python的爬虫js加密_python 爬虫获取的数据加密_15

总结

这次的加密是比较简单的RSA加密,使用文件中包含的公钥对密码的值进行加密,且Js代码没有进过混淆,适合新手练手增加手感。