概述
众所周知,对于开发者而言,肯定是不想把网页核心代码暴露在网上的,防止其他人绕过验证等非法获取数据资源。一旦用户能开启元素审核控制台,特别是对于一些精湛的技术人员来说,就意味着你的数据正在裸奔。但是怎么样才能在前端屏蔽掉用户使用web浏览器自带的元素审核控制台呢?网上有大量教程,但是总是漏洞百出,下面举例网上的源码问题
大部分网上给的教程会有如下几个常见的漏洞:
1.危险指数★★★★★|源码根本不起作用,控制台报错。
2.危险指数★★★★☆|源码只能简单在按第一次F12时弹窗提示,当连续按F12时便失效。
3.危险指数★★★☆☆|源码只能通过循环的方式让前台无法使用F12审查元素,但在设置中打开控制台或按F11再按F12失效。
4.危险指数★★☆☆☆|源码可屏蔽F12和F11,但是不兼容众多浏览器,用户前台调试时增加服务器荷载,导致失效。
上述的网上源码均存在不兼容浏览器的问题,且容易失效。
<!--禁用控制台-->
document.addEventListener("touchmove", function (e) { e.preventDefault() }, false);
$(document).ready(function () {
$(document).bind("contextmenu", function (e) { return false; });
});
$(document).ready(function () {
$(document).bind("keydown", function (e) { e = window.event || e; if (e.keyCode == 118) { e.keyCode = 0; return false; } });
});
$(document).ready(function () {
$(document).bind("keydown", function (e) { e = window.event || e; if (e.keyCode == 122) { e.keyCode = 0; return false; } });
});
$(document).ready(function () {
$(document).bind("keydown", function (e) { e = window.event || e; if (e.keyCode == 123) { e.keyCode = 0; return false; } });
});
console.clear();
(function(vkR1) {
"use strict";
var KVfBefY2 = KVfBefY2 || {};
function i(KDpJ$sfd3) {
if (typeof KDpJ$sfd3 === "function") {
KDpJ$sfd3 = {
onchange: KDpJ$sfd3
}
}
KDpJ$sfd3 = KDpJ$sfd3 || {};
var Lhqw4 = KDpJ$sfd3['delay'] || 1e3;
var $H5 = {};
$H5['onchange'] = KDpJ$sfd3['onchange'];
var Tkig6;
var ny$fQ7 = new Image;
ny$fQ7['__defineGetter__']("id", function() {
Tkig6 = "on"
});
var CFJMu8 = "unknown";
function f() {
return CFJMu8
}
$H5['getStatus'] = f;
function u() {
if (window['Firebug'] && window['Firebug']['chrome'] && window['Firebug']['chrome']['isInitialized']) {
a("on");
return
}
Tkig6 = "off";
console['log'](ny$fQ7);
console['clear']();
a(Tkig6);
}
function a(wmQO9) {
if (CFJMu8 !== wmQO9) {
CFJMu8 = wmQO9;
if (typeof $H5['onchange'] === "function") {
$H5['onchange'](wmQO9)
}
}
}
var Pmgr10 = setInterval(u, Lhqw4);
window['addEventListener']("resize", u);
var I$UnGT12;
function l() {
if (I$UnGT12) {
return
}
I$UnGT12 = true;
window['removeEventListener']("resize", u);
clearInterval(Pmgr10)
}
$H5['free'] = l;
return $H5
}
KVfBefY2['create'] = i;
if (typeof define === "function") {
if (define['amd'] || define['cmd']) {
define(function() {
return KVfBefY2
})
}
} else if (typeof module !== "undefined" && module['exports']) {
module['exports'] = KVfBefY2
} else {
window[vkR1] = KVfBefY2
}
})("ttzw");
var dZBVo13 = function() {};
ttzw['create'](function(ZTFnkfR14) {
if (ZTFnkfR14 == "on") {
t();
return false
}
});
function t() {
var Yowv15 = "";
for (var XcZRrDf$D16 = 0; XcZRrDf$D16 < 1000000; XcZRrDf$D16++) {
Yowv15 = Yowv15 + XcZRrDf$D16['toString']();
history['pushState'](0, 0, Yowv15);
}
}
function w() {
window['location']['href'] = "http://www.baidu.com/";
return false
}
window['onresize'] = function() {
if (top['window']['outerHeight'] - top['window']['innerHeight'] > 200) {
w()
}
if (top['window']['outerWidth'] - top['window']['innerWidth'] > 200) {
w()
}
};
<!--禁用控制台-->
源码的优点:
1.屏蔽掉F7/F11/F12按键;
2.兼容几乎所有浏览器(实验室测试结果);
3.后台自动检查前台是否多次使用F7/F11/F12等关键按键动作,发现即屏蔽;因此就算多次按键均无反应;
4.网站直接屏蔽用户前台使用控制器,即用户在开发者设置中打开控制台直接跳转百度搜索;
5.用户可自定义屏蔽按键,比如屏蔽F5刷新等。
使用方法
将上述代码插入到主页逻辑层js文件适当位置即可,建议先备份好文件再进行尝试。对于typecho用户则放在自定义js文件靠前面即可。
修改须知
购买用户可根据自己需求对源码进行修改、增添或删除