Pixiv Plus

Focus on immersive experience, 1. Block ads, directly access popular pictures 2. Use user to enter the way to search 3. Search pid and uid 4. Display original image and size, picture rename, download original image | gif map | Zip|multiple map zip 5. display artist id, artist background image 6. auto load comment 7. dynamic markup work type 8. remove redirection 9. single page sort 10. control panel select desired function github: https:/ /github.com/Ahaochan/Tampermonkey, welcome to star and fo

< Valutazione su Pixiv Plus

Domanda/commento

§
Pubblicato: 17/02/2019

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

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

§
Pubblicato: 17/02/2019

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

AhaochanAutore
§
Pubblicato: 17/02/2019
Modificato: 17/02/2019

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

极速模式只是开关MutationObserver而已

§
Pubblicato: 03/03/2019

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

§
Pubblicato: 03/03/2019
Modificato: 03/03/2019

我去比较一下新旧版本…

§
Pubblicato: 03/03/2019

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

AhaochanAutore
§
Pubblicato: 03/03/2019

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

§
Pubblicato: 03/03/2019

0.5.6不会爆内存了

Pubblica risposta

Accedi per pubblicare una risposta.