您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在禁用 disable-devtool 和 devtools-detector 的同时,使网站完美运行。
// ==UserScript== // @name No DisableDevTool // @name:zh-CN 放飞 disable-devtool // @name:ja disable-devtool をぶち壊せ // @namespace NoDisableDevTool // @version 1.1.2 // @description Break disable-devtool and devtools-detector while keeping the website working perfectly. // @description:zh-CN 在禁用 disable-devtool 和 devtools-detector 的同时,使网站完美运行。 // @description:ja disable-devtool と devtools-detector を壊すながら、ウェブサイトに影響を及ぼさず。 // @author FurryR // @match *://*/* // @license MIT // @grant none // @run-at document-start // ==/UserScript== (function() { 'use strict'; if (document instanceof XMLDocument) { return; } const slice = Array.prototype.slice; Array.prototype.slice = function (...args) { if (args.length === 0 && Array.prototype.every.call(this, v => v && typeof v === 'object' && typeof v.name === 'string' && typeof v.isOpen === 'function' && typeof v.isEnable === 'function')) { Array.prototype.slice = slice; return []; } return slice.call(this, args); }; const assign = Object.assign; Object.assign = function (...args) { if (args.length === 2 && typeof args[0] === 'function' && typeof args[1] === 'object' && args[1] !== null && typeof args[1].isDevToolOpened === 'function' && typeof args[1].version === 'string' && typeof args[1].isRunning === 'boolean' && typeof args[1].isSuspend === 'boolean') { Object.assign = assign; const result = Object.assign(...args); console.log('Detected disable-devtool component', result); return Object.assign(function () { console.trace('disable-devtool called here'); }, args[1]); } return assign.call(this, ...args); } })();