随笔记录下某网站禁止通过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呢,搜索相关的功能键码表如下:

    按键键码按键键码
    F1112F7118
    F2113F8119
    F3114F9120
    F4115F10121
    F5116F11122
    F6117F12123

    完整可参考:https://blog.csdn/JayceDeng/article/details/78474652

    除了F12,其次还对meta,alt,ctrl,shift做了相关检测,具体可参考web API:https://developer.mozilla/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保存到本地,然后替换掉所有检测点(太多可能不太现实),可以考虑置空或者留个打印就行了