返回列表 发新帖

网页JS基础保护

[复制链接]

108

主题

1166

回帖

4902

积分

大学生

https://director4168.github.io

Rank: 5Rank: 5

金币
3108
好评
8
信誉
100

考神MT论坛新人MT论坛最佳新人MT论坛帅哥

QQ
发表于 2026-4-8 13:10:26 来自手机  | 显示全部楼层 | 阅读模式  来自 河南
本帖最后由 director_mark 于 2026-4-8 14:09 编辑

分享一个基础的保护H5项目的俩JS
  1. (function() {
  2.         'use strict';
  3.         const PROTECT_SRC = './js/Protect.js';
  4.         let coreInitialized = false;
  5.         function isProtectReallyLoaded() {
  6.                 const scripts = document.querySelectorAll('script[src]');
  7.                 let scriptFound = false;
  8.                 for (let s of scripts) {
  9.                         const src = s.src || '';
  10.                         if (src.includes('Protect.js') || src.endsWith('Protect.js')) {
  11.                                 scriptFound = true;
  12.                                 break;
  13.                         }
  14.                 }
  15.                 const flagSet = window.__PROTECT_LOADED === true;
  16.                 return scriptFound && flagSet;
  17.         }
  18.         function CoreFeatures() {
  19.                 if (coreInitialized) return;
  20.                 coreInitialized = true;
  21. =========================
  22. 你的JS
  23. =========================
  24. }
  25.         function startAntiDebug() {
  26.                 setInterval(() => {
  27.                         const devtools = window.outerWidth - window.innerWidth > 200 ||
  28.                         window.outerHeight - window.innerHeight > 200;
  29.                         if (devtools) {
  30.                                 console.clear();
  31.                                 document.body.innerHTML = '<h1 style="color:red;text-align:center;padding:50px;">ERROR</h1>';
  32.                         }
  33.                 },
  34.                         600);
  35.         }
  36.         function checkAndRun() {
  37.                 if (coreInitialized) return;
  38.                 let attempts = 0;
  39.                 const maxAttempts = 20;

  40.                 const checker = setInterval(() => {
  41.                         attempts++;

  42.                         if (isProtectReallyLoaded()) {
  43.                                 clearInterval(checker);
  44.                                 CoreFeatures();
  45.                                 return;
  46.                         }
  47.                         if (attempts >= maxAttempts) {
  48.                                 clearInterval(checker);
  49.                                 console.warn('[ERROR] ERROR');
  50.                                 const warnDiv = document.createElement('div');
  51.                                 warnDiv.style.cssText = 'position:fixed;top:0;left:0;right:0;background:#d32f2f;color:#fff;padding:14px;text-align:center;z-index:99999;font-size:15px;';
  52.                                 warnDiv.textContent = 'ERROR';
  53.                                 document.body.prepend(warnDiv);
  54.                         }
  55.                 },
  56.                         100);
  57.         }
  58.         if (document.readyState === 'loading') {
  59.                 document.addEventListener('DOMContentLoaded', checkAndRun);
  60.         } else {
  61.                 checkAndRun();
  62.         }
  63.         window.__CORE_READY = true;
  64. })();
复制代码


