Lsen
(阿森)
1
目前遇到了个问题;
弹窗是一个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 个赞
Lsen
(阿森)
4
问题已解决。
优化后代码
// ==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);
})();