禁用 devtools 的奇技淫巧 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要回答技术问题时复制粘贴 AI 生成的内容
shadowfish0
V2EX    程序员

禁用 devtools 的奇技淫巧

  •  
  •   shadowfish0 2023-10-10 01:15:22 +08:00 5750 次点击
    这是一个创建于 779 天前的主题,其中的信息可能已经有所发展或是发生改变。
    发现一个神奇的库,可以禁用网站 devtools 达到保护源码的目的

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

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

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

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

    抛开场景谈技术,没意义
    liuidetmks
        8
    liuidetmks  
       2023-10-10 08:46:41 +08:00
    没什么意义,不如混淆或者 wasm
    Blanke
        9
    Blanke  
       2023-10-10 08:57:37 +08:00
    没什么卵用
    Masoud2023
        10
    Masoud2023  
       2023-10-10 09:38:23 +08:00   8
    与其在前端想方设法保护那点弱智代码,还不如在后端方向想想怎么做一些校验或者风控
    zxcholmes
        11
    zxcholmes  
       2023-10-10 12:23:14 +08:00
    用 fiddler 之类代理,劫持请求,修改 response ,把这个 js 逻辑去掉,随便 devtools ,有人会说 https ?装根证书不就行了,https 改包对 fiddler 也不是难事
    solobat
        12
    solobat  
       2023-10-10 13:42:04 +08:00
    找一个或开发个浏览器扩展,劫持请求,修改 js url 或内容就行了
    Rache1
        13
    Rache1  
       2023-10-10 13:50:02 +08:00
    IT 民科
    AtlantaANiu
        14
    AtlantaANiu  
       2023-10-10 14:21:42 +08:00
    主要还是利用了 log 的惰性执行这个特性,找个脚本注入插件,重写一下 conosle.log 函数就能绕过
    zsh2517
        15
    zsh2517  
       2023-10-10 15:13:13 +08:00   2
    用官方 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  
       2023-10-10 15:16:35 +08:00
    @zsh2517 补充,这是建立在白盒测试的情况下,我能直接针对检测的方式入手。如果直接给我个用了它的网站(甚至还是混淆代码之后的),我感觉我可能还真弄不出来
    zsh2517
        17
    zsh2517  
       2023-10-10 15:30:36 +08:00
    再补充:我也不知道为啥作者没有添加一种从 console.log 函数本身入手的检测方式。一个是自定义 console.log 加检测,一个是直接检测 console.log 函数本身是否是自己新定义的东西。结合一些反 monkey-patching 的方法,黑盒搞起来会更难入手(不过对于抓包干掉的话一样无效)

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

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

    可惜喜欢提出这种问题的一般都不会这种“高端技术”。
    mmdsun
        21
    mmdsun  
       2023-10-10 17:28:57 +08:00
    油猴注入个脚本就行。
    luckyrayyy
        22
    luckyrayyy  
       2023-10-10 17:41:54 +08:00
    这种真的有啥意义嘛,我个后端都能靠朴素的办法直接 chrome 停用 JS 进去
    Greatshu
        23
    Greatshu  
       2023-10-11 01:51:32 +08:00 via Android
    没法禁用,不过可以检测到 devtools 打开就开始挖矿,如果有用户系统的可以配置检测到 devtools 打卡就封号
    montaro2017
        24
    montaro2017  
       2023-10-11 16:54:06 +08:00
    生产环境上用过这个库,最后因为有反馈误触发,最后取消了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2931 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 13:28 PVG 21:28 LAX 05:28 JFK 08:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86