写一个油猴脚本的时候遇到了问题;

目前遇到了个问题;


弹窗是一个iframe;打断点的source js貌似是点击一键应用到文中图片这个按钮 动态加载的;手动打断点然后console 中修改editor.is_paid_user 为true即可过vip限制;现在想用油猴去自动赋值;不知道如何做了;望佬友们指教

解决啦~chatgpt还是很6的;
通过定时任务去做就好了,代码还可以优化;

// ==UserScript==
// @name         Auto Bypass VIP
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  自动赋值 editor.is_paid_user 为 true 绕过VIP限制
// @author       You
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 定义一个函数来查找和修改 editor.is_paid_user
    function modifyVIPStatus() {
        let editor;

        // 查找 iframe 中的内容
        let iframe = document.querySelector('iframe'); // 定位到你的 iframe
        if (iframe && iframe.contentWindow) {
            editor = iframe.contentWindow.editor;
        } else {
            editor = window.editor;
        }

        if (editor && typeof editor.is_paid_user !== 'undefined') {
            console.log('Editor found, modifying is_paid_user...');
            editor.is_paid_user = true; // 修改为 true
            console.log('VIP status modified.');
        } else {
            console.log('Editor not found yet, retrying...');
        }
    }

    // 设置定时器,每秒检查一次
    setInterval(modifyVIPStatus, 1000);
})();

1 个赞

油猴看目前基本都是附加,没有是注入的

大佬对于这个问题有什么好的建议方案吗

问题已解决。
优化后代码

// ==UserScript==
// @name         VIP Status Modifier (Observer Version)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Modify VIP status using MutationObserver
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const STATE_KEY = '__vipModifierState__';
    let observer = null;

    function modifyVIPStatus() {
        if (window[STATE_KEY]) return;

        let editor;
        try {
            let iframe = document.querySelector('iframe');
            if (iframe && iframe.contentWindow) {
                editor = iframe.contentWindow.editor;
            } else {
                editor = window.editor;
            }

            if (editor && typeof editor.is_paid_user !== 'undefined') {
                if (!editor.is_paid_user) {
                    console.log('Modifying VIP status...');
                    editor.is_paid_user = true;
                }
                
                window[STATE_KEY] = true;
                
                // 停止观察
                if (observer) {
                    observer.disconnect();
                    observer = null;
                }
                
                return true;
            }
        } catch (error) {
            console.error('Error in modifyVIPStatus:', error);
        }
        return false;
    }

    // 创建观察器
    observer = new MutationObserver((mutations) => {
        if (modifyVIPStatus()) {
            observer.disconnect();
            observer = null;
        }
    });

    // 开始观察
    observer.observe(document.documentElement, {
        childList: true,
        subtree: true
    });

    // 初始检查
    modifyVIPStatus();

    // 清理函数
    function cleanup() {
        if (observer) {
            observer.disconnect();
            observer = null;
        }
        window[STATE_KEY] = false;
    }

    // 提供手动清理方法
    window.clearVipModifier = cleanup;

    // 页面卸载时清理
    window.addEventListener('beforeunload', cleanup);
})();