解析煎蛋图片url的js加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解析煎蛋图片url的js加载相关的知识,希望对你有一定的参考价值。

参考技术A 刚开始学习爬虫的时候大概了解了一下scrapy,但是后面在工作中并没有使用scrapy,所以就忘记了大概的用法。最近想重新学习一下scrapy,就想爬一下煎蛋的妹子图练一下手,但是在实际操作的时候,发现请求返回的内容里面并没有图片的链接:

但是我们打开控制面板后,可以看到图片的 url :

所以我一开始以为它是异步加载的,但是查看网络传输的时候并没有看到它后续请求,所以就想着图片的地址会不会已经在返回的页面里,只是后续通 js 把它解析出来,所以再次回到返回的页面查看,发现了一个比较重要的东西, img-hash :

可以看出它一开始是一个空白的图片,然后在 onload 的时候会调用 jandan_load_img 方法加载图片,而img-hash就很有可能保存着图片的url

然后全局搜索 jandan_load_img 这个方法,可以发现它在一个 js 里面: http://cdn.jandan.net/static/min/xxxxxxxxxxxxxxxxxxxxxxx.js (在实际操作中名字不一定相同,但是路径都是一样的)。我们对这个函数下断点:

可以看到 e 就是 img-hash ,经过 S45fAAhlWwSoItVgdyMFW4jIPId52kxV 方法调用后返回的就是图片的url,我们再看一下这个函数:

这个函数除了将 hash 值解析出 url ( DECODE )之外,似乎还可以将进行加密操作( ENCODE ),但是我只需要解密部分的功能,所以在重写的时候只需要实现解密部分的功能就好了

python 实现如下:

decrypt() 方法中的 x 参数更新了:

当初测试时在两个新的会话中, x 的值是一样的,所以我就以为它是不变的,但是现在看来它是会周期性更新,所以需要从 js 中匹配出它的值 _pat = re.compile('f\.remove\(\);var c=.+?\(e,"(.+?)"\)') ,js地址可以从html中解析出。

以上是关于解析煎蛋图片url的js加载的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫之爬取煎蛋网妹子图

vue中动态加载图片报错

网页加载流程

用python来抓取“煎蛋网”上面的美女图片,尺度很大哦!哈哈

关于-Dom

关于-Dom