Sleazy Fork is available in English.

ComicRead

为漫画站增加双页阅读、翻译等优化体验的增强功能。百合会(记录阅读历史、自动签到等)、百合会新站、动漫之家(解锁隐藏漫画)、E-Hentai(关联 nhentai、快捷收藏、标签染色、识别广告页等)、nhentai(彻底屏蔽漫画、无限滚动)、Yurifans(自动签到)、拷贝漫画(copymanga)(显示最后阅读记录、解锁隐藏漫画)、PonpomuYuri、再漫画、明日方舟泰拉记事社、禁漫天堂、漫画柜(manhuagui)、漫画DB(manhuadb)、动漫屋(dm5)、绅士漫画(wnacg)、mangabz、komiic、MangaDex、無限動漫、新新漫画、熱辣漫畫、hitomi、SchaleNetwork、kemono、nekohouse、welovemanga

< Feedback on ComicRead

Review: Good - script works

§
Posted: 25. 04. 2024

请求支持新网站
无限动漫(漫画站) https://www.comicabc.com/

p.s.作者大大的插件很好用,大赞

§
Posted: 25. 04. 2024

新新漫画 https://www.77mh.nl/

§
Posted: 25. 04. 2024
Edited: 25. 04. 2024

以前折騰過

取得一話一集的圖片地址的代碼

無限動漫

//PC
let imgSrcTotal = window.ps; //圖片總數
let mainCode = [...document.scripts].find(s => s.textContent.includes("ge(e)")).textContent; //取得主要代碼
let [, keyCode] = mainCode.match(/ge\([^.]+\.src\s?=\s?([^;]+)/); //取得混淆過的關鍵代碼
let imgSrcArray = [];
for (let i = 1; i <= imgSrcTotal; i++) {
    let replaceText = "(" + i + ")";
    let code = keyCode.replace(/\(pp?\)/g, replaceText); //把關鍵代碼裡的(p)或(pp)替換成頁數(1)
    let runCode = new Function("return " + code)(); //使用匿名函式運行改好的代碼返回圖片地址,用eval(code);也行。
    let src = location.protocol + runCode; //補上協議湊成完整圖片地址
    imgSrcArray.push(src);
}
console.log(imgSrcArray);

//Mobile
let imgSrcTotal = window.ps; //圖片總數
let imgSrcArray = [];
for (let i = 1; i <= imgSrcTotal; i++) {
    let imgSrc = "https://img" + ss(c, 4, 2) + ".8comic.com/" + ss(c, 6, 1) + "/" + ti + "/" + ss(c, 0, 4) + "/" + nn([i]) + "_" + ss(c, mm([i]) + 10, 3, f) + ".jpg";
    imgSrcArray.push(imgSrc);
}
console.log(imgSrcArray);

新新漫畫

msg.split("|").map(path => location.hostname.includes("m.77mh") ? ImgSvrList + path : img_qianz + path);
hymbzAuthor
§
Posted: 30. 04. 2024

久等了,两个网站都更新支持了

hymbzAuthor
§
Posted: 30. 04. 2024

@tony0809 非常感谢!直接复制完事省了我很多功夫

§
Posted: 17. 09. 2024

無限動漫網站改版了

if ("unescape" in window) {
    const {
        ps,
        su,
        ti,
        nn,
        mm
    } = window;
    const code = [...document.scripts].find(s => s.textContent.includes("ge(e)")).textContent;
    const [, chapterId] = code.match(/img\s+s="(.{15})/);
    const getSrc = (id, p) => {
        let src = id + p;
        const a = src.substring(15);
        const b = eval(src.substring(0, 5));
        const c = eval(src.substring(5, 10));
        const d = eval(src.substring(10, 15));
        src = '%68%74%74%70s%3A%2F%2F%69%6D%67' + su(b, 0, 1) + '%2e%38%63%6f%6d%69%63%2e%63%6f%6d%2f' + su(b, 1, 1) + '%2F' + ti + '%2F' + c + '%2F' + nn(a) + '%5F' + su(d, mm(a), 3) + '%2E%6A%70%67';
        src = unescape(src);
        return src;
    };
    const srcs = new Array(ps).fill().map((_, i) => getSrc(chapterId, i + 1));
    console.log(srcs);
}
hymbzAuthor
§
Posted: 23. 09. 2024

@tony0809 非常感谢!脚本已更新

§
Posted: 23. 09. 2024

@tony0809 非常感谢!脚本已更新

好像又加了點髒東西

if ("ge" in window) {
    const code = [...document.scripts].find(script => script.textContent.includes("ge(e)")).textContent;
    const [, obfuscated_chapter_code] = code.match(/img\s+s="([^"]+)/);
    const chapter_code = obfuscated_chapter_code.replace(/'|\+\w\+/g, "");
    const getSrc = (a) => {
        const b = window[chapter_code.substring(0, 5)];
        const c = window[chapter_code.substring(5, 10)];
        const d = window[chapter_code.substring(10, 15)];
        const src = "https://img" + su(b, 0, 1) + ".8comic.com/" + su(b, 1, 1) + "/" + ti + "/" + c + "/" + nn(a) + "_" + su(d, mm(a), 3) + ".jpg";
        return src;
    };
    const srcs = Array.from({
        length: ps
    }, (v, i) => getSrc(i + 1));
    console.log(srcs);
}
hymbzAuthor
§
Posted: 25. 09. 2024

@tony0809 非常感谢!脚本已更新

§
Posted: 26. 09. 2024

無限動漫的前端開發是有在看這邊嗎?
一直改前端代碼這次混淆到不能從script著手
加強了代碼混淆但環境變量依然有解密後的html
反而降低了拿圖片網址的難度

if ("xx" in window) {
    const html = decodeURIComponent(window.xx);
    const srcs = html.match(/\/\/[^"]+/g).map(e => location.protocol + e);
    console.log(srcs);
}
hymbzAuthor
§
Posted: 27. 09. 2024

@tony0809 😂可能最近刚好在刷kpi吧(

§
Posted: 07. 10. 2024

換來換去的很好玩嗎...
換湯不換藥,要嘛解密code,要嘛直接能提取網址,揉合一下能用到出現第三種加密。

if ("xx" in window) {
    const {
        su,
        ti,
        nn,
        mm,
        xx
    } = window;
    const getSrc = (code) => {
        const a = code.substring(15);
        const b = window[code.substring(0, 5)];
        const c = window[code.substring(5, 10)];
        const d = window[code.substring(10, 15)];
        const src = "https://img" + su(b, 0, 1) + ".8comic.com/" + su(b, 1, 1) + "/" + ti + "/" + c + "/" + nn(a) + "_" + su(d, mm(a), 3) + ".jpg";
        return src;
    };
    const html = decodeURIComponent(xx);
    const codes = html.matchAll(/ s="([^"]+)"/g);
    const srcs = [...codes].map(([, code]) => {
        if (code.startsWith("//")) {
            return window.location.protocol + code;
        } else if (code.replace(/\d+$/, "").length === 15) {
            return getSrc(code);
        } else {
            return null;
        }
    });
    console.log(srcs);
}

Post reply

Sign in to post a reply.