Greasy Fork is available in English.

Pixiv 增强

专注沉浸式体验,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。

< 脚本Pixiv 增强的反馈

提问/评论

§
发表于:2019-02-17

现在的脚本版本打开数个图片页面会爆内存("▔□▔)/

使用脚本打开数个图片页面会使内存占用激增 我电脑16G内存,打开约10个图片页面就快占用完了,继续增加页面数就会因为内存爆满而卡死浏览器 如果关闭脚本则没有问题,打开30+个页面也占用不了多少内存 印象中2019年后才出现这个问题(大概吧),以前使用该脚本好像没碰到这个问题 PS.浏览器为最新Firefox65.01,win10,使用Tampermonkey,另外无论开不开极速模式都一样

§
发表于:2019-02-17

我利用历史版本自查了一下,从0.4.7版之后出现问题,0.4.6版是没有这个问题的

Ahaochan作者
§
发表于:2019-02-17
编辑于:2019-02-17

出现原因的问题大概是因为默认开启预下载的问题,目前正在设置页面开发一个控制面板, 用于接管一些脚本功能的开关. 预下载功能开关的改动挺大的, 目前最好不要一次性开启太多页面.

极速模式只是开关MutationObserver而已

§
发表于:2019-03-03

0.5.5版还是没有解决这个问题……在设置页面的控制里无论怎么开关那几个选项都没用

§
发表于:2019-03-03
编辑于:2019-03-03

我去比较一下新旧版本…

§
发表于:2019-03-03

我比较了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那样就不会有爆内存的问题了,所以应该是这一段代码的问题。

Ahaochan作者
§
发表于:2019-03-03

确实可能是这个原因。我做了反混淆的缓存。classLib是挺大的。 如今P站反混淆策略升级,旧的反混淆策略失效,现在已经把旧的反混淆的代码删掉了。 请更新到0.5.6+试试。

§
发表于:2019-03-03

0.5.6不会爆内存了

发表回复

登录以发表回复。