iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫eval实现看漫画漫画柜mhgui实战分析
  • 260
分享到

Python爬虫eval实现看漫画漫画柜mhgui实战分析

2024-04-02 19:04:59 260人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录⛳️ 看漫画MHG mhgui 实战分析通过开发者工具的 DOM 事件绑定器截取相应的代码文件eval 函数解析⛳️ 看漫画MHG mhgui 实战分析 本文所有MHG使用 MH

⛳️ 看漫画MHG mhgui 实战分析

本文所有MHG使用 MHG 替代~

本次爬虫采集的案例是MHG,该站点貌似本身就游走在法律的边缘。

站点地址直接检索即可进入,在该目标站点,橡皮擦发现了 eval 加密的双重用法。

页面所有点位都无太大难点,而且漫画超多,但是当点击详情页的时候,发现加密点位了。

https://i.看评论区.com/ps1/u/17287/cmdty/%E7%AC%AC01%E8%AF%9D/3.jpg.WEBp?e=1654230046&m=T-uqjbcgI-eyVGgsIsnjLw

其中比较关键的就是参数 m,其余参数都比较容易猜到其含义。

  • %E7%AC%AC01%E8%AF%9D:第一话;
  • e:时间戳。

通过开发者工具的 DOM 事件绑定器

找到下一页按钮点击事件,然后在下述位置添加断点。

通过该断点调试,发现参数在页面加载时已经生成,继续寻找的意义不大,接下来要更换思路。

全局检索关键字 m=,查看所有搜索结果之后,最终定位到 config.js 文件,即下图代码高亮位置。

截取相应的代码文件

如下所示,这代码一眼看上去就能猜测是 eval 加密,但是其关键信息,例如 window["\x65\x76\x61\x6c"] 还是存在加密,下面我们优先解决该值。

