zyhxhw 发表于 2019-12-18 08:03

爬小说时内容被js加密,怎么办?

学了爬虫后爬小说玩,一直比较顺利,可最近遇到了一个用js加密内容的小说,让我很是头疼。这个小说章节是:
https://www.sztjgold.com/chapter.html?1#mybookid=96803&bookid=108841&chapterid=48935289
通过抓包到得真实网址是:https://www.sztjgold.com/files/article/html555/108/108841/48935289.html
结果得到一堆英文数据,经查百度是js数据。 猜测小说内容、解密函数、小说参数等都在数据中,格式化后的js数据表面看起来也很完美,但用js工具运行时却老是提示错误,无法得到结果。猜测js数据中设计有让js运行出错的代码。浏览器能运行它,是因为浏览器在得到这段数据后先对数据进行了处理,去除其中的错误数据。但要找到浏览器是怎么处理的,就应该很熟悉浏览器前端及js知识了。后来看了很多的文章,说selenium可以抓取,试了一下,果然行。但处理速度很慢慢,有些时候还爬取不下来。所以想请教论坛的大牛们几个问题:
1、如何改写这段js数据?思路、方法及有什么工具。
2、除了使用selenium外,还有没有速度更快的方法?
附上我的方法:

coolcalf 发表于 2019-12-18 08:31

这两在才了解了一下油猴脚本,或许这是一个很好的解决方案

神器 发表于 2019-12-18 08:47

帮你顶一下                     

304775988 发表于 2019-12-18 09:03

看着像base64位加密,也有url_encode加密,也有不用加密被过滤掉的关键词,经过了几轮处理.

xu741852 发表于 2019-12-18 09:04

换个网站抓取

fergus1987 发表于 2019-12-18 09:09

谢谢楼主分享!

可爱的男孩子 发表于 2019-12-18 09:11

你确定内容是js加密?
目前的小说网可没这么高级
渲染到html中的一定是真实文本
最多搞嵌套结构让你复制错误

HA? 发表于 2019-12-18 09:12

是不是编码存在问题?
小说网站一般不会加密吧

znds 发表于 2019-12-18 09:18

这没被加密啊- -。

忧郁剑客 发表于 2019-12-18 09:50

哪有那么复杂,仔细看代码,人家帮你写好了
var jz='正在加载中.....(如果长时间加载不出来可以刷新页面)<br>';
//取正文
function get_content(){
        $("#txt").html(errorstr+jz);
        //取正文的url地址
        xid=Math.floor(bookid/1000)
        var url_get_data=ymurl+'/files/article/html555/'+xid+'/'+bookid+'/'+chapterid+'.html';
       
        var url_get_text=url_get_data;
        $.ajax({
                type: "GET",
                url: url_get_text,
                dataType: "script",
                cache: true,
                success: function(msg){
                        msg=cctxt;
                        //console.log('ajax返回后执行:'+url_get_text)
                        //console.log(msg)
                        //数据更新到页面
                        $("#txt").html(msg+errorstr);
                }
        });
}
上面的msg就是返回的小说正文,无加密。传入的是章节、小说ID之类的信息,返回给你没有加密的正文。也就意味你直接调用这个接口,完全就能遍历全部的小说章节
页: [1] 2 3
查看完整版本: 爬小说时内容被js加密,怎么办?