TaoLoading

前端如何在不引入库的情况下判断用户打开了 F12 控制台

  •  
  •   TaoLoading ·
    TaoLoading · Apr 27, 2024 · 4768 views
    This topic created in 927 days ago, the information mentioned may be changed or developed.

    有个需求需要在不引入库的情况下判断用户打开了 F12 控制台,而且要做到多浏览器兼容,大佬们有合适的办法吗

    28 replies  •  2024-05-14 15:41:09 +08:00
    gorira
    gorira
    Apr 27, 2024❤️3
    1
    联合十部委出台相关规定,使用控制台查看本站信息违反网络安全法
    ktqFDx9m2Bvfq3y4
    ktqFDx9m2Bvfq3y4
    Apr 27, 2024 via iPhone
    2
    玩这种黑魔法没意思,双输。
    JK9993
    JK9993
    Apr 27, 2024
    3
    复制一下源码?
    TaoLoading
    TaoLoading
    OP
    Apr 27, 2024
    4
    @Chad0000 不是呀,我在做浏览器插件开发,期望当检测到用户开启开发者控制台并选择移动端样式后隐藏我的插件,也是优化用户体验
    zcf0508
    zcf0508
    Apr 27, 2024 via Android
    5
    @TaoLoading 那你直接移动端样式兼容就好了,为啥要判断是不是开了控制台
    TaoLoading
    TaoLoading
    OP
    Apr 27, 2024
    6
    @zcf0508 因为这个插件是全平台兼容的,也有移动端
    estk
    estk
    Apr 27, 2024 via iPhone
    7
    淘宝的 f12 是招聘内容
    bgm004
    bgm004
    Apr 27, 2024 via Android
    8
    不用第三方库你不还是要自己写,有什么区别?
    agagega
    agagega
    Apr 27, 2024 via iPhone
    9
    以前在本站看到过一个人贴了个特牛逼的网页,阻止用户打开控制台,标题忘了,可以搜搜
    yhxx
    yhxx
    Apr 27, 2024
    10
    不引入库是啥意思
    找个库把它的代码复制一份算引入库吗
    yhxx
    yhxx
    Apr 27, 2024
    11
    chrome 可以用这个

    (function () {
    var re = /x/;
    var i = 0;
    console.log(re);

    re.toString = function () {
    return '第 ' + (++i) + ' 次打开控制台';
    };
    })();

    作者:XFD111
    链接: https://www.zhihu.com/question/24188524/answer/117094116
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    TaoLoading
    TaoLoading
    OP
    Apr 27, 2024
    12
    @Track13 点就是在这,引入库会让插件变大,性能较差
    TaoLoading
    TaoLoading
    OP
    Apr 27, 2024
    13
    @yhxx #11 这种重写 toString() 的方法已经不行了
    bgm004
    bgm004
    Apr 27, 2024 via Android❤️1
    14
    @TaoLoading 插件大不等于性能差。
    jqtmviyu
    jqtmviyu
    Apr 27, 2024❤️1
    15
    用 debugger 糊弄下吧.

    function check() {
    eval(String.fromCharCode(100, 101, 98, 117, 103, 103, 101, 114, 59))
    setTimeout(check, 1)
    }
    check()
    maplerecall
    maplerecall
    Apr 27, 2024❤️1
    16
    如果只是按你说的需求就简单了,不用整什么花里胡哨的,直接绑 onresize 检查 UA ,如果变成包含 mobile 了就说明切换到手机模拟器了,因为正常情况下 UA 是不会变的。
    ochatokori
    ochatokori
    Apr 27, 2024 via Android
    17
    css 媒体查询不就行了,搞这么复杂
    TaoLoading
    TaoLoading
    OP
    Apr 27, 2024
    18
    @maplerecall 老哥牛批,原来这时候 UA 也会变,感谢解答
    drymonfidelia
    drymonfidelia
    Apr 27, 2024
    19
    @TaoLoading 这种为什么不行,我们公司就在用这种方法,不过不是直接阻止用户操作网页而是往 cookies 里写风控标记
    drymonfidelia
    drymonfidelia
    Apr 27, 2024
    20
    @drymonfidelia 19 指 11 楼 @yhxx 那种 toString 的方法
    drymonfidelia
    drymonfidelia
    Apr 27, 2024
    21
    @drymonfidelia cookies 的风控标记会在下一个请求被风控系统识别入库,防止单独请求被用户注意到
    drymonfidelia
    drymonfidelia
    Apr 27, 2024
    22
    @Chad0000 cloudflare 也在用这种方法写风控标记 turnslite 验证码如果开了控制台 100%不给通过
    bug51
    bug51
    Apr 28, 2024
    23
    @jqtmviyu 容易把自己干死 无限 debugger
    TaoLoading
    TaoLoading
    OP
    Apr 29, 2024
    24
    @drymonfidelia #20 我试了下新版 chrome 已经不好使了,你那新版 chrome 可以?
    TaoLoading
    TaoLoading
    OP
    May 5, 2024
    25
    @drymonfidelia #21 你那边 toString() 方法在新版 chrome 好使不,我这测的不行呢
    drymonfidelia
    drymonfidelia
    May 5, 2024
    26
    @TaoLoading 新版 chrome 确实不好使了,firefox 还可以稳定用,不过我们还有别的方法判断,不好公开
    TaoLoading
    TaoLoading
    OP
    May 6, 2024
    27
    @drymonfidelia #26 ok ,我试了下可以通过打印大对象数组并计算时间差的方式来判断是否打开了 devtools ,亲测可行
    bronana
    bronana
    May 14, 2024
    28
    最近在一个盗版资源网站上看到的源码
    ```html
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    </head>
    <body>
    <script>
    /*防扒*/
    (function () {
    var callbacks = [],
    timeLimit = 50,
    open = false;
    setInterval(loop, 1);
    return {
    addListener: function (fn) {
    callbacks.push(fn);
    },
    cancleListenr: function (fn) {
    callbacks = callbacks.filter(function (v) {
    return v !== fn;
    });
    },
    };

    function loop() {
    var startTime = new Date();
    debugger;
    if (new Date() - startTime > timeLimit) {
    if (!open) {
    callbacks.forEach(function (fn) {
    fn.call(null);
    });
    }
    open = true;
    window.stop();
    alert('小黑子,露出鸡脚了吧');
    window.location.reload();
    } else {
    open = false;
    }
    }
    })().addListener(function () {
    window.location.reload();
    });
    </script>
    </body>
    </html>

    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   948 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 20:15 · PVG 04:15 · LAX 12:15 · JFK 15:15
    ♥ Do have faith in what you're doing.