1
zeusho871 2023-10-10 01:22:29 +08:00 via Android
只要用的谷歌别人就有办法打开,而且我用 playwright 之类的工具,一样可以获取你
|
2
lisongeee 2023-10-10 01:22:46 +08:00 4
|
3
comingnine 2023-10-10 01:54:10 +08:00
不清楚强度怎么样啊?道高一尺,魔高一丈
|
4
Perry 2023-10-10 06:31:46 +08:00 via iPhone 1
这跟发明永动机有啥区别?不管什么牛魔鬼怪,能 render 到浏览器上的东西都能看到源码,即使是 uglified 过的。
|
5
yanyao233 2023-10-10 06:51:21 +08:00 via Android
前端基本没啥秘密,只不过就是恶心程度不同
|
6
k9982874 2023-10-10 08:13:40 +08:00
不如多几层混淆
|
7
sunorg 2023-10-10 08:27:39 +08:00 via Android
这应用场景主要是反扒上面,增加难度而已。
抛开场景谈技术,没意义 |
8
liuidetmks 2023-10-10 08:46:41 +08:00
没什么意义,不如混淆或者 wasm
|
9
Blanke 2023-10-10 08:57:37 +08:00
没什么卵用
|
10
Masoud2023 2023-10-10 09:38:23 +08:00 7
与其在前端想方设法保护那点弱智代码,还不如在后端方向想想怎么做一些校验或者风控
|
11
zxcholmes 2023-10-10 12:23:14 +08:00
用 fiddler 之类代理,劫持请求,修改 response ,把这个 js 逻辑去掉,随便 devtools ,有人会说 https ?装根证书不就行了,https 改包对 fiddler 也不是难事
|
12
solobat 2023-10-10 13:42:04 +08:00
找一个或开发个浏览器扩展,劫持请求,修改 js url 或内容就行了
|
13
Rache1 2023-10-10 13:50:02 +08:00
IT 民科 😆
|
14
AtlantaANiu 2023-10-10 14:21:42 +08:00
主要还是利用了 log 的惰性执行这个特性,找个脚本注入插件,重写一下 conosle.log 函数就能绕过
|
15
zsh2517 2023-10-10 15:13:13 +08:00 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 换成自己知道的密码等等。这个脚本、油猴以及抓包都能干,就不试了 |
16
zsh2517 2023-10-10 15:16:35 +08:00
@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 也能绕开(性能检测可能会是个问题,但至少不会无解) |
18
zsdroid 2023-10-10 16:07:38 +08:00
view-source:https://theajack.github.io/disable-devtool/
|
19
lete 2023-10-10 16:45:30 +08:00
|
20
Masoud2023 2023-10-10 17:07:39 +08:00
js 层面感觉做这种自欺欺人的东西根本没有什么意义。
真喜欢搞这种那就上 wasm 啊,想办法拿 wasm 加密 js 层再吐给 v8 ,或者干脆你真牛逼就去 wasm 造核心逻辑。 可惜喜欢提出这种问题的一般都不会这种“高端技术”🤣。 |
21
mmdsun 2023-10-10 17:28:57 +08:00
油猴注入个脚本就行。
|
22
luckyrayyy 2023-10-10 17:41:54 +08:00
这种真的有啥意义嘛,我个后端都能靠朴素的办法直接 chrome 停用 JS 进去
|
23
Greatshu 2023-10-11 01:51:32 +08:00 via Android
没法禁用,不过可以检测到 devtools 打开就开始挖矿,如果有用户系统的可以配置检测到 devtools 打卡就封号
|
24
montaro2017 2023-10-11 16:54:06 +08:00
生产环境上用过这个库,最后因为有反馈误触发,最后取消了
|