window["\x65\x76\x61\x6c"](function(i, k, a, n, m, an) {
    m = function(a) {
        return (a < k ? "" : m(window["\x70\x61\x72\x73\x65\x49\x6e\x74"](a / k))) + ((a = a % k) > 35 ? window["\x53\x74\x72\x69\x6e\x67"]["\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65"](a + 29) : a["\x74\x6f\x53\x74\x72\x69\x6e\x67"](36))
    }
    ;
    if (!''["\x72\x65\x70\x6c\x61\x63\x65"](/^/, window["\x53\x74\x72\x69\x6e\x67"])) {
        while (a--)
            an[m(a)] = n[a] || m(a);
        n = [function(m) {
            return an[m]
        }
        ];
        m = function() {
            return '\\\x77\x2b'
        }
        ;
        a = 1
    }
    ;while (a--)
        if (n[a])
            i = i["\x72\x65\x70\x6c\x61\x63\x65"](new window["\x52\x65\x67\x45\x78\x70"]('\\\x62' + m(a) + '\\\x62','\x67'), n[a]);
    return i
}('\x72 \x41\x3D\x28\x78\x28\x29\x7b\x72 \x6c\x69\x74"]('\x7c'), 0, {}));

别看上述代码长,但是当我使用在线工具解密之后,得到了下面一段代码。

function(f){return LZString.decompressFromBase64(this).split(f)}

但是这里并没有前文的关键字参数 m=T-uqjbcgI-eyVGgsIsnjLw,接下来我们在源码中查看一下,看是否存在关键性信息。

得到的代码段如下所示

window["\x65\x76\x61\x6c"](
  (function (p, a, c, k, e, d) {
    e = function (c) {
      return (
        (c < a ? "" : e(parseInt(c / a))) +
        ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
      );
    };
    if (!"".replace(/^/, String)) {
      while (c--) d[e(c)] = k[c] || e(c);
      k = [
        function (e) {
          return d[e];
        },
      ];
      e = function () {
        return "\\w+";
      };
      c = 1;
    }
    while (c--)
      if (k[c]) p = p.replace(new RegExp("\\b" + e(c) + "\\b", "g"), k[c]);
    return p;
  })(
    'U.k({"F":i,"E":"D","C":"i.a","B":A,"z":"f","y":["1.a.b","2.a.b","3.a.b","4.a.b","5.a.b","6.a.b","7.a.b","8.a.b","9.a.b","%x%w%v%c%t%G%d%g%h%r.4.1%q.a.b","%p%j%o%c%j%n%c%l%I%d%H%P%d%g%h.a.b"],"J":W,"Y":11,"Z":"/12/u/X/V/f/","10":1,"S":"","R":Q,"O":0,"N":{"e":M,"m":"T-L-K"}}).s();',
    62,
    65,
    "D41hWAODmwO4FMBGlgFECs6CcJA03gAwCMgu9HACCRwAQlgMzbYBMVAHNcAJYC20aigEMALGoCtWIbADFg2DmgBswJriasWwSACcEASQB2nIbLqSAwjT7oALMABmnADYIAzsADG+gdwTAMGVgB2YI9OABNgFE53YEBIm0ANvMAQt0BavUBbtUivH0jwsTYsViUHQxcACwQIhabpADUAcWgXXRd9cAAZOGAAVwBHcCR3aF1gIgUMayY6AgJrJRdHTR0AN10I1it/IMCJfQQADyEVyMcAe3cAawB9dxjgAGUAWQAJD24woUr7AUcXXyJAtUCwGC+k0whKwBcIiEnTcmhcRCAA="[
      "\x73\x70\x6c\x69\x63"
    ]("\x7c"),
    0,
    {}
  )
);

此时关键信息逐渐出现,我们重点解密该代码段即可。

eval 函数解析

直接使用 eval 函数解析上述代码,发现出现如下错误。

但是 \x65\x76\x61\x6c 可以解码为 eval

console.log('\x65\x76\x61\x6c')
16:42:45.372 VM251:1 eval

但是下述这段代码出现了问题。

在结合刚才我们得到的一个莫名的加密函数。

function(f){return LZString.decompressFromBase64(this).split(f)}

可以试着用 python 解密一下上述代码段,而且 Python 中恰好有同名第三方模块。

pip install lzstring

直接解密加密字符串即可。

import lzstring
x = lzstring.LZString()
decompressed = x.decompressFromBase64(
    'D41hWAODmwO4FMBGlgF加密字符串AA=')
print(decompressed)

得到的信息如下所示,变得越来越清楚了。

||||||||||jpg|webp|E5|E9||第01话|A1|B5|39921|8B|imgData|88||9F|9B|E6|29|2821|preInit|93||9C|BD|E4|files|cname|558777|cid|bpic|沉默的庭园|bname|bid|81|85|86|finished|eyVGgsIsnjLw|uqjbcgI|1654230046|sl|prevId|8D|558778|nextId|block_cc||S
MH|cmdty|false|17287|len|path|status||ps1

此时还是无法得到最终的答案,然后可以看到代码结构发现下述规律,即代码出现了相似的部分,并且都是 eval。

细心环节,将代码一点点翻译成可逆向的

lzstring 解密字符串,然后手动使用 split 函数进行分隔,因为上述代码 \x73\x70\x6c\x69\x63 解析出来竟然是 splic 函数。

谷歌开发者工具的控制台中运行下述代码即可。

"||||||||||jpg|webp|E5|E9||第01话|A1|B5|39921|8B|imgData|88||9F|9B|E6|29|2821|preInit|93||9C|BD|E4|files|cname|558777|cid|bpic|沉默的庭园|bname|bid|81|85|86|finished|eyVGgsIsnjLw|uqjbcgI|1654230046|sl|prevId|8D|558778|nextId|block_cc||SMH|cmdty|false|17287|len|path|status||ps1".split(
  "|"
);

得到的信息如下所示。

[
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "jpg",
  "webp",
  "E5",
  "E9",
  "",
  "第01话",
  "A1",
  "B5",
  "39921",
  "8B",
  "imgData",
  "88",
  "",
  "9F",
  "9B",
  "E6",
  "29",
  "2821",
  "preInit",
  "93",
  "",
  "9C",
  "BD",
  "E4",
  "files",
  "cname",
  "558777",
  "cid",
  "bpic",
  "沉默的庭园",
  "bname",
  "bid",
  "81",
  "85",
  "86",
  "finished",
  "eyVGgsIsnjLw",
  "uqjbcgI",
  "1654230046",
  "sl",
  "prevId",
  "8D",
  "558778",
  "nextId",
  "block_cc",
  "",
  "SMH",
  "cmdty",
  "false",
  "17287",
  "len",
  "path",
  "status",
  "",
  "ps1",
];

然后将其替换到上述 JS 中,使用解密工具直接在线解析。

SMH.imgData({
  bid: 39921,
  bname: "沉默的庭园",
  bpic: "39921.jpg",
  cid: 558777,
  cname: "第01话",
  files: [
    "1.jpg.webp",
    "2.jpg.webp",
    "3.jpg.webp",
    "4.jpg.webp",
    "5.jpg.webp",
    "6.jpg.webp",
    "7.jpg.webp",
    "8.jpg.webp",
    "9.jpg.webp",
    "%E4%BD%9C%E5%93%81%E9%A1%B5%2821.4.1%29.jpg.webp",
    "%E6%8B%9B%E5%8B%9F%E5%88%86%E9%85%8D%E9%A1%B5.jpg.webp",
  ],
  finished: false,
  len: 11,
  path: "/ps1/u/17287/cmdty/第01话/",
  status: 1,
  block_cc: "",
  nextId: 558778,
  prevId: 0,
  sl: { e: 1654230046, m: "T-uqjbcgI-eyVGgsIsnjLw" },
}).preInit();

此时,一些关键参数都已经得到了,例如 e 的值,m 的值。

以上就是python爬虫eval实现看漫画漫画柜mhgui实战分析的详细内容,更多关于Python爬虫eval看漫画的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python爬虫eval实现看漫画漫画柜mhgui实战分析

本文链接: https://www.lsjlt.com/news/119666.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python爬虫eval实现看漫画漫画柜mhgui实战分析
    目录⛳️ 看漫画MHG mhgui 实战分析通过开发者工具的 DOM 事件绑定器截取相应的代码文件eval 函数解析⛳️ 看漫画MHG mhgui 实战分析 本文所有MHG使用 MH...
    99+
    2024-04-02
  • Selenium&PhantomJS实战二:爬取漫画
    准备环境一般来说在线看漫画的网站都会使用JavaScript来返回页面,打开百度搜索在线漫画,如下图:目标网站: http://www.1kkk.com 极速漫画,选取一个漫画爬取 http://www.1kkk.com/manh...
    99+
    2023-01-30
    实战 漫画 Selenium
  • python实战之PyQt5实现漫画脸
    目录最终效果前言1.PyQt5的安装。2.qt designer 布局的使用。3.百度智能云api的调用。4.调控界面的控件。5.最终成果6.总结最终效果 前言 这是最近在学qt这...
    99+
    2024-04-02
  • Python实战项目用PyQt5制作漫画脸GUI界面
    目录最终效果前言1.PyQt5的安装。1.PyQt5库的安装。2.qt designer 布局的使用。1:打开这个设计师2:创建一个窗口3:设计界面,用鼠标拖动左边的控件。4:ui转...
    99+
    2024-04-02
  • 基于Python实现视频转字符画动漫小工具
    目录导语正文一、准备中二、原理简介三、代码演示四、效果展示导语 ​哈喽!boys and  girls 我是每天疯狂赶代码的木木子~ 今天带大家来点儿好玩儿的东西,我想你们肯定是喜欢...
    99+
    2024-04-02
  • 基于Python如何实现视频转字符画动漫小工具
    本篇文章给大家分享的是有关基于Python如何实现视频转字符画动漫小工具,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。导语今天带大家来点儿好玩儿的东西,我想你们肯定是喜欢的!上...
    99+
    2023-06-22
  • 如何利用ChatGPT和Python实现用户画像分析功能
    如何利用ChatGPT和Python实现用户画像分析功能引言:随着互联网的迅猛发展和普及,人们在网络上留下了大量的个人信息。对于企业来说,了解用户的兴趣和偏好,为其提供个性化的服务,已经成为提高用户黏性和市场竞争力的重要手段之一。本文将介绍...
    99+
    2023-10-27
    ChatGPT 用户画像 Python编程
  • Python实战实现爬取天气数据并完成可视化分析详解
    目录实现需求:爬虫代码:实现需求: 从网上(随便一个网址,我爬的网址会在评论区告诉大家,dddd)获取某一年的历史天气信息,包括每天最高气温、最低气温、天气状况、风向等,完成以下功能...
    99+
    2024-04-02
  • python 实现k-means聚类算法 银行客户分组画像实战(超详细,附源码)
    想要数据集请点赞关注收藏后评论区留言留下QQ邮箱 k-means具体是什么这里就不再赘述,详情可以参见我这篇博客 k-means 问题描述:银行对客户信息进行采集,获得了200位客户的数据,客户特征包括以下四个1:社保号码 2:姓名 ...
    99+
    2023-09-09
    聚类 kmeans 数据挖掘 python 机器学习
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作