圖片全載-FancyboxV5

支持寫真、H漫、漫畫的網站1000+,圖片全量加載,簡易的看圖功能,漫畫無限滾動閱讀模式,下載壓縮打包,如有下一頁元素可自動化下載。

< 腳本圖片全載-FancyboxV5的回應

評論:正評 - 腳本一切正常

§
發表於:2024-07-26

大佬看下这个网站http://www.m2ph.xyz/没聚合

tony0809作者
§
發表於:2024-07-26

大佬看下这个网站http://www.m2ph.xyz/没聚合

之前的版本叫雅拉图
http://www.yalatu.com/

新版网站我这不知道为什么没法注册,需要有人私信提供帐密让我测试。

tony0809作者
§
發表於:2024-07-26

网页使用了SPA技术和ShadowRoot Web API,太高端了不知道如何捕获图集ID,脚本无法支持。

取得图集数据的API

fetch("http://219.151.178.59:39002/Image/ImageUrl", {
    "headers": {
        "content-type": "application/json; charset=utf-8"
    },
    "body": "{\"type\":type,\"imageId\":imageId}",
    "method": "POST"
}).then(res => res.json()).then(json => {
    const {
        data,
        title
    } = json;
    const paths = JSON.parse(data);
    const base = "http://219.151.178.59:39005/data1";
    const srcs = paths.map(p => base + p);
    console.log("\n图集名称\n", title);
    console.log("\n图片网址\n", srcs);
});
tony0809作者
§
發表於:2024-09-15

重新研究了一下,登入後原來有存在本地的資料,剛好能拿到需要的ID。
ShadowRoot目前還是open模式,還能簡單拿到IP,如果改成closed基本上就沒戲了,IP一變腳本就失效,也不知道這規則能撐多久。

    , {
        name: "美图坊",
        host: ["m2ph.xyz", "www.m2ph.xyz"],
        reg: () => fun.checkUrl({
            h: "m2ph.xyz"
        }) && ["flutter.password", "flutter.account", "flutter.HistoryImage"].every(k => k in localStorage),
        getStorage: () => JSON.parse(JSON.parse(localStorage["flutter.HistoryImage"]))[0],
        getImg: () => document.querySelector("flt-glass-pane")?.shadowRoot?.querySelector("img"),
        getImgSrc: () => _this.getImg()?.src,
        getBase: () => {
            let base;
            if (_this.getImgSrc()?.includes("/cover")) {
                [base] = _this.getImgSrc()?.split("/cover");
            } else {
                base = _this.getImgSrc()?.replace(/(\/image)(\/image)?\/.+$/, "$1");
            }
            return base;
        },
        getHost: () => new URL(_this.getBase()).hostname,
        init: async () => {
            await fun.wait(() => !!_this.getImg());
            let firstImageId = _this.getStorage().imageId;
            document.addEventListener("click", (event) => {
                if (event.target.nodeName === "FLUTTER-VIEW") {
                    setTimeout(async () => {
                        await fun.wait(() => !!_this.getImg());
                        let id = _this.getStorage().imageId;
                        if (firstImageId != id) {
                            firstImageId = id;
                            await captureSrcB();
                            debug(`\n自定義標題:${customTitle}`);
                            debug("\n此頁JSON資料\n", siteJson);
                        }
                    }, 1000);
                }
            }, true);
        },
        imgs: () => {
            let {
                type,
                imageId
            } = _this.getStorage();
            fun.showMsg(displayLanguage.str_05, 0);
            return fetch(`http://${_this.getHost()}:39002/Image/ImageUrl`, {
                "headers": {
                    "content-type": "application/json; charset=utf-8"
                },
                "body": `{\"type\":${type},\"imageId\":${imageId},\"fromMem\":true}`,
                "method": "POST"
            }).then(res => res.json()).then(json => {
                fun.hideMsg();
                siteJson = json;
                customTitle = fun.dt({
                    t: json.title
                });
                let paths = JSON.parse(json.data);
                let base = _this.getBase();
                let srcs = paths.map(p => base + p);
                return srcs;
            });
        },
        capture: () => _this.imgs(),
        SPA: true,
        customTitle: () => customTitle ?? fun.dt({
            t: _this.getStorage().title
        }),
        category: "nsfw1"
    }
tony0809作者
§
發表於:2024-09-21

網頁版限定移動端了,其他都需要安裝網站的APP。

tony0809作者
§
發表於:2024-10-18

2.9.0 已更新

改用ajaxHooker攔截API的請求和回應,取得image_base和image_paths,避免了網站更新更換ip導致失效。

改用window.addEventListener("message", (event) => {})和window.postMessage("message", location.origin),更新腳本當前畫廊圖片網址和標題。

發表回覆

登入以回復