您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
禁用开发者工具检测、阻止页面重定向和隐藏特定元素
// ==UserScript== // @name 网站综合增强工具 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 禁用开发者工具检测、阻止页面重定向和隐藏特定元素 // @author justbuybitcoin // @match *://missavtv.com/* // @match *://tieba.baidu.com/* // @grant none // @run-at document-start // @license MIT // ==/UserScript== (function() { 'use strict'; // ===== 第一部分:禁用开发者工具检测 ===== // 禁用控制台警告但保留开发者工具功能 const originalConsoleError = console.error; console.error = function(message, ...args) { // 只过滤掉DEVTOOL警告 if (message && typeof message === 'string' && (message.includes('DEVTOOL') || message.includes('You don\'t have permission'))) { return; } return originalConsoleError.call(console, message, ...args); }; // 覆盖可能的检测变量,更安全的方式 function safelyOverrideProperty(obj, prop, value) { try { // 检查属性是否已存在 if (obj[prop] !== undefined) { Object.defineProperty(obj, prop, { get: function() { return value; }, configurable: true }); } } catch (e) { // 静默失败,避免干扰 } } // 更精确地处理定时器,只替换包含特定检测代码的函数 const originalSetInterval = window.setInterval; window.setInterval = function(fn, delay) { if (typeof fn === 'function') { const fnStr = fn.toString(); if (fnStr.includes('DEVTOOL') || (fnStr.includes('devtool') && fnStr.includes('detect'))) { // 只替换明确的检测函数 fn = function() { /* 无操作 */ }; } } return originalSetInterval.call(window, fn, delay); }; // 添加检测绕过 function initDevToolBypass() { setTimeout(function() { // 尝试查找并禁用可能的检测器 for (const key in window) { if (key.toLowerCase().includes('devtool') || key.toLowerCase().includes('debug')) { safelyOverrideProperty(window, key, { isOpen: false, detect: function() { return false; } }); } } }, 1000); } // ===== 第二部分:添加样式和隐藏元素 ===== // 添加隐藏特定元素的样式 function addCustomStyle() { const style = document.createElement('style'); style.textContent = ` .root--ujvuu { display: none !important; } .ylh-custom-ad-container { display: none !important; } .ylh-ad-container { display: none !important; } /* 隐藏所有iframe */ iframe { display: none !important; } .-mx-5.mb-6 { display: none !important; } /* 修复Tailwind多类选择器 */ .container.mx-auto.my-6.h-auto, div[class*="container"][class*="mx-auto"][class*="my-6"][class*="h-auto"] { display: none !important; } /* 修复带md:前缀的响应式类 */ .mb-2.hidden.w-full.justify-center, div[class*="mb-2"][class*="hidden"][class*="w-full"][class*="justify-center"], div[class*="md:flex"] { display: none !important; } `; document.head.appendChild(style); console.log("[样式注入] 已隐藏指定元素"); } // 在文档加载早期就执行样式注入 if (document.head) { addCustomStyle(); } else { // 如果head还不存在,等待DOM结构加载 document.addEventListener('DOMContentLoaded', addCustomStyle); } // ===== 第三部分:防止页面重定向 ===== // 检查URL是否与当前域名相同 function isSameDomain(url) { try { // 获取当前域名 const currentDomain = window.location.hostname; // 解析目标URL的域名 const targetDomain = new URL(url, window.location.href).hostname; console.log( `[域名检查] 当前域名: ${currentDomain}, 目标域名: ${targetDomain}` ); return currentDomain === targetDomain; } catch (e) { console.error("[域名检查] 解析URL失败:", e); // 如果无法解析URL,默认阻止导航以安全为主 return false; } } // 处理新窗口弹出 const originalWindowOpen = window.open; window.open = function(...args) { console.log("[拦截] 尝试打开新窗口:", args[0]); // 完全阻止弹窗 return null; }; // 拦截设置location.href的操作 let navigationCount = 0; const originalSet = Object.getOwnPropertyDescriptor(window.Location.prototype, 'href').set; Object.defineProperty(window.Location.prototype, 'href', { set: function(url) { navigationCount++; console.log(`[导航拦截] 尝试导航到: ${url} (计数: ${navigationCount})`); // 检查是否为跨域跳转 if (!isSameDomain(url)) { console.log("[导航拦截] 阻止跨域跳转"); // 重置计数器,不执行导航 setTimeout(() => { navigationCount = 0; }, 100); return; } // 只允许第一次导航(正常点击导航) if (navigationCount === 1) { originalSet.call(this, url); } else { console.log("[导航拦截] 阻止了二次重定向"); } // 5秒后重置计数器,以便下次点击能正常工作 setTimeout(() => { navigationCount = 0; }, 5000); }, get: Object.getOwnPropertyDescriptor(window.Location.prototype, 'href').get }); // 监听所有可能的重定向方法 ['assign', 'replace'].forEach(method => { const original = window.Location.prototype[method]; window.Location.prototype[method] = function(url) { navigationCount++; console.log(`[导航拦截] 尝试${method}导航: ${url} (计数: ${navigationCount})`); if (navigationCount === 1) { return original.call(this, url); } else { console.log(`[导航拦截] 阻止了${method}重定向`); return null; } }; }); // 监听并修改a标签点击行为 function setupClickHandler() { document.addEventListener('click', function(e) { // 查找点击的图片或其父级a标签 const img = e.target.closest('img'); if (!img) return; const link = img.closest('a') || img.parentElement.closest('a'); if (!link) return; // 检查是否有onclick或其它可能触发多重导航的事件 if (link.hasAttribute('onclick') || link.hasAttribute('onmousedown')) { console.log("[点击拦截] 拦截了可疑点击事件"); e.preventDefault(); e.stopPropagation(); // 手动执行正常导航 navigationCount = 1; // 标记这是合法的第一次导航 window.location.href = link.href; return false; } }, true); } // ===== 初始化函数 ===== // 在文档加载早期就执行样式注入 if (document.head) { addCustomStyle(); } else { // 如果head还不存在,等待DOM结构加载 document.addEventListener('DOMContentLoaded', addCustomStyle); } // 页面加载完成后初始化 window.addEventListener('load', function() { initDevToolBypass(); console.log("[网站综合增强工具] 完全加载"); }); // 设置点击处理程序 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', setupClickHandler); } else { setupClickHandler(); } console.log("[网站综合增强工具] 核心功能已加载"); })();