Python 爬虫进阶必备 | 某地方产权交易中心返回数据解密逻辑分析
点击上方“咸鱼学Python”,选择“加为星标”
第一时间关注Python技术干货!
图源:极简壁纸
今日网站
aHR0cHM6Ly93d3cuY2NwcmVjLmNvbS9wcm9qZWN0U2VjUGFnZS8jL2NxenI=
这个站来自咸鱼技术交流 4 群
蛮简单的
抓包分析与加密定位
打开目标页,点击下一页,可以捕获到下面的请求
除了请求参数是加密之外,请求的结果也是加密的需要解密
所以一个个分析看看
先分析请求参数
这里直接打上个xhr
断点
然后继续点击下一页,可以看到请求会断在send
的位置
这个时候h
就是请求参数加密后的结果,所以我们需要向上分析堆栈,分析参数是在什么位置加密的
向上分析堆栈可以找下面的位置
可以看到s
是提交的参数,经过了aes.encode
就变成密文了
所以aes.encode
就是请求参数的加密位置
现在来定位下返回值解密的地方
在上一步,我们分析出了关于请求参数的加密位置,xhr
断点位置的位置是send
,也就是请求数据发出的地方
当我们请求发出之后应该就是获取response
并处理的地方了,所以我们还是从xhr
的send
分析,不过这次是继续执行,而不是回溯堆栈
继续执行几步就可以发现下面的逻辑
这里就是数据解密的位置
加密分析
先看数据解密的部分,正好断点也在这里,我们直接单步进去分析,看看decryptCode
做了什么操作
单步进来之后可以看到上面的js
逻辑,看了一下js
中用到的逻辑,基本都是开头定义的变量,有几个是this.xxx
这样形式的变量,所以看下这里的this
是那个对象
可以看到这里的this.stringxxxx
指向的是
所以我们只要构造e
这个对象,在调用的时候实例化一下就可以直接调用了
这里直接把e
在整个function
扣出来,然后调用一下decryptCode
看是否能够返回明文
是可以正常解密的
现在来看看请求参数的加密是什么逻辑
进入aes.encode
后,可以看到这里的调用的是encode
和上面解密调用的是同一个对象下的不同方法,所以直接调用一下就完事了
这里整合一下放到python
中请求一下
完事~
好了,以上就是今天的全部内容了。
我是没有更新就在摸鱼的咸鱼
收到请回复~
我们下次再见。
对了,看完记得一键四连,这个对我真的很重要。