声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!
【爬虫逆向案例】某名片网站js逆向—— data解密
- 1、前言
- 2、步骤
- 3、号外
1、前言
相信各位小伙伴在写爬虫的时候经常会遇到这样的情况抓取动态数据的时候 data 是一串加密数据,如下图所示:
接下来我们尝试解决一下这样的情况,本期咱们采集的是某名片网站
2、步骤
我们可以看到数据的存储格式都是字符,那我们先全局搜索 encrypt_data
进入到搜索出来的 js 文件中以后,再次全局搜索(注意:这里有一个小技巧,遇到这种data加密的数据,就全局搜索 JSON.parse ,省去我们慢慢调试 js 的时间,搜索以后会找到对应加密的函数
打上断点刷新页面或者切换网页中的下一页即可,断点断住以后我们可以发现 e 就是我们想要的东西
接下来,先将 这个function s(e)主函数复制出来,并且进行一些小的改写 因为 a.a 是可以不需要的
接下来 看里面return的函数结构,发现 a.a.decode 就是对e进行加密的函数,然后最外层就是o函数对整个进行处理,那么我们先选中 a.a.decode 进入这个函数的结构
那么我们需要将这个 function(t) 整个复制出来,复制到我们的 Pycharm 里面,并补充完整
接下来,我们就是需要将最外层的 o 函数找到,并且复制出来,和查找 decode 的方法一样
还是一样复制过来,怕复制错的话,可以把该 js 文件下载到本地,用 Pycharm 打开格式化一下,把需要的函数复制出来就行了。
到这个时候,我们的 js 文件大概是这样的,如下图所示:
我们可以先拿个数据测试一下,尝试运行一次,我们会发现报错了,
由图可见,var e = (t = String(t).replace(f, "")).length;
中使用的 f 未定义,我们返回 decode 的 js 文件中找找,肯定在那里面。
往上翻看看,f 立马就出来了
写入 f 后重新运行一遍,好家伙,又报错了,如下图所示:
这次是 l 没有找到,刚才咱们回去 js 找 f 的上边刚好就是 l ,刚好复制下去,重新运行一下,这数据不就出来了
后续有需求可以自己封装一下,请求回来数据解析入库。
3、号外
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!
【👇🏻👇🏻👇🏻关注我| 获取更多源码 | 定制源码】大学生毕设模板、期末大作业模板 、Echarts大数据可视化等! 「一起探讨 ,互相学习」!(vx:python812146)
以上内容技术相关问题😈欢迎一起交流学习👇🏻👇🏻👇🏻🔥