python爬虫之七_实践下载漫画之一

爬取了两个漫画网站,发现漫画网站防爬虫有如下共同点:
1.html页面带有一个date变量,data为加密的图片url数据;
2.data解密后得到的是该章节所有图片的url,即是一个list;
3.data的解码函数,是通过js执行后得到的,而产生解码函数的js代码是经过混淆的
4.产生的解码函数,一种是作为js内的函数来执行,另一种是单独存出来
5.所以漫画网站爬虫就两步:一:执行js找到解码函数;二:用解码函数解析data;
6.b站漫画反爬虫做的更好,一:禁止F12调试;二:html中看不到URL;待学习

一:爬虫腾讯动漫网 海贼王漫画
爬取漫画的难点:
1.图片的名字为随机字符串,无法由漫画中第一张图片的名字推得后面图片的名字;
2.异步,一个章节的所有图片在HTML中用List存放,且各图片的URL是逐渐加载的,滚轮滚到哪,该位置对应的图片才加载;

腾讯动漫:
网站特征
网站的坑:
1.代码混淆:
启发:
(1)对于开发者来说,代码混淆有好有坏,好处是破译难度变大,但由于并非是整个js文件都混淆了,所以混淆反倒标明了这段是核心代码,使得调试时更有目的性;
(2)对于被混淆的代码段,打断点,反复调试,看中间变量的值;找出目标数据是在哪一步出现的;
2.参数不清晰,网页加入随机数:window[nonce]
启发:
(1)如果经验丰富或者对JS熟悉,有些突然出现的变量,根据变量名以及值的结构能够看出变量是什么,如W=window,N=window[nonce]
(2)打断点看突然出现的参数的值,根据值的类型,判断是否能自己构建,
3.参数冗余,用完修改:
启发:对全局变量的监控,应该打断点分阶段输出其值,如页面加载最初、核心代码前后、页面加载完成,
启发:js是对html的操作,数据是不是都是通过html传来的,只不过是加密了,而js是对html中数据解密,得到真正有用的数据;
4.滚动条被设为空
启发:

Chrome的调试方法:
1.Chrome的控制台调试网页中的JS代码;
2.Chrome的控制台执行网页中的JS代码;

Node.js执行本地js文件的方法:

方法一:模拟浏览器
搜索资料历程:先接触到Selenium,后来看到Puppeteer,最后落到Pyppeteer
三种工具都是启动浏览器,模拟人的操作,

方法二:反混淆获取URL
搜索资料历程:先接触到execjs,后来看到js2py
参考:
https://www.jianshu.com/p/2da6f6ad01f0
https://blog.csdn.net/z_kqiang/article/details/88621144

方法三:本地缓存提取
感觉可以和按键精灵联合使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值