JS检测,禁用浏览器开发者工具之6大方法探讨
2023-09-11 14:14:50 时间
【第一种】 debugger
setInterval(function () {
check()
}, 1000);
var check = function () {
function doCheck(a) {
if (("" + a / a)["length"] !== 1 || a % 20 === 0) {
(function () { }
["constructor"]("debugger")())
} else {
(function () { }
["constructor"]("debugger")())
}
doCheck(++a)
}
try {
doCheck(0)
} catch (err) { }
};
check();
破解:把Chrome浏览器设定为Deactive breakpoint
【第二种】禁用右键 (防止右键查看源代码)
window.οncοntextmenu = function () { return false; };
破解:直接按快捷键或菜单开发者工具
【第三种】禁用按键
在本网页的任何键盘敲击事件都是无效操作 (防止F12和shift+ctrl+i调起开发者工具)
window.onkeydown = window.onkeyup = window.onkeypress = function () {
window.event.returnValue = false;
return false;
};
破解:
第二种和第三种的方法是:
在打开之前调出开发者工具,然后在地址栏输入网址即可
【第四种】监视窗口大小
如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面
var h = window.innerHeight,
w = window.innerWidth;
window.onresize = function () {
if (h != window.innerHeight || w != window.innerWidth) {
window.location = "https://www.baidu.com";
}
};
破解:开发工具设置成独立窗口
【第五种】监视DOM修改
好吧,你的开发者工具是单独的窗口显示,不会改变原来网页的高度和宽度,
但是你只要修改页面元素我就重新加载一次数据,让你无法修改页面元素(不支持IE9以下浏览器)
if (window.addEventListener) {
window.addEventListener("DOMCharacterDataModified", function () { window.location.reload(); }, true);
window.addEventListener("DOMAttributeNameChanged", function () { window.location.reload(); }, true);
window.addEventListener("DOMCharacterDataModified", function () { window.location.reload(); }, true);
window.addEventListener("DOMElementNameChanged", function () { window.location.reload(); }, true);
window.addEventListener("DOMNodeInserted", function () { window.location.reload(); }, true);
window.addEventListener("DOMNodeInsertedIntoDocument", function () { window.location.reload(); }, true);
window.addEventListener("DOMNodeRemoved", function () { window.location.reload(); }, true);
window.addEventListener("DOMNodeRemovedFromDocument", function () { window.location.reload(); }, true);
window.addEventListener("DOMSubtreeModified", function () { window.location.reload(); }, true);
}
破解:不修改dom页面元素,就不会触发
【第六种】不建议
只要打开控制台,就卡死,
https://z1.m1907.cn/
我打开控制台后 他加载了2个JS文件
https://cntv-201.m1907.cn/z1/js/main.d45e5bd3.chunk.js
https://cntv-203.m1970.cn/z1/js/2.f7be1498.chunk.js
重启浏览器后看 历史记录,发现他是疯狂的重载刷新网址,造成的浏览器卡死
破解:无,大家有什么好的办法可以说说
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>F12/检查/开发工具 禁用测试</title>
</head>
<body>
<h1>F12/检查/开发工具 禁用测试</h1>
<script>
//【第一种】 debugger
setInterval(function () {
check()
}, 1000);
var check = function () {
function doCheck(a) {
if (("" + a / a)["length"] !== 1 || a % 20 === 0) {
(function () { }
["constructor"]("debugger")())
} else {
(function () { }
["constructor"]("debugger")())
}
doCheck(++a)
}
try {
doCheck(0)
} catch (err) { }
};
check();
// 【第二种】禁用右键 (防止右键查看源代码)
window.οncοntextmenu = function () { return false; };
//【第三种】在本网页的任何键盘敲击事件都是无效操作 (防止F12和shift+ctrl+i调起开发者工具)
window.onkeydown = window.onkeyup = window.onkeypress = function () {
window.event.returnValue = false;
return false;
};
//【第四种】如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面
var h = window.innerHeight,
w = window.innerWidth;
window.onresize = function () {
if (h != window.innerHeight || w != window.innerWidth) {
window.location = "https://www.baidu.com";
}
};
//【第五种】监视DOM修改
/*好吧,你的开发者工具是单独的窗口显示,不会改变原来网页的高度和宽度,
但是你只要修改页面元素我就重新加载一次数据,让你无法修改页面元素(不支持IE9以下浏览器)*/
if (window.addEventListener) {
window.addEventListener("DOMCharacterDataModified", function () { window.location.reload(); }, true);
window.addEventListener("DOMAttributeNameChanged", function () { window.location.reload(); }, true);
window.addEventListener("DOMCharacterDataModified", function () { window.location.reload(); }, true);
window.addEventListener("DOMElementNameChanged", function () { window.location.reload(); }, true);
window.addEventListener("DOMNodeInserted", function () { window.location.reload(); }, true);
window.addEventListener("DOMNodeInsertedIntoDocument", function () { window.location.reload(); }, true);
window.addEventListener("DOMNodeRemoved", function () { window.location.reload(); }, true);
window.addEventListener("DOMNodeRemovedFromDocument", function () { window.location.reload(); }, true);
window.addEventListener("DOMSubtreeModified", function () { window.location.reload(); }, true);
}
</script>
</body>
</html>
压缩版JS
setInterval(function(){check()},1000);var check=function(){function doCheck(a){if((""+a/a)["length"]!==1||a%20===0){(function(){}["constructor"]("debugger")())}else{(function(){}["constructor"]("debugger")())}doCheck(++a)}try{doCheck(0)}catch(err){}};check();window.οncοntextmenu=function(){return false};window.onkeydown=window.onkeyup=window.onkeypress=function(){window.event.returnValue=false;return false};var h=window.innerHeight,w=window.innerWidth;window.onresize=function(){if(h!=window.innerHeight||w!=window.innerWidth){window.location="about:blank"}};if(window.addEventListener){window.addEventListener("DOMCharacterDataModified",function(){window.location.reload()},true);window.addEventListener("DOMAttributeNameChanged",function(){window.location.reload()},true);window.addEventListener("DOMCharacterDataModified",function(){window.location.reload()},true);window.addEventListener("DOMElementNameChanged",function(){window.location.reload()},true);window.addEventListener("DOMNodeInserted",function(){window.location.reload()},true);window.addEventListener("DOMNodeInsertedIntoDocument",function(){window.location.reload()},true);window.addEventListener("DOMNodeRemoved",function(){window.location.reload()},true);window.addEventListener("DOMNodeRemovedFromDocument",function(){window.location.reload()},true);window.addEventListener("DOMSubtreeModified",function(){window.location.reload()},true)};
参考:
前端页面通过js禁止打开调试模式的方法
https://blog.csdn.net/qq_38093702/article/details/82796925
爬虫笔记之JS检测浏览器开发者工具是否打开 【建议大家可以看看这个,讲的很细】
相关文章
- web项目中关于引入JS/css文件, 浏览器console出现 net::ERR_ABORTED错误的解决方法
- [转] 使用moment.js轻松管理日期和时间
- Js apply 方法 详解
- 玩转JS|解放双手,快手一键取消多个关注教程
- 【JS】js创建Object对象和构造函数的多种方法(综合示例)
- [转]js中confirm实现执行操作前弹出确认框的方法
- JS常用方法函数
- js 获取css非行内样式,你应该了解的getComputedStyle方法
- js中的方法调用
- JS中数组随机排序实现(原地算法sort/shuffle算法)
- 原生js仿jquery一些常用方法
- js sort方法根据数组中对象的某一个属性值进行排序
- 《Ember.js实战》——2.6 Ember.js实现各层间数据同步
- base.js,通用js方法,Js方法封装
- Jquery方法load之后导致js失效解决方法
- JS高阶---浏览器内核
- js添加删除class
- js数组的at方法
- js函数既可以接收单个参数也可以接收数组的方法
- [js高手之路] es6系列教程 - Map详解以及常用api
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展camelize与dasherize方法(3)
- js判断移动端是否安装某软软件,安装直接打开相应的链接,否则跳转到下载商店方法
- webpack配置:less/sass文件打包和分离、自动处理css前缀、消除未使用的css及完整的webpack.config.js文件
- 微信小程序---批量倒计时js方法通用
- JS中setTimeout()的使用方法具体解释
- JS 转化为String的三种方法
- js-原生Js汉语拼音首字母匹配城市名
- js获取DIV的位置坐标的三种方法
- RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错