您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
2025/3/23 14:17:37
当前为
// ==UserScript== // @name Bypass CDP Detection // @namespace http://fulicat.com // @author Jack.Chan ([email protected]) // @version 1.0.1 // @run-at document-start // @match *://*/* // @match file:///* // @url https://greasyfork.org/zh-CN/scripts/530590-bypass-cdp-detection // @grant none // @description 2025/3/23 14:17:37 // @license MIT // ==/UserScript== ;(function() { var originalError = Error; // Lock down the stack property on Error.prototype to prevent modification Object.defineProperty(Error.prototype, 'stack', { configurable: false, enumerable: true, writable: false, value: (function() { try { throw new originalError(); } catch (e) { return e.stack; } })() }); // Proxy the Error constructor to prevent any instance-specific stack modifications window.Error = new Proxy(originalError, { construct(target, args) { var instance = new target(...args); // Freeze the instance to prevent any modifications return Object.freeze(instance); } }); // Override Object.defineProperty var originalObjectDefineProperty = Object.defineProperty; Object.defineProperty = function defineProperty(obj, prop, descriptor) { if (prop !== 'stack') { return originalObjectDefineProperty.apply(Object, arguments); } else { console.log('// CDP bypass [Object.defineProperty]', String.fromCharCode(10), 'obj:', obj, String.fromCharCode(10), 'prop:', prop, String.fromCharCode(10), 'descriptor:', descriptor, String.fromCharCode(10), String.fromCharCode(10), String.fromCharCode(10) ); } return {}; } Object.defineProperty.toString = function toString() { return originalObjectDefineProperty.toString(); }; // alert('bypass_CDP_detection injected'); })();