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

禁用 devtools 的奇技淫巧

  •  
  •   shadowfish0 · 201 天前 · 4208 次点击
    这是一个创建于 201 天前的主题,其中的信息可能已经有所发展或是发生改变。
    发现一个神奇的库,可以禁用网站 devtools 达到保护源码的目的

    https://github.com/theajack/disable-devtool

    有厉害的老哥有破解思路吗,我记得之前有人发过类似帖子,他那个提前打开 devtools 再输网址可破,但这个法子在这个库也没用了

    装了个禁用 js 的插件,但是 react 貌似就必须跑在 js 环境下,禁用的话整个页面都出不来了

    有点没思路了哈哈
    24 条回复    2023-10-11 16:54:06 +08:00
    zeusho871
        1
    zeusho871  
       201 天前 via Android
    只要用的谷歌别人就有办法打开,而且我用 playwright 之类的工具,一样可以获取你
    comingnine
        3
    comingnine  
       201 天前
    不清楚强度怎么样啊?道高一尺,魔高一丈
    Perry
        4
    Perry  
       201 天前 via iPhone   ❤️ 1
    这跟发明永动机有啥区别?不管什么牛魔鬼怪,能 render 到浏览器上的东西都能看到源码,即使是 uglified 过的。
    yanyao233
        5
    yanyao233  
       201 天前 via Android
    前端基本没啥秘密,只不过就是恶心程度不同
    k9982874
        6
    k9982874  
       200 天前
    不如多几层混淆
    sunorg
        7
    sunorg  
       200 天前 via Android
    这应用场景主要是反扒上面,增加难度而已。

    抛开场景谈技术,没意义
    liuidetmks
        8
    liuidetmks  
       200 天前
    没什么意义,不如混淆或者 wasm
    Blanke
        9
    Blanke  
       200 天前
    没什么卵用
    Masoud2023
        10
    Masoud2023  
       200 天前   ❤️ 7
    与其在前端想方设法保护那点弱智代码,还不如在后端方向想想怎么做一些校验或者风控
    zxcholmes
        11
    zxcholmes  
       200 天前
    用 fiddler 之类代理,劫持请求,修改 response ,把这个 js 逻辑去掉,随便 devtools ,有人会说 https ?装根证书不就行了,https 改包对 fiddler 也不是难事
    solobat
        12
    solobat  
       200 天前
    找一个或开发个浏览器扩展,劫持请求,修改 js url 或内容就行了
    Rache1
        13
    Rache1  
       200 天前
    IT 民科 😆
    AtlantaANiu
        14
    AtlantaANiu  
       200 天前
    主要还是利用了 log 的惰性执行这个特性,找个脚本注入插件,重写一下 conosle.log 函数就能绕过
    zsh2517
        15
    zsh2517  
       200 天前   ❤️ 1
    用官方 demo ( https://theajack.github.io/disable-devtool/)测试。我遇到的主要检测方式就是 Date/FuncToString 词数检测和 performance 性能检测。这俩都是依赖 console.log 的机制

    不依赖任何外部工具(即靠页面本身、地址栏注入 JS 、打开 devtools 之后的手速)的情况下,目前我发现的唯一解法是提前打开 devtools ,网速调到慢速 3G/自定义一个高延迟的网络,在浏览器载入 js 之前(最一开始一定是加载 HTML 的,这个时候禁用还没载入),覆盖掉 window.console 。比如 window.console.log = () => { }; window.console.table = () => { }; window.console.clear = () => { };

    如果想自动生效,油猴脚本加一个 `// @run-at document-start` ,声明注入时机把 window.console 干掉就行。上面这种方法比较简单但是没有任何 console.log 内容了。如果还想要打印的东西,可以自己重写 console.log ,检测 e.toString === e.__proto__.toString 或者 e 的内容,过滤掉检测的那个变量或者给他改回去。

    至于性能检测( table 时间 > 10*log 时间),重写 console 函数的时候,给 log 加一个 for 10....0 延迟,或者把 table 改成 settimeout 异步打印就行。如果对于日志顺序有严格要求,可以自己实现一个队列按顺序打印,控制好执行时间就可以

    如果 disable-devtool 还想对 console.log 是否被魔改过进行检测,又是一个新的话题了。可以参考比如 https://zhuanlan.zhihu.com/p/564194625

    ---

    以上方法是从他检测机制直接入手的。简单点的方式,比如直接拦截请求,把脚本生效的地方干掉、字符串替换把 md5 换成自己知道的密码等等。这个脚本、油猴以及抓包都能干,就不试了
    zsh2517
        16
    zsh2517  
       200 天前
    @zsh2517 补充,这是建立在白盒测试的情况下,我能直接针对检测的方式入手。如果直接给我个用了它的网站(甚至还是混淆代码之后的),我感觉我可能还真弄不出来
    zsh2517
        17
    zsh2517  
       200 天前
    再补充:我也不知道为啥作者没有添加一种从 console.log 函数本身入手的检测方式。一个是自定义 console.log 加检测,一个是直接检测 console.log 函数本身是否是自己新定义的东西。结合一些反 monkey-patching 的方法,黑盒搞起来会更难入手(不过对于抓包干掉的话一样无效)

    上面我提到的方法本质上就是注入进 console.log 然后破坏 console.log 的默认机制。vconsole 原理差不多,自定义一个新的 console 绕开 devtool
    按照目前作者检测 vconsole 的方法来说,可能换一个作者没处理的 vconsole 也能绕开(性能检测可能会是个问题,但至少不会无解)
    zsdroid
        18
    zsdroid  
       200 天前
    Masoud2023
        20
    Masoud2023  
       200 天前
    js 层面感觉做这种自欺欺人的东西根本没有什么意义。

    真喜欢搞这种那就上 wasm 啊,想办法拿 wasm 加密 js 层再吐给 v8 ,或者干脆你真牛逼就去 wasm 造核心逻辑。

    可惜喜欢提出这种问题的一般都不会这种“高端技术”🤣。
    mmdsun
        21
    mmdsun  
       200 天前
    油猴注入个脚本就行。
    luckyrayyy
        22
    luckyrayyy  
       200 天前
    这种真的有啥意义嘛,我个后端都能靠朴素的办法直接 chrome 停用 JS 进去
    Greatshu
        23
    Greatshu  
       200 天前 via Android
    没法禁用,不过可以检测到 devtools 打开就开始挖矿,如果有用户系统的可以配置检测到 devtools 打卡就封号
    montaro2017
        24
    montaro2017  
       199 天前
    生产环境上用过这个库,最后因为有反馈误触发,最后取消了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   975 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:55 · PVG 06:55 · LAX 15:55 · JFK 18:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.