您需要先安装一个扩展,例如 篡改猴、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();