pufei漫画网GET请求解密

网站地址m.pufei.net,追更的有《驭灵师》、《狐妖小红娘》、《一人之下》、《戒魔人》

去年就写过它的爬虫,因为那会儿完全不懂js,所以是用selenium爬的,效率很低。

主要的解密代码

import execjs

cp = 'ZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4gYy50b1N0cmluZygzNil9O2lmKCEnJy5yZXBsYWNlKC9eLyx' \
     'TdHJpbmcpKXt3aGlsZShjLS0pe2RbYy50b1N0cmluZyhhKV09a1tjXXx8Yy50b1N0cmluZyhhKX1rPVtmdW5jdGlvbihlKXtyZXR1cm4gZFtlXX' \
     '1dO2U9ZnVuY3Rpb24oKXtyZXR1cm4nXFx3Kyd9O2M9MX07d2hpbGUoYy0tKXtpZihrW2NdKXtwPXAucmVwbGFjZShuZXcgUmVnRXhwKCdcXGInK' \
     '2UoYykrJ1xcYicsJ2cnKSxrW2NdKX19cmV0dXJuIHB9KCdkPVtcJzQvMi8xLzMvYy41LzBcJyxcJzQvMi8xLzMvYS41LzBcJyxcJzQvMi8xLzMv' \
     'OS41LzBcJyxcJzQvMi8xLzMvNi41LzBcJyxcJzQvMi8xLzMvNy41LzBcJyxcJzQvMi8xLzMvOC41LzBcJyxcJzQvMi8xLzMvYi41LzBcJyxcJzQ' \
     'vMi8xLzMvai41LzBcJyxcJzQvMi8xLzMvay41LzBcJyxcJzQvMi8xLzMvZS41LzBcJyxcJzQvMi8xLzMvaS41LzBcJyxcJzQvMi8xLzMvaC41Lz' \
     'BcJyxcJzQvMi8xLzMvZi41LzBcJyxcJzQvMi8xLzMvZy41LzBcJ10nLDIxLDIxLCd8Mjl8MDV8MDB8MjAxOXxqcGd8NTFiMjFkYzk1M3w1MWFiM' \
     'Tc3NWRjfDUxNGM0YjU5ZTB8NTE1NDQ5NDU0YXw1MWRiMGE3Y2NhfDUxNTEzYjViMzB8NTFlYjA1ZjE1NHxfY3VSc3w1MWI1YzVkNjVmfDUxYjc4' \
     'MDkxMTZ8NTE4ZDQyNjAyZXw1MTY2ODQxZjljfDUxNTQ2NTk5ODh8NTEzMGJiMDBkNnw1MWJjYzAxODJmJy5zcGxpdCgnfCcpLDAse30pKQo='


def get_urls(c_p):
    js_code = '''
    function base64decode(str) {
        var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        var 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 c1, c2, c3, c4;
        var i, len, out;
        len = str.length;
        i = 0;
        out = "";
        while (i < len) {
            do {
                c1 = base64DecodeChars[str.charCodeAt(i++) & 255]
            } while (i < len && c1 == -1);
            if (c1 == -1) {
                break
            }
            do {
                c2 = base64DecodeChars[str.charCodeAt(i++) & 255]
            } while (i < len && c2 == -1);
            if (c2 == -1) {
                break
            }
            out += String.fromCharCode((c1 << 2) | ((c2 & 48) >> 4));
            do {
                c3 = str.charCodeAt(i++) & 255;
                if (c3 == 61) {
                    return out
                }
                c3 = base64DecodeChars[c3]
            } while (i < len && c3 == -1);
            if (c3 == -1) {
                break
            }
            out += String.fromCharCode(((c2 & 15) << 4) | ((c3 & 60) >> 2));
            do {
                c4 = str.charCodeAt(i++) & 255;
                if (c4 == 61) {
                    return out
                }
                c4 = base64DecodeChars[c4]
            } while (i < len && c4 == -1);
            if (c4 == -1) {
                break
            }
            out += String.fromCharCode(((c3 & 3) << 6) | c4)
        }
        return out
    }
    function geturl(cp) {
        value = eval(eval(base64decode(cp).slice(4)));
        return value
    }
    '''
    js_context = execjs.compile(js_code)
    return js_context.call('geturl', c_p)


if __name__ == '__main__':
    print(get_urls(cp))
复制代码

返回的结果是一章里所有漫画的url

['2019/05/29/00/51eb05f154.jpg/0', '2019/05/29/00/51db0a7cca.jpg/0', '2019/05/29/00/515449454a.jpg/0', '2019/05/29/00/51b21dc953.jpg/0', '2019/05/29/00/51ab1775dc.jpg/0', '2019/05/29/00/514c4b59e0.jpg/0', '2019/05/29/00/51513b5b30.jpg/0', '2019/05/29/00/5130bb00d6.jpg/0', '2019/05/29/00/51bcc0182f.jpg/0', '2019/05/29/00/51b5c5d65f.jpg/0', '2019/05/29/00/5154659988.jpg/0', '2019/05/29/00/5166841f9c.jpg/0', '2019/05/29/00/51b7809116.jpg/0', '2019/05/29/00/518d42602e.jpg/0']
复制代码

参数cp在网页源代码里,使用正则提取,然后字符串切片

cp="\w+.*
复制代码

下一篇我会写出完整的爬取过程,并附上代码 juejin.im/post/5cfe1b…

转载于:https://juejin.im/post/5cf6272df265da1bd260d8ce

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值