第一篇文章中企名片的数据带有关键字,使得我们能够非常方便的定位到js文件中去。而对于无关键字的数据,可能会用到今天介绍的xhr断点定位:
视频参考:https://www.bilibili.com/video/BV1Gy421q7Fm?p=4&vd_source=1c1bd87c4da3354fc14f193d7119e8eb
示例网页:
https://www.xiniudata.com/industry/54e9866b42d2fdf3db9c986328ce4534/overview
首先还是打开检查观察包,在滑动加载页面后可以注意到这个包:
点击预览,可以看到其返回的密文数据:
由于数据d并不像之前的encrypt_data一样容易过滤和识别,因此不建议直接搜索过滤,这个时候复制这个包的路径并设置xhr断点:
刷新页面,断点会自动帮我们来到目标文件的位置,这个时候就可以开始查找了:
因为后端渲染的数据必须要通过JSON数据来进行交互,所有解密函数一定会包含JSON.parse()这个方法,所以我们直接以JSON.parse( 为关键字进行搜索,得到八个结果:
根据上一篇文章中所说的原则,可以确定其中第六个有可能是我们需要的解密方法:
先断点并手动运行到此处,在控制台试着输出:JSON.parse(y)
返回的是用户信息,并不是我们需要的企业信息,不要急,再执行两次次到断点,再次输出:JSON.parse(y),可以得到我们需要的数据:
因为每次网页会发送多个接口,可能会需要多次调试才能拿到我们需要的数据。
这个时候就得到了我们的解密主体,开始编写js解密文件:
试运行得到报错:
回去给相关部分打上断点:
再到控制台输出得到Object(u.a)
定位到函数定义处得到定义:
并将其添加到我们的js文件中。
记得要改名!!!
再试着运行获得报错:
这里可以直接以_keyStr为关键字进行搜索即可得到结果:
在方法d1中补充其定义,并再次运行文件获得报错:
可以看出是第二个u未定义,即:Object(u.b)。方法同上,此处省略。
最终可以成功解密数据,最后再与python交互,方法同第一篇文章一样: