吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14010|回复: 15
收起左侧

[原创] 分析mangabz.com的漫画图片加载方式

  [复制链接]
h4ckm310n 发表于 2020-2-3 19:39
本帖最后由 h4ckm310n 于 2020-2-3 19:56 编辑

最近正在用python写一个下载在线漫画的程序,其中一个漫画网站就是这个mangabz.com。在加载图片的时候,图片并不是在网页中静态加载的,而是通过Ajax动态获取图片链接再显示。其实可以通过模拟浏览器访问的方式来直接获取,但是这样效率有点低,有没有别的方式呢?

打开浏览器的开发者工具,可以看到加载完成后的网页中包含了图片:
1.png

但是,这是动态加载后的结果,关闭JS之后再刷新,图片就加载不出来了:
2.png

翻一下JS内容,在chapter.js里面找到一个“ajaxloadimage()”,根据函数名字判断,这应该就是加载图片的关键。
3.png

在这个函数里,通过Ajax向chapterimage.ashx发送请求,那么请求的参数都是些啥呢?

其中,参数”key“的值mkey是一个空字符串,在函数开头就能看到。
其他几个值都是全大写,应该是常量,在chapter.js里找不到,不妨回到之前的章节网页去看看:
4.png

知道了URL和请求参数,现在可以看看这个请求得到了什么响应内容:
5.png

这是一段混淆过的JS脚本,试试看直接执行可以得到什么:
6.png

出现了!这个数组的第一项就是这一页的图片地址。


以上操作都是在浏览器中进行的,知道了过程,接下来就可以用python来操作了。

简单来说就是以下几个步骤:
1. 访问章节网址,得到网页内容(text)
2. 用正则表达式找到上述几个变量的值,对chapterimage.ashx发送请求,得到JS脚本
3. 用execjs模块运行这个脚本(execjs.eval()),得到图片的地址。
4. 如此访问每一页,直到得到404,说明已经访问了每一页,这样就得到了所有的图片。

附上python的代码片段:
[Python] 纯文本查看 复制代码
page_no = 1
img_urls = []

while True:
    page_url = url + '-p' + str(page_no) + '/'
    r = requests.get(page_url)
    if r.status_code == 404:
        break

    cid = re.compile('var MANGABZ_CID=[^;]*;').findall(r.text)[0].lstrip('var MANGABZ_CID=').rstrip(';')
    _mid = re.compile('var MANGABZ_MID=[^;]*;').findall(r.text)[0].lstrip('var MANGABZ_MID=').rstrip(';')
    _dt = re.compile('var MANGABZ_VIEWSIGN_DT=[^;]*;').findall(r.text)[0].lstrip('var MANGABZ_VIEWSIGN_DT="').rstrip('";')
    _sign = re.compile('var MANGABZ_VIEWSIGN=[^;]*;').findall(r.text)[0].lstrip('var MANGABZ_VIEWSIGN="').rstrip('";')

    img_ajax_url = page_url + 'chapterimage.ashx'
    params = {
        'cid': cid,
        'page': page_no,
        'key': '',
        '_cid': cid,
        '_mid': _mid,
        '_dt': _dt,
        '_sign': _sign
    }
    ajax_r = requests.get(img_ajax_url, headers=headers, params=params)
    img_url = execjs.eval(ajax_r.text)
    img_urls.append(img_url[0])
    page_no += 1



原文来自我的个人网站:https://ssjgoku.win/?p=461

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
陈世界 + 1 + 1 我很赞同!
exluku + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

雪莱鸟 发表于 2022-10-10 11:21

找到了,还用php写了个系统方便自己看漫画用,后来源断了就没法看了
王馨辉 发表于 2022-10-9 20:17
雪莱鸟 发表于 2020-2-3 23:21
一直在找个漫画“清道夫K”,只有顶通有,能把顶通安排了么。

找到了吗好兄弟
a2566219 发表于 2020-2-3 19:50
q510 发表于 2020-2-3 20:22
感谢楼主分享
雪莱鸟 发表于 2020-2-3 23:21
一直在找个漫画“清道夫K”,只有顶通有,能把顶通安排了么。
头像被屏蔽
gs1978 发表于 2020-2-3 23:32
提示: 作者被禁止或删除 内容自动屏蔽
xu520521 发表于 2020-2-4 02:03
发错地方了  请删除谢谢  抱歉啦
xu520521 发表于 2020-2-4 02:04
发错地方了  请删除谢谢  抱歉啦
xu520521 发表于 2020-2-4 02:05
发错地方了  请删除谢谢  抱歉啦
多幸运遇见baby 发表于 2020-2-4 10:59
谢谢@Thanks!
s_qiu 发表于 2020-2-4 12:25
有学到东西,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-24 10:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表