最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲eval實(shí)現(xiàn)看漫畫漫畫柜mhgui實(shí)戰(zhàn)分析

 更新時(shí)間:2022年07月29日 10:27:44   作者:夢想橡皮擦  
這篇文章主要為大家介紹了Python爬蟲eval實(shí)現(xiàn)看漫畫漫畫柜mhgui實(shí)戰(zhàn)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

?? 看漫畫MHG mhgui 實(shí)戰(zhàn)分析

本文所有MHG使用 MHG 替代~

本次爬蟲采集的案例是MHG,該站點(diǎn)貌似本身就游走在法律的邊緣。

站點(diǎn)地址直接檢索即可進(jìn)入,在該目標(biāo)站點(diǎn),橡皮擦發(fā)現(xiàn)了 eval 加密的雙重用法。

頁面所有點(diǎn)位都無太大難點(diǎn),而且漫畫超多,但是當(dāng)點(diǎn)擊詳情頁的時(shí)候,發(fā)現(xiàn)加密點(diǎn)位了。

https://i.看評(píng)論區(qū).com/ps1/u/17287/cmdty/%E7%AC%AC01%E8%AF%9D/3.jpg.webp?e=1654230046&m=T-uqjbcgI-eyVGgsIsnjLw

其中比較關(guān)鍵的就是參數(shù) m,其余參數(shù)都比較容易猜到其含義。

  • %E7%AC%AC01%E8%AF%9D:第一話;
  • e:時(shí)間戳。

通過開發(fā)者工具的 DOM 事件綁定器

找到下一頁按鈕點(diǎn)擊事件,然后在下述位置添加斷點(diǎn)。

通過該斷點(diǎn)調(diào)試,發(fā)現(xiàn)參數(shù)在頁面加載時(shí)已經(jīng)生成,繼續(xù)尋找的意義不大,接下來要更換思路。

全局檢索關(guān)鍵字 m=,查看所有搜索結(jié)果之后,最終定位到 config.js 文件,即下圖代碼高亮位置。

截取相應(yīng)的代碼文件

如下所示,這代碼一眼看上去就能猜測是 eval 加密,但是其關(guān)鍵信息,例如 window["\x65\x76\x61\x6c"] 還是存在加密,下面我們優(yōu)先解決該值。

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, {}));

別看上述代碼長,但是當(dāng)我使用在線工具解密之后,得到了下面一段代碼。

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

但是這里并沒有前文的關(guān)鍵字參數(shù) m=T-uqjbcgI-eyVGgsIsnjLw,接下來我們?cè)谠创a中查看一下,看是否存在關(guān)鍵性信息。

得到的代碼段如下所示

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,
    {}
  )
);

此時(shí)關(guān)鍵信息逐漸出現(xiàn),我們重點(diǎn)解密該代碼段即可。

eval 函數(shù)解析

直接使用 eval 函數(shù)解析上述代碼,發(fā)現(xiàn)出現(xiàn)如下錯(cuò)誤。

但是 \x65\x76\x61\x6c 可以解碼為 eval 。

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

但是下述這段代碼出現(xiàn)了問題。

在結(jié)合剛才我們得到的一個(gè)莫名的加密函數(shù)。

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

此時(shí)還是無法得到最終的答案,然后可以看到代碼結(jié)構(gòu)發(fā)現(xiàn)下述規(guī)律,即代碼出現(xiàn)了相似的部分,并且都是 eval。

細(xì)心環(huán)節(jié),將代碼一點(diǎn)點(diǎn)翻譯成可逆向的

lzstring 解密字符串,然后手動(dòng)使用 split 函數(shù)進(jìn)行分隔,因?yàn)樯鲜龃a \x73\x70\x6c\x69\x63 解析出來竟然是 splic 函數(shù)。

谷歌開發(fā)者工具的控制臺(tái)中運(yùn)行下述代碼即可。

"||||||||||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();

此時(shí),一些關(guān)鍵參數(shù)都已經(jīng)得到了,例如 e 的值,m 的值。

