声明
本文仅供学习参考,切勿用于其他途径,违者后果自负!
前言
目标网站:aHR0cHM6Ly93d3cubGlhbmdodWFpcG8uY29tLyMvbGlzdGVkX3N0b2NrX2xpc3Q=
接口信息:aHR0cHM6Ly9hcGkubGlhbmdodWFpcG8uY29tL2hrX2lwby9nZXRfcGFnZWRfbGlzdGVkX3N0b2NrX2xpc3Q=
目标: 解密data
参数分析
通过抓包发现该接口返回了一串json数据,其中data部分是密文,由此推断有加密。所以解密数据是爬虫步骤的重中之重。
废话不多说,使用Initiator
搜寻堆栈,通过跟栈去寻找断点。
看到堆栈后随便打下一个断点,在这里我选择的是第一个断点。(因为这个网站打下其他断点断不下来)
OK,断点已经成功断下,点击下一页去让它重新断下。成功断下后,就要开始找data的解密位置了。
像诸如spread.js和vue.js这些文件,熟悉前端的同学都知道这是前端长使用的第三方库,所以在这里可以直接排除点。那么剩下的就只有这个3.60…….js
文件了。
点进去看一下,怎么搜索数据呢。
因为返回的是JSON格式的数据,所以数据肯定要反序列化然后返回到网页中去渲染。直接搜索JSON.parse
即可。
一共有八个地方,分别打上断点。重复老动作,翻页。松开之前的断点,却发现断点没有反应,难不成是找错了?
看来今天碰到拦路虎了,搞不下来。再见!
开个玩笑,我们辛辛苦苦找到了数据解密的位置,断点断不下来。经过分析确认没有找错位置。那么怎么解决断点断不下来的问题呢。
其实也很简单,可以使用Fiddler去替换网页中的文件,嫌麻烦也可以使用浏览器的Overrides功能去映射本地文件。这些方法都可以,哪种方便用哪个就行。
链接: Fiddler使用
首先将该js文件保存到本地,然后使用Fiddler替换完文件。再重新刷新页面,就会发现断点已经生效了。
在这里已经拿到结果了。
a.data是密文数据。
Object(o.a)解密数据。
最后通过JSON.parse反序列化
扣代码
F11多步入几次就可以跟进解密的地方。
就是一个标准的AES加密,可以选择扣代码,也可以选择使用第三方库去还原环境。
代码比较简单,直接调用crypto-js
库去还原了。
最后结果如下: