專注沉浸式體驗,1.屏蔽廣告,直接訪問熱門圖片2.使用users入り的方式搜索3.搜索pid和uid 4.顯示原圖及尺寸,圖片重命名,下載原圖|gif圖|動圖幀zip|多圖zip 5.顯示畫師id、畫師背景圖6.自動加載評論7.對動態標記作品類型8.去除重定向9.單頁排序10.控制面板選擇想要的功能github:https:/ /github.com/Ahaochan/Tampermonkey,歡迎star和fork。
我利用历史版本自查了一下,从0.4.7版之后出现问题,0.4.6版是没有这个问题的
出现原因的问题大概是因为默认开启预下载的问题,目前正在设置页面开发一个控制面板, 用于接管一些脚本功能的开关. 预下载功能开关的改动挺大的, 目前最好不要一次性开启太多页面.
极速模式只是开关MutationObserver而已
0.5.5版还是没有解决这个问题……在设置页面的控制里无论怎么开关那几个选项都没用
我去比较一下新旧版本…
我比较了0.4.6和新版本的区别,发现问题出在下面的一段代码里(反混淆处)
下面是0.4.6版的:
let classLib = { userIcon: ['_2lyPnMP'], rightColumn: ['_2e0p8Qb'] }; setInterval(function () { let webpackJsonp = unsafeWindow.webpackJsonp; // 1. 格式化 webpackJsonp 变量, 取出反混淆所需的变量 let filter = webpackJsonp.map(value => value[1]).filter(value => value && !Array.isArray(value) && typeof value === 'object'); $.each(filter, (index, obj) => { for (let key in obj) { if (!obj.hasOwnProperty(key)) { continue; } let tmp = {}; // 2. 尝试导出反混淆变量到tmp try { obj[key](tmp); } catch(err) { continue; } // 3. 存在一个变量对应多个反混淆值的情况, 用数组存入 if(tmp.hasOwnProperty('exports')) { $.each(tmp.exports, function (k, v) { classLib[k] = classLib[k] || []; try { classLib[k].push(v); } catch(err) { return; } classLib[k] = unique(classLib[k]); // 去重 }); } } }); }, 1000);
下面是0.5.5版的:
let defaultClassLib = { userIcon: 'sc-iwsKbI', rightColumn: '_3czssV0', coverTexture: '_3HZmrVs', alertContainer: "_3Dfo7Ik", }; let classLib = defaultClassLib; GM.getValue(GMkeys.classLib).then(value => { classLib = $.extend(JSON.parse(value || '{}'), defaultClassLib); }); setInterval(function () { let webpackJsonp = unsafeWindow.webpackJsonp; // 1. 格式化 webpackJsonp 变量, 取出反混淆所需的变量 let filter = webpackJsonp.map(value => value[1]).filter(value => value && !Array.isArray(value) && typeof value === 'object'); $.each(filter, (index, obj) => { for (let key in obj) { if (!obj.hasOwnProperty(key)) { continue; } let tmp = {}; // 2. 尝试导出反混淆变量到tmp try { obj[key](tmp); } catch (err) { continue; } // 3. 存在一个变量对应多个反混淆值的情况, 用数组存入 if (tmp.hasOwnProperty('exports')) { $.each(tmp.exports, function (k, v) { try { classLib[k] = v; } catch (err) { } }); } } }); GM.setValue(GMkeys.classLib, JSON.stringify(classLib)); }, 1000);
将0.5.5版的这一段改成0.4.6那样就不会有爆内存的问题了,所以应该是这一段代码的问题。
确实可能是这个原因。我做了反混淆的缓存。classLib
是挺大的。
如今P站反混淆策略升级,旧的反混淆策略失效,现在已经把旧的反混淆的代码删掉了。
请更新到0.5.6+试试。
0.5.6不会爆内存了
现在的脚本版本打开数个图片页面会爆内存("▔□▔)/
使用脚本打开数个图片页面会使内存占用激增 我电脑16G内存,打开约10个图片页面就快占用完了,继续增加页面数就会因为内存爆满而卡死浏览器 如果关闭脚本则没有问题,打开30+个页面也占用不了多少内存 印象中2019年后才出现这个问题(大概吧),以前使用该脚本好像没碰到这个问题 PS.浏览器为最新Firefox65.01,win10,使用Tampermonkey,另外无论开不开极速模式都一样