提供基础反F12,检查是否加载了指定JS(这里检查的是是否加载了同目录下Protect.js,如果没有检测加载了指定JS,则不会运行CoreFeatures函数内的JS,并在顶部添加一个红色的警告框内容为ERROR

  1. document.addEventListener('DOMContentLoaded', function() {
  2.         Object.defineProperty(document, 'designMode', {
  3.                 value: 'off',
  4.                 writable: false,
  5.                 configurable: false
  6.         });
  7.         document.onkeydown = function(e) {
  8.                 if (
  9.                         e.key === 'F12' ||
  10.                         (e.ctrlKey && e.shiftKey && e.key === 'I') ||
  11.                         (e.ctrlKey && e.shiftKey && e.key === 'J') ||
  12.                         (e.ctrlKey && e.key === 'u')
  13.                 ) {
  14.                         return false;
  15.                 }
  16.         };
  17.         document.oncontextmenu = function(e) {
  18.                 if (e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA') {
  19.                         return false;
  20.                 }
  21.         };
  22.         const observer = new MutationObserver(function(mutations) {
  23.                 mutations.forEach(function(mutation) {
  24.                         if (mutation.type === 'characterData') {
  25.                                 mutation.target.textContent = mutation.oldValue;
  26.                         }
  27.                         if (mutation.type === 'childList') {
  28.                                 mutation.removedNodes.forEach(node => {
  29.                                         if (node.parentNode) {
  30.                                                 node.parentNode.appendChild(node);
  31.                                         }
  32.                                 });
  33.                         }
  34.                 });
  35.         });
  36.         observer.observe(document.body, {
  37.                 childList: true,
  38.                 characterData: true,
  39.                 characterDataOldValue: true,
  40.                 subtree: true
  41.         });
  42.     window.__PROTECT_LOADED = true;
  43. });
复制代码


提供基础反F12、反右键、反编辑、反开发者快捷键、防篡改监控
并告诉是上一个JS,他要求必须加载的那个JS已加载



以上两个都只能针对小白,仅提供基础防护功能



我的网站由InfinityFree提供托管
我的网站由Github Pages提供托管


例图(没有加载Protect.js,可以看到,顶部出现了一个红色警告框,并且预览器处于深色模式,但是网页没有正常处于深色模式)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

2968

回帖

6905

积分

硕士生

Rank: 6Rank: 6

金币
3326
好评
0
信誉
100

MT论坛新人考神MT论坛帅哥

发表于 2026-4-8 16:48:27 来自手机  | 显示全部楼层  来自 浙江
感谢分享
回复

使用道具 举报

8

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
5141
好评
1
信誉
100
发表于 2026-4-8 19:56:47 来自手机  | 显示全部楼层  来自 山东
感谢分享
回复

使用道具 举报

7

主题

2093

回帖

5259

积分

硕士生

Rank: 6Rank: 6

金币
4601
好评
0
信誉
117
发表于 2026-4-9 07:24:23 来自手机  | 显示全部楼层  来自 湖南
感谢分享
回复

使用道具 举报

0

主题

716

回帖

2065

积分

大学生

Rank: 5Rank: 5

金币
1066
好评
0
信誉
100

MT论坛新人考神MT论坛帅哥MT论坛最佳新人

发表于 2026-4-9 07:51:13 来自手机  | 显示全部楼层  来自 江西
卡bug了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

108

主题

1166

回帖

4902

积分

大学生

https://director4168.github.io

Rank: 5Rank: 5

金币
3108
好评
8
信誉
100

考神MT论坛新人MT论坛最佳新人MT论坛帅哥

QQ
发表于 2026-4-9 11:53:26 来自手机  | 显示全部楼层  来自 河南
蓝桉 发表于 2026-4-9 07:51
卡bug了

这bug卡的,如果是真的就好了
回复

使用道具 举报

0

主题

774

回帖

2129

积分

大学生

Rank: 5Rank: 5

金币
2179
好评
0
信誉
101
发表于 2026-4-9 12:38:51 | 显示全部楼层  来自 新疆
感谢分享
回复

使用道具 举报

0

主题

165

回帖

324

积分

初中生

Rank: 3Rank: 3

金币
173
好评
0
信誉
100

考神

发表于 2026-4-9 13:03:44 来自手机  | 显示全部楼层  来自 吉林
大佬威武大佬厉害大佬666
回复

使用道具 举报

0

主题

716

回帖

2065

积分

大学生

Rank: 5Rank: 5

金币
1066
好评
0
信誉
100

MT论坛新人考神MT论坛帅哥MT论坛最佳新人

发表于 2026-4-9 23:02:19 来自手机  | 显示全部楼层  来自 江西
director_mark 发表于 2026-4-9 11:53
这bug卡的,如果是真的就好了

哈哈哈哈
回复

使用道具 举报

1

主题

1万

回帖

3万

积分

博士后

Rank: 8Rank: 8

金币
9013
好评
4
信誉
1302

考神MT论坛帅哥MT论坛新人

发表于 2026-4-22 07:23:16 来自手机  | 显示全部楼层  来自 广西
看看
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表