发现一个神奇的库,可以禁用网站 devtools 达到保护源码的目的 github.com/theajack/disable-devtool有厉害的老哥有破解思路吗,我记得之前有人发过类似帖子,他那个提前打开 devtools 再输网址可破,但这个法子在这个库也没用了装了个禁用 js 的插件,但是 react 貌似就必须跑在 js 环境下,禁用的话整个页面都出不来了有点没思路了哈哈

只要用的谷歌别人就有办法打开,而且我用 playwright 之类的工具,一样可以获取你

imageimage

不清楚强度怎么样啊?道高一尺,魔高一丈

这跟发明永动机有啥区别?不管什么牛魔鬼怪,能 render 到浏览器上的东西都能看到源码,即使是 uglified 过的。

前端基本没啥秘密,只不过就是恶心程度不同

不如多几层混淆

这应用场景主要是反扒上面,增加难度而已。 抛开场景谈技术,没意义

没什么意义,不如混淆或者 wasm

没什么卵用

与其在前端想方设法保护那点弱智代码,还不如在后端方向想想怎么做一些校验或者风控

用 fiddler 之类代理,劫持请求,修改 response ,把这个 js 逻辑去掉,随便 devtools ,有人会说 https ?装根证书不就行了,https 改包对 fiddler 也不是难事

找一个或开发个浏览器扩展,劫持请求,修改 js url 或内容就行了

IT 民科 😆

主要还是利用了 log 的惰性执行这个特性,找个脚本注入插件,重写一下 conosle.log 函数就能绕过

用官方 demo ( 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 = () => { };如果想自动生效,油猴脚本加一个 // 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 是否被魔改过进行检测,又是一个新的话题了。可以参考比如 zhuanlan.zhihu.com/p/564194625---以上方法是从他检测机制直接入手的。简单点的方式,比如直接拦截请求,把脚本生效的地方干掉、字符串替换把 md5 换成自己知道的密码等等。这个脚本、油猴以及抓包都能干,就不试了

补充,这是建立在白盒测试的情况下,我能直接针对检测的方式入手。如果直接给我个用了它的网站(甚至还是混淆代码之后的),我感觉我可能还真弄不出来

再补充:我也不知道为啥作者没有添加一种从 console.log 函数本身入手的检测方式。一个是自定义 console.log 加检测,一个是直接检测 console.log 函数本身是否是自己新定义的东西。结合一些反 monkey-patching 的方法,黑盒搞起来会更难入手(不过对于抓包干掉的话一样无效)上面我提到的方法本质上就是注入进 console.log 然后破坏 console.log 的默认机制。vconsole 原理差不多,自定义一个新的 console 绕开 devtool按照目前作者检测 vconsole 的方法来说,可能换一个作者没处理的 vconsole 也能绕开(性能检测可能会是个问题,但至少不会无解)

view-source: theajack.github.io/disable-devtool/

老天爷都在帮我image

js 层面感觉做这种自欺欺人的东西根本没有什么意义。真喜欢搞这种那就上 wasm 啊,想办法拿 wasm 加密 js 层再吐给 v8 ,或者干脆你真牛逼就去 wasm 造核心逻辑。可惜喜欢提出这种问题的一般都不会这种“高端技术”🤣。

油猴注入个脚本就行。

这种真的有啥意义嘛,我个后端都能靠朴素的办法直接 chrome 停用 JS 进去

没法禁用,不过可以检测到 devtools 打开就开始挖矿,如果有用户系统的可以配置检测到 devtools 打卡就封号