V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kisshere
V2EX  ›  程序员

js 能不能检测到用户打开了浏览器的调试面板正在抓包?

  •  
  •   kisshere · 2020-12-31 10:04:31 +08:00 · 4343 次点击
    这是一个创建于 1209 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想屏蔽掉打开了浏览器调试面板的用户,js 除了监听“F12”、“Ctrl+Shift+I”的按键之外,还有哪些方法,求 V 友集思广益

    ruanimal
        1
    ruanimal  
       2020-12-31 10:06:44 +08:00
    开了浏览器调试面板的用户(大部分) = V2EX 用户
    楼主来这里问,感觉有点意思
    des
        2
    des  
       2020-12-31 10:08:02 +08:00
    maocat
        3
    maocat  
       2020-12-31 10:09:19 +08:00   ❤️ 12
    好的,我马上用 fiddler 抓包
    ciqulover
        4
    ciqulover  
       2020-12-31 10:14:34 +08:00 via iPhone
    最简单兼容性管广泛的办法是使用监听一个一个对象的 getter 事件然后 console.log 打印,控制台打开的时候会触发事件,在事件监听里直接 window.location.href 跳跑,正常情况没办法避开。
    tangchi695
        5
    tangchi695  
       2020-12-31 10:15:04 +08:00
    只能对付只会用调试面板的人。
    otakustay
        6
    otakustay  
       2020-12-31 10:16:30 +08:00
    当你想和用 devtool 的人对着干,你就是在和一个技术人员对着来了,考虑到对方大概率的专业性,基本上你输定了
    FaiChou
        7
    FaiChou  
       2020-12-31 10:19:47 +08:00
    通过菜单栏点击进入 devtools 也能被监听到吗
    opengps
        8
    opengps  
       2020-12-31 10:20:07 +08:00 via Android
    没啥用,毕竟浏览器本身就是要解析看代码的
    billtsui
        9
    billtsui  
       2020-12-31 10:20:22 +08:00
    拿好不谢,https://github.com/sindresorhus/devtools-detect

    楼主是不是想做反爬啊
    ciqulover
        10
    ciqulover  
       2020-12-31 10:21:09 +08:00
    ```
    var element = new Image()
    Object.defineProperty(element, 'id', {
    get: function() {
    window.location.href = 'https://google.com'
    },
    })
    console.log(element)
    ```
    直接上代码了,一步到位的办法。
    V 友门倒是可以想一想是否有办法绕过这段代码调试 hhh 。
    VDimos
        11
    VDimos  
       2020-12-31 10:23:30 +08:00 via Android   ❤️ 1
    加个 debugger,打开了控制台会暂停,然后计时,长时间没执行就是打开了控制台
    misdake
        12
    misdake  
       2020-12-31 10:28:28 +08:00
    抓包又何必在控制台
    glaucus
        13
    glaucus  
       2020-12-31 10:29:25 +08:00
    @des #2 试了一下,这个是监听的页面大小变化实现的,用弹出窗口打开就监听不到了
    ccyu220
        14
    ccyu220  
       2020-12-31 10:29:26 +08:00
    @ciqulover 你这段代码哪里需要绕...
    libook
        15
    libook  
       2020-12-31 10:29:45 +08:00
    不开浏览器的开发者工具也可以抓包。

    屏蔽了快捷键也可以拿鼠标在菜单里打开开发者工具。
    可以在空白页先开开发者工具再加载 URL 。

    如果想解决防抓包的问题可以考虑在 HTTPS 基础上再加一层加密通信,让抓到的包无法解读内容,当然因为客户端上横竖都会有加解密算法,所以也是可以破解的,只不过代码压缩混淆后可能破解难度会比较高。

    总之,这个像是个 XY Problem 。
    linksNoFound
        16
    linksNoFound  
       2020-12-31 10:30:41 +08:00
    不要嘲笑楼主,微信就做到了
    ss098
        17
    ss098  
       2020-12-31 10:34:19 +08:00 via iPhone
    我遇到最多的是无限 debugger,但很简单就能禁用。

    还有打开控制台疯狂 alert 的。
    aogu555
        18
    aogu555  
       2020-12-31 10:34:56 +08:00
    印象里国家知识产权局的反爬做的很厉害,一进控制台直接跳到加密代码去了
    Track13
        19
    Track13  
       2020-12-31 10:39:45 +08:00 via Android
    你写的什么?值得我打开 f12 看吗
    test005
        20
    test005  
       2020-12-31 10:43:23 +08:00
    @ciqulover 火狐可破
    love
        21
    love  
       2020-12-31 10:44:45 +08:00 via Android
    这个我也碰到过,打开控制台浏览器直接卡死,可能是分配了大量内存什么的
    test005
        22
    test005  
       2020-12-31 10:47:33 +08:00
    我是这么做的

    ```
    switch ( ua ) {
    case 'firefox': {
    var _reg = /x/
    _reg.toString = kill
    console.log(_reg)
    break
    }
    case 'chrome': {
    var _div = document.createElement('div')
    Object.defineProperty(_div, 'id', {get: kill})
    console.log(_div)
    break
    }
    }
    console.clear()
    ```
    Rekkles
        23
    Rekkles  
       2020-12-31 10:59:37 +08:00
    这个等于刚学武功的想拿内功去参加华山论剑
    hafuhafu
        24
    hafuhafu  
       2020-12-31 11:13:30 +08:00
    屏蔽不掉这些用户的,浏览器自带的开发者工具也只相当于整合了一些开发常用的插件,费尽心思让对方无法打开控制台,对方反手装一个插件或者应用,该抓包一样抓。
    lbyo
        25
    lbyo  
       2020-12-31 11:15:52 +08:00
    @ciqulover #10 换个浏览器就可以了,这是利用 Chrome 控制台输出 Object 的时候,会获取 Object 的 id 的原理
    WishMeLz
        26
    WishMeLz  
       2020-12-31 11:28:46 +08:00
    debug
    LiuSha
        27
    LiuSha  
       2020-12-31 12:58:05 +08:00 via Android
    这种方法只能对付只会用调试工具抓包的,别人用 fiddler 抓包你怎么办呢?
    buglesss
        28
    buglesss  
       2020-12-31 13:40:55 +08:00
    你去试试裁判文书网
    execute
        29
    execute  
       2020-12-31 14:19:48 +08:00
    , 震慑一下
    ETO
        30
    ETO  
       2020-12-31 15:46:03 +08:00
    @linksNoFound 没人嘲笑楼主啊,大家都在很认真的回答问题呀。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5429 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:00 · PVG 17:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.