Bypass网页调试限制

用于绕过限制和调试问题的差价,绕过debugger,绕过移动端检测,绕过ua检测,限制RTC泄露等功能

// ==UserScript==
// @name         Bypass网页调试限制
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  用于绕过限制和调试问题的差价,绕过debugger,绕过移动端检测,绕过ua检测,限制RTC泄露等功能
// @author       arschlochnop
// @license   MIT
// @match        *://*/*
// @run-at       document-start
// ==/UserScript==

// 删除RTC相关对象,防止泄露真实IP
["","webkit","moz","ms"].forEach(prefix => {
    [
        "RTCError",
        "RTCRtpSender",
        "RTCDTMFSender",
        "RTCErrorEvent",
        "RTCTrackEvent",
        "RTCCertificate",
        "RTCDataChannel",
        "RTCRtpReceiver",
        "RTCStatsReport",
        "RTCIceCandidate",
        "RTCIceTransport",
        "RTCDtlsTransport",
        "RTCSctpTransport",
        "RTCPeerConnection",
        "RTCRtpTransceiver",
        "RTCDataChannelEvent",
        "RTCEncodedAudioFrame",
        "RTCEncodedVideoFrame",
        "RTCSessionDescription",
        "RTCDTMFToneChangeEvent",
        "RTCPeerConnectionIceEvent",
        "RTCPeerConnectionIceErrorEvent"
    ].forEach(rtc => {
        const obj = prefix + rtc;
        if (unsafeWindow[obj]) delete unsafeWindow[obj];
    });
});

// 修改navigator对象,防止泄露真实信息
const platform = "Android";
const platforms = {
    "HP-UX": "Mozilla/5.0 (HP-UX; HP-UX 11.31)",
    "Linux i686": "Mozilla/5.0 (Linux; i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "Linux armv7l": "Mozilla/5.0 (Linux; ARM; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "Mac68K": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
    "MacPPC": "Mozilla/5.0 (Macintosh; PPC Mac OS X 10_15_7)",
    "MacIntel": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
    "SunOS": "Mozilla/5.0 (SunOS; SunOS 5.11)",
    "Win16": "Mozilla/5.0 (Windows 3.1)",
    "Win32": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "WinCE": "Mozilla/5.0 (Windows CE; IEMobile 10.0)",
    "iPhone": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
    "iPod": "Mozilla/5.0 (iPod; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
    "iPad": "Mozilla/5.0 (iPad; CPU OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
    "Android": "Mozilla/5.0 (Linux; Android 10; Pixel 3 XL Build/QQ1A.200205.002) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Mobile Safari/537.36",
    "BlackBerry": "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.36 (KHTML, like Gecko) Version/10.3.3.2204 Mobile Safari/537.36",
    "Opera": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 OPR/45.0.2516.0"
};


    Object.defineProperty(navigator, 'platform', { get: function() {console.log("禁止查看浏览器平台"); return platform; } });
    Object.defineProperty(navigator,'userAgent',{get:function(){console.log("禁止查看浏览器UA");return platforms[platform];}});
    Object.defineProperty(navigator,'language',{get:function(){console.log("禁止查看浏览器语言");return 'en-US';}});
    Object.defineProperty(navigator,'languages',{get:function(){console.log("禁止查看浏览器语言集"); return ['en-GB', 'en-US'];}});
    Object.defineProperty(navigator,'userAgentData',{get:function(){console.log("禁止查看userAgentData"); return '';}});
    Object.defineProperty(navigator,'appVersion',{get:function(){console.log("禁止查看appVersion"); return '999';}});
Intl.DateTimeFormat.prototype.resolvedOptions = function() {
    console.log("禁止查看时区");
};


// 绕过debugger防调试功能
console.log("========== my hook start ==========");

function hook_Function() {
    let raw_F_c = Function.prototype.constructor;
    let _constructor = function (params) {
        //注释输出,避免影响性能
        //console.log("调用 Function.prototype.constructor: ", params);
        if (params.includes("debugger")) {
            //console.log("发现 debugger in Function.prototype.constructor");
            params = params.replaceAll("debugger", "");
        }
        return raw_F_c(params);
    }
    Object.defineProperty(window.Function.prototype, "constructor", { value: _constructor })
}

function hook_setInterval() {
    let raw_set = setInterval;
    let _setInterval = function () {
        console.log("调用 setInterval: ", arguments)
        // 直接置空似乎没有什么影响
        return;  // 如果出现问题可以删除该语句

        let s = arguments[0].toString();
        if (s.includes("debugger")) {
            console.log("发现 debugger in setInterval");
            s = s.replaceAll("debugger", "");
            arguments[0] = eval(s);
        }
        raw_set(...arguments);
    }
    Object.defineProperty(window, "setInterval", { value: _setInterval })
}

function hook_eval() {
    let raw_eval = eval;
    let _eval = function(param) {
        console.log("调用 eval: ", param);
        if (param.includes("debugger")) {
            console.log("发现 debugger in eval");
            if (param === "(function() {var a = new Date(); debugger; return new Date() - a > 100;}())") {
                param = "(function() { return false; })()";
            }
            param = param.replaceAll("debugger", "");
        }
        raw_eval(param);
    }
    Object.defineProperty(window, "eval", { value: _eval })
}


hook_setInterval();
hook_eval();

// 如果置空 setInterval 出现了其它问题,可以取消该注释
// 可能会影响一些负责页面的渲染功能,默认关闭,如果无法绕过debugger可以取消注释
//hook_Function();  

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址