随笔记录下某网站禁止通过F12, Ctrl+Shift+I等快捷键来打开开发者工具,其次通过浏览器宽高定时来重定向。
- 目标网站
aHR0cHM6Ly93d3cuemhpaHUuY29tL21hcmtldC9wYWlkX2NvbHVtbi8xNjkxOTY2MTg4MzY2ODYwMjg4L3NlY3Rpb24vMTc1MjcyNjI3MjMzMjIxMDE3Nw==
-
问题描述
当我们通过F12或者Ctrl+Shift+I去打开开发者工具的时候,并不能打开,没有任何反应,这个时候猜测,有可能是触发了快捷键或者功能键,被禁止,然后我们另辟蹊径,又通过右上角->更多工具->开发者工具先打开,然后再粘贴网站,发现几秒之后重定向到空白页面,这个时候猜测可能检测了浏览器宽高啥的,但是我们打开如下图模式,再打开网站,还是重定向到空白窗口,这个时候就 需要通过断点来进行分析
-
进行script断点分析
打开开发者工具,然后进行script断点,然后打开目标网站,会断住,然后一直跳过,会来到一个可疑的js如下:
然后进行搜索123,发现有3处
其中一段js正是监控了F12如下:
e.addEventListener("keydown", (function(n) {var i = (n = n || e.event).keyCode || n.which;if (123 === i || t(n, i) || o(n, i))return F(e, n) } ), !0)
为什么这里是123呢,搜索相关的功能键码表如下:
按键 键码 按键 键码 F1 112 F7 118 F2 113 F8 119 F3 114 F9 120 F4 115 F10 121 F5 116 F11 122 F6 117 F12 123 完整可参考:https://blog.csdn.net/JayceDeng/article/details/78474652
除了F12,其次还对meta,alt,ctrl,shift做了相关检测,具体可参考web API:https://developer.mozilla.org/zh-CN/docs/Web/API/KeyboardEvent/keyCode
那为啥会重定向呢?我们在中搜索window.innerWidth,定位到如下图:
也就是说当e||n 满足 条件的时候,就会走this.onDevToolOpen()这个方法,那我们搜索看一看,定位到如下图:
我们可以在 A.ondevtoolopen(this.type, _) 打上断点,然后进行释放,重新开始
_ 是一个函数,我们点进去,如下图:
经过分析,核心就在window.history.back() 和下面的setTimeout里面
查Web API
就知道原因所在了,这个js中还有其他点的检测,就不过多累赘。
-
解决方案
将这个js保存到本地,然后替换掉所有检测点(太多可能不太现实),可以考虑置空或者留个打印就行了