Jichen

Back

前端项目反调试Blur image

完整代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <h3 id="oneTitle">我是一个标题</h3>

    <script>
      (() => {
        function block() {
            if (window.outerHeight - window.innerHeight > 200 || window.outerWidth - window.innerWidth > 200) {
                document.body.innerHTML = "检测到非法调试, 请关闭后刷新重试!";
            }
            setInterval(() => {
                (function () {
                    return false;
                }
                ['constructor']('debugger')
                ['call']());
            }, 50);
        }
        try {
            block();
        } catch (err) { }
    })();
    
    // 注册事件监听器
    (function registerEventListener() {
      // 添加检测 F12 键的事件
      window.addEventListener('keydown', (event) => {
          if (event.key === 'F12') {
              // 隐藏标题内容并显示警告信息
              document.getElementById('oneTitle').style.display = 'none';
              const warningMessage = document.createElement('div');
              warningMessage.textContent = "检测 F12 键的事件, 已阻止打开控制台!";
              document.body.appendChild(warningMessage);
              event.preventDefault(); // 阻止默认行为, 通常是打开控制台
              
              // 设置定时器, 1秒后恢复标题内容
              setTimeout(() => {
                  document.body.removeChild(warningMessage);
                  document.getElementById('oneTitle').style.display = 'block';
              }, 1000);
          }
      });

      // 添加检测鼠标右键的事件
      window.addEventListener('contextmenu', (event) => {
          // 隐藏标题内容并显示警告信息
          document.getElementById('oneTitle').style.display = 'none';
          const warningMessage = document.createElement('div');
          warningMessage.textContent = "检测鼠标右键的事件, 已阻止打开右键菜单!";
          document.body.appendChild(warningMessage);
          event.preventDefault(); // 阻止默认行为, 通常是打开右键菜单
          
          // 设置定时器, 1秒后恢复标题内容
          setTimeout(() => {
              document.body.removeChild(warningMessage);
              document.getElementById('oneTitle').style.display = 'block';
          }, 1000);
      });
    })();
  </script>
    
</body>
</html>
html
前端项目反调试
https://shujichen.com/blog/frontendantidebugging
Author Jichen
Published at November 20, 2024
Comment seems to stuck. Try to refresh?✨