以上就是Python爬蟲eval實(shí)現(xiàn)看漫畫漫畫柜mhgui實(shí)戰(zhàn)分析的詳細(xì)內(nèi)容,更多關(guān)于Python爬蟲eval看漫畫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python引入其他py文件或模塊

    python引入其他py文件或模塊

    本文主要介紹了python引入其他py文件或模塊,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • python+pytest接口自動(dòng)化之日志管理模塊loguru簡介

    python+pytest接口自動(dòng)化之日志管理模塊loguru簡介

    python中有一個(gè)用起來非常簡便的第三方日志管理模塊--loguru,不僅可以避免logging的繁瑣配置,而且可以很簡單地避免在logging中多進(jìn)程多線程記錄日志時(shí)出現(xiàn)的問題,甚至還可以自定義控制臺(tái)輸出的日志顏色,接下來我們來學(xué)習(xí)怎么使用loguru模塊進(jìn)行日志管理
    2022-05-05
  • 探索Python?random模塊隨機(jī)性神奇世界

    探索Python?random模塊隨機(jī)性神奇世界

    Python中的random模塊提供了豐富的工具和函數(shù),幫助我們生成隨機(jī)數(shù)、操作隨機(jī)序列,以及模擬隨機(jī)性事件,在本文中,我們將分享random模塊,了解它的基本用法、功能和應(yīng)用領(lǐng)域,并提供示例代碼來幫助你更好地理解隨機(jī)性的神奇世界
    2023-11-11
  • python使用xlsxwriter實(shí)現(xiàn)有向無環(huán)圖到Excel的轉(zhuǎn)換

    python使用xlsxwriter實(shí)現(xiàn)有向無環(huán)圖到Excel的轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了python使用xlsxwriter實(shí)現(xiàn)有向無環(huán)圖到Excel的轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • python操作mysql、excel、pdf的示例

    python操作mysql、excel、pdf的示例

    這篇文章主要介紹了python操作mysql、excel、pdf的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • 5分鐘教會(huì)你用Docker部署一個(gè)Python應(yīng)用

    5分鐘教會(huì)你用Docker部署一個(gè)Python應(yīng)用

    Docker是一個(gè)開源項(xiàng)目,為開發(fā)人員和系統(tǒng)管理員提供了一個(gè)開放平臺(tái),可以將應(yīng)用程序構(gòu)建、打包為一個(gè)輕量級(jí)容器,并在任何地方運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于如何通過5分鐘教會(huì)你用Docker部署一個(gè)Python應(yīng)用,需要的朋友可以參考下
    2022-06-06
  • python中實(shí)現(xiàn)控制小數(shù)點(diǎn)位數(shù)的方法

    python中實(shí)現(xiàn)控制小數(shù)點(diǎn)位數(shù)的方法

    今天小編就為大家分享一篇python中實(shí)現(xiàn)控制小數(shù)點(diǎn)位數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python正則表達(dá)式匹配和提取IP地址

    Python正則表達(dá)式匹配和提取IP地址

    這篇文章主要介紹了Python正則表達(dá)式匹配和提取IP地址的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Python 多線程搜索txt文件的內(nèi)容,并寫入搜到的內(nèi)容(Lock)方法

    Python 多線程搜索txt文件的內(nèi)容,并寫入搜到的內(nèi)容(Lock)方法

    今天小編就為大家分享一篇Python 多線程搜索txt文件的內(nèi)容,并寫入搜到的內(nèi)容(Lock)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python中動(dòng)態(tài)檢測編碼chardet的使用教程

    Python中動(dòng)態(tài)檢測編碼chardet的使用教程

    最近利用python抓取一些網(wǎng)上的數(shù)據(jù),遇到了編碼的問題。非常頭痛,幸運(yùn)的是找到了解決的方法,下面這篇文章主要跟大家介紹了關(guān)于Python中動(dòng)態(tài)檢測編碼chardet的使用方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07

最新評(píng)論

鄂托克前旗| 府谷县| 莎车县| 都兰县| 宜君县| 分宜县| 咸阳市| 那曲县| 敦煌市| 油尖旺区| 长乐市| 邵阳市| 城步| 怀安县| 乌拉特前旗| 拉孜县| 永胜县| 麻城市| 多伦县| 威信县| 山东省| 上杭县| 肇州县| 大安市| 木里| 东方市| 宁德市| 望都县| 馆陶县| 临沧市| 呼玛县| 中山市| 壶关县| 瓮安县| 阿拉善左旗| 前郭尔| 文成县| 久治县| 古浪县| 科技| 汝阳县|