支持寫真、H漫、漫畫的網站1000+,圖片全量加載,簡易的看圖功能,漫畫無限滾動閱讀模式,下載壓縮打包,如有下一頁元素可自動化下載。
大佬看下这个网站http://www.m2ph.xyz/没聚合
之前的版本叫雅拉图
http://www.yalatu.com/
新版网站我这不知道为什么没法注册,需要有人私信提供帐密让我测试。
网页使用了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); });
重新研究了一下,登入後原來有存在本地的資料,剛好能拿到需要的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" }
網頁版限定移動端了,其他都需要安裝網站的APP。
2.9.0 已更新
改用ajaxHooker攔截API的請求和回應,取得image_base和image_paths,避免了網站更新更換ip導致失效。
改用window.addEventListener("message", (event) => {})和window.postMessage("message", location.origin),更新腳本當前畫廊圖片網址和標題。
大佬看下这个网站http://www.m2ph.xyz/没聚合