您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Intercepts scripts from disabling devtools.
// ==UserScript== // @name Anti-Disable-Devtool // @description Intercepts scripts from disabling devtools. // @author Snipcola // @namespace https://snipcola.com // @license MIT // @match *://*/* // @version 1.0 // @run-at document-start // ==/UserScript== const blacklistedHooks = ["contextmenu"]; const blacklistedScripts = ["disabledevtool", "disable-devtool", "disableinspect", "disable-inspect", "blockdevtool", "block-devtool", "blockinspect", "block-inspect"]; const name = "Anti-Disable-Devtool"; const originalAddEventListener = document.addEventListener; document.addEventListener = function (type, listener, options) { if (blacklistedHooks.includes(type)) console.error(`[${name}] Intercepted event from being hooked:`, { type, listener }); else originalAddEventListener.call(document, type, listener, options); }; function observe () { if (!document.documentElement) { setTimeout(observe, 10); return; } new MutationObserver((mutations) => { mutations.forEach(({ addedNodes }) => { addedNodes.forEach((node) => { if (node.nodeType === 1 && node.tagName === "SCRIPT" && blacklistedScripts.map((s) => node.src?.includes(s)).includes(true)) { node.type = "javascript/intercepted"; node.remove(); console.error(`[${name}] Intercepted script from being executed:`, { node, source: node.src }); } }); }); }).observe(document.documentElement, { childList: true, subtree: true }); } observe();