美文网首页
js逆向之红薯中文网小说信息的抓取

js逆向之红薯中文网小说信息的抓取

作者: 成长之路丶 | 来源:发表于2019-11-27 16:15 被阅读0次

由于快过年了工作比较忙,所以已经很久没有写文章了,今天我们要练习的网站是红薯中文网网页版手机版网站存在CSS伪类样式反爬,下次有机会再给大家讲解。

目标分析

红薯中文网网页版的反爬主要在于小说的正文内容,因此我们随便找一本小说然后进行分析,值得我们注意的是红薯中文网对小说的正文页禁用了鼠标右键,要检查网页元素(Ctrl+Shift+I)或者查看网页源代码(Ctrl+U)我们可以使用Chrome浏览器的快捷键:

Elements里渲染的页面 通过检查网页元素可以发现浏览器渲染后的数据并没有出现乱码,说明并没有上次我们讲到的字体反爬,我们再看看其网页源代码: 网页源代码 我们可以发现网页源代码里并没有我们想要的数据,而且如果我们学过Django和Flask的话,可以发现网页使用了类似与Django和Flask的模板语言,其实这是前端模板语言,这也说明页面数据可能通过Ajax的方式请求得到然后通过前端模板语言渲染到网页中,因此我们可以通过F12对网页进行抓包分析,然后找到这个获取数据的请求: Ajax请求数据 我们找到了这个获取数据的请求,但是我们发现这个响应的json数据里对小说内容进行了加密,这个加密我们之后再分析处理,我们先分析一下得到这个Ajax请求需要那些参数: Ajax请求详情 我们发现这个请求并没有什么加密参数,至于post提交的参数我们可以在小说目录页获取,这里就不说了,而且通过postman模拟请求我们还可以发现其实headers里的参数并不是全部都需要: PostMan模拟请求 既然获取这个Ajax请求没有问题,那接下来我们就需要逆向破解小说的正文内容了,因为这个请求是Ajax请求因此我们可以通过XHR/fetch Breakpoints来调试,在XHR/fetch Breakpoints添加断点名称填bookajax.do(加密文件的名称),然后重新刷新网页: 调试Ajax请求 然后我们按F10一步一步的进行调试,直到找到解密的小说内容: 解密前代码 解密前data.content
解密后 解密后data.content 可以发现data.content = utf8to16(hs_decrypt(base64decode(data.content), key));这段代码是解密的关键,找到解密方法我们分析解密函数按照之前的分析方法我们找到解密依赖utf8to16函数hs_decrypt函数(注意这个函数里还有str2long函数long2str函数需要我们获取)、base64decode函数以及key base64decode函数.png
hs_decrypt函数.png
接着我们再逆向key,发现重新调试key是在我们生成小说内容时之前生成的: 逆向key 我们也可以在Network看到这个获取key的请求: 抓包请求中的key 和之前获取内容的Ajax api接口是一样的,只是formdata提交的参数不一样,这里就不介绍了,可以自己去研究,找到了所以的解密依赖我们可以分析解密逻辑,也可以用python的js运行库来运行js,由于时间问题我就不去研究解密逻辑了,我直接用js运行库。

解密

至于发送请求获取key和加密content的请求代码我就不写了,我直接把解密代码贴出来,大家如果需要可以自己把剩下的代码补全:

import execjs

utf_to_changes = r"""
function utf8to16(str) {
    var out, i, len, c;
    var char2, char3;
    out = "";
    len = str.length;
    i = 0;
    while (i < len) {
        c = str.charCodeAt(i++);
        switch (c >> 4) {
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
            out += str.charAt(i - 1);
            break;
        case 12:
        case 13:
            char2 = str.charCodeAt(i++);
            out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
            break;
        case 14:
            char2 = str.charCodeAt(i++);
            char3 = str.charCodeAt(i++);
            out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0));
            break;
        }
    }
    return out;
}
"""



