声明
本文仅供学习参考,切勿用于他途,违者后果自负!
前言
今天分析一个漫画网站,其中对于图片的url进行了加密。
目标网站:aHR0cHM6Ly9hYy5xcS5jb20vQ29taWMvY29taWNJbmZvL2lkLzUzMTA0MA==
接口网址:aHR0cHM6Ly9hYy5xcS5jb20vQ29taWNWaWV3L2luZGV4L2lkLzUzMTA0MC9jaWQvMQ==
参数分析
以某一页的漫画图片网址为例:https://manhua.acimg.cn/manhua_detail/0/16_21_28_0e84853acedcd70c1b6abceb783bb056
_2375.jpg/0
中间有一段参数进行了加密处理,通过观察源码能够发现网页中并没有图片的url信息,大概率是进行了js加密,防止爬虫去批量抓取。
随便找一个图片返回的包,点击Initiator
找到一个堆栈下断,重新刷新。
这里就已经生成了img的列表,继续搜索生成位置。
imgSrcList[i] = _o.url 每循环一次将列表添加一个元素,实际上就是不断的给列表的下标赋值(可能说法不够准确,能理解就行)。再来看看_o.url在哪里定义。3789行_o = imgobj[i],这里的imgob也是一个列表,继续寻找。
这里可以看到PICTURE这里赋值给imgobj,找PICTURE。
继续搜索 _v.picture就找不到了。
不知道这个_v在哪里生成定义的,遇到事情不要慌。往上翻一翻,看看有什么可疑的地方。
标记了数据,下方是一个自执行函数,有一个eval
函数。看到eval要打起精神。可能在这里就完成了加密。都知道eval是一个计算 JavaScript 字符串,并把它作为脚本代码来执行。对于eval加密怎么破解呢?可以直接将eval换成console.log进行输出就可以得到js的字符串。
放到本地格式化就可以得到结果,可以自己试一下。
尝试运行一下有几处报错。
输出一下W。
W是window对象,继续运行。
这回报了一个split属性没有定义。split是一个用于分割字符串的方法,那也就是W['DA' + 'TA']
在这里是没有定义的。
先拿到本地,继续运行。
又提示错误,定位到错误位置看一下。
N = W['n' + 'onc' + 'e']
不用说在这里也没有定义。
这两个值都拿到了,在本地运行一下。没有问题可以输出看一下结果。
复制url到浏览器看一下。
没得问题,这里就已经成功解密了。
现在还有一个要解决就是W的两个参数在哪里生成,搜索当前js文件是找不到的。找找源码。
用正则匹配一下放到js中调用就可以出结果了,然后持久化到本地就可以一直看漫画了,是不是很棒呢。