hs_decrypt = r"""
function hs_decrypt(str, key) {
    if (str == "") {
        return "";
    }
    var v = str2long(str, false);
    var k = str2long(key, false);
    var n = v.length - 1;
    var z = v[n - 1]
      , y = v[0]
      , delta = 0x9E3779B9;
    var mx, e, q = Math.floor(6 + 52 / (n + 1)), sum = q * delta & 0xffffffff;
    while (sum != 0) {
        e = sum >>> 2 & 3;
        for (var p = n; p > 0; p--) {
            z = v[p - 1];
            mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
            y = v[p] = v[p] - mx & 0xffffffff;
        }
        z = v[n];
        mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
        y = v[0] = v[0] - mx & 0xffffffff;
        sum = sum - delta & 0xffffffff;
    }
    return long2str(v, true);
};

function long2str(v, w) {
    var vl = v.length;
    var sl = v[vl - 1] & 0xffffffff;
    for (var i = 0; i < vl; i++) {
        v[i] = String.fromCharCode(v[i] & 0xff, v[i] >>> 8 & 0xff, v[i] >>> 16 & 0xff, v[i] >>> 24 & 0xff);
    }
    if (w) {
        return v.join('').substring(0, sl);
    } else {
        return v.join('');
    }
}
function str2long(s, w) {
    var len = s.length;
    var v = [];
    for (var i = 0; i < len; i += 4) {
        v[i >> 2] = s.charCodeAt(i) | s.charCodeAt(i + 1) << 8 | s.charCodeAt(i + 2) << 16 | s.charCodeAt(i + 3) << 24;
    }
    if (w) {
        v[v.length] = len;
    }
    return v;
}
"""

base64decode = r"""
    function base64decode(str) {
    var c1, c2, c3, c4, base64DecodeChars = new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);
    var i, len, out;
    len = str.length;
    i = 0;
    out = "";
    while (i < len) {
        do {
            c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        } while (i < len && c1 == -1);if (c1 == -1)
            break;
        do {
            c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        } while (i < len && c2 == -1);if (c2 == -1)
            break;
        out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
        do {
            c3 = str.charCodeAt(i++) & 0xff;
            if (c3 == 61)
                return out;
            c3 = base64DecodeChars[c3];
        } while (i < len && c3 == -1);if (c3 == -1)
            break;
        out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
        do {
            c4 = str.charCodeAt(i++) & 0xff;
            if (c4 == 61)
                return out;
            c4 = base64DecodeChars[c4];
        } while (i < len && c4 == -1);if (c4 == -1)
            break;
        out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
    }
    return out;
}
"""

def utf_encode(data):
    js_context = execjs.compile(utf_to_changes)
    ret3 = js_context.call('utf8to16',data)
    return ret3

def content_decrypt(data, key):
    js_context = execjs.compile(hs_decrypt)
    ret2 = js_context.call('hs_decrypt', data, key)
    return ret2

def base64_decode(data):
    js_context = execjs.compile(base64decode)
    ret = js_context.call('base64decode',data)
    return ret


key = "47541161"
content = r"""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"""

res = utf_encode(content_decrypt(base64_decode(content), key))
print(res)

代码运行结果截图:


运行结果

相关文章

  • js逆向之红薯中文网小说信息的抓取

    由于快过年了工作比较忙,所以已经很久没有写文章了,今天我们要练习的网站是红薯中文网网页版,手机版网站存在CSS伪类...

  • JS逆向之红薯中文网隐式CSS反爬

    已经很久没有写JS逆向相关的文章了,距离上一篇JS逆向文章的发布时间已经过了大半年了,之前把红薯中文网网页版的反爬...

  • js逆向之企名片公司信息的抓取

    最近应公司需求抓取企名片这个网站,抓取创业项目模块的信息,经过抓取分析发现这网站存在js加密,下面就让我们一步步的...

  • js逆向之百度翻译加密参数的破解

    又来到了我们的js逆向时间了,这次我们要抓取的是百度翻译的翻译信息,但是其请求存在加密参数,我们需要调试js来破解...

  • 网站

    纵横中文网,创世中文网,起点中文网,17阅读网,红薯小说,小说阅读网,潇湘书院,红袖添香,塔读小说… 起点、纵横、...

  • JS页面信息的抓取

    由于网页模块化的开发,很多网页的信息加载都是通过js完成的,单纯靠解析静态网页已不能完成需求,本文通过Phanto...

  • 进击node.js(一) node.js的安装 配置

    1.1 node.js的安装 建议去node.js中文网下载安装,下面链接是node.js中文网下载地址, h...

  • 正式开篇未发表小说声明

    本人原是创世中文网作者,笔名“唐尘”,创作小说《穹苍之巅》,但因自身工作和对于小说框架不甚满意之故,小说...

  • Python爬虫|JS逆向调试技巧大全

    当我们抓取网页端数据时,经常被加密参数、加密数据所困扰,如何快速定位这些加解密函数,尤为重要。本片文章是我逆向js...

  • js逆向技巧分享

    当我们抓取网页端数据时,经常被加密参数、加密数据所困扰,如何快速定位这些加解密函数,尤为重要。本片文章是我逆向js...

网友评论

      本文标题:js逆向之红薯中文网小说信息的抓取

      本文链接:https://www.haomeiwen.com/subject/hlbuwctx.html