LV02-NexT-06-网页禁止F12

本文主要是如何禁止右键和F12的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows windows11
Ubuntu Ubuntu16.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
点击查看本文参考资料
分类 网址 说明
--- --- ---
点击查看相关文件下载
--- ---

我们知道在浏览器【右键】→【检查】或者直接按F12就可以打开网页源代码进行调试,那我们要是不想让别人看我们网页的源代码呢?

一、实现方式

1. 方式一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$(function(){
$(document).bind("contextmenu", function () {
return false;
});//禁止右键
document.oncontextmenu = function () {
return false;
};
document.onkeydown = function () {
if (window.event && window.event.keyCode == 123) {
event.keyCode = 0;
event.returnValue = false;
return false;
}
};//禁止F12
})

2. 方式二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
//禁用右键(防止右键查看源代码)
window.oncontextmenu=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.close();
window.location = "about:blank";
}
}
</script>

这段代码有个问题,就是它禁止所有的键盘敲击事件,也就意味着我们无法使用Ctrl+c或者输入某些内容(例如文章加密需要输入密码查看?)

3. 方式三

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<script type="text/javascript">
//禁用右键(防止右键查看源代码)
window.oncontextmenu=function(){return false;}
//禁止任何键盘敲击事件(防止F12和shift+ctrl+i调起开发者工具)
window.onkeydown = window.onkeyup = window.onkeypress = function () {
//alert(window.event.keyCode);
if(event.ctrlKey && event.shiftKey && window.event.keyCode == 73){
//alert("Ctrl+Shift+i被禁用");
window.event.returnValue = false;
return false;
}
if(window.event.keyCode == 123) {
//alert("F12被禁用");
window.event.returnValue = false;
return false;
}

}
//如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面
var h = window.innerHeight,w=window.innerWidth;
window.onresize = function () {
if (h!= window.innerHeight||w!=window.innerWidth){
window.close();
window.location = "about:blank";
}
}
</script>
点击查看 Keycode 对照表
  • 字母和数字键的键码值(keyCode)
字母和数字键的键码值(keyCode)
按键键码按键键码按键键码按键键码
A65J74S83149
B66K75T84250
C67L76U85351
D68M77V86452
E69N78W87553
F70O79X88654
G71P80Y89755
H72Q81Z90856
I73R82048957
  • 小键盘与功能键
数字键盘上的键的键码值(keyCode)功能键键码值(keyCode)
按键键码按键键码按键键码按键键码
0968104F1112F7118
1979105F2113F8119
298*106F3114F9120
399+107F4115F10121
4100Enter108F5116F11122
5101-109F6117F12123
6102.110    
7103/111    

这种根据窗口大小变化来关闭页面的方法会导致手机端无法滑动,滑动或者操作会被判定为改变分辨率造成强制关闭网页的情况。那怎么解决呢?我们可以判断一下是否在手机端,若是在手机端,那就一般是打不开控制台的,所以不需要考虑跳转空网页的操作。

点击查看修改后的代码内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{% if theme.browser_tools %}
<script type="text/javascript">
//禁用右键(防止右键查看源代码)
window.oncontextmenu=function(){return false;}
//禁止任何键盘敲击事件(防止F12和shift+ctrl+i调起开发者工具)
window.onkeydown = window.onkeyup = window.onkeypress = function () {
//alert(window.event.keyCode);
if(event.ctrlKey && event.shiftKey && window.event.keyCode == 73){
//alert("Ctrl+Shift+i被禁用");
window.event.returnValue = false;
return false;
}
if(window.event.keyCode == 123) {
//alert("F12被禁用");
window.event.returnValue = false;
return false;
}

}
//判断是手机端还是PC端
console.log(navigator.userAgent);
var os = function (){
var ua = navigator.userAgent,
isWindowsPhone = /(?:Windows Phone)/.test(ua),
isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,
isAndroid = /(?:Android)/.test(ua),
isFireFox = /(?:Firefox)/.test(ua),
isChrome = /(?:Chrome|CriOS)/.test(ua),
isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)),
isPhone = /(?:iPhone)/.test(ua) && !isTablet,
isPc = !isPhone && !isAndroid && !isSymbian;
return {
isTablet: isTablet,
isPhone: isPhone,
isAndroid: isAndroid,
isPc: isPc
};
}();

if(os.isPc) {
//如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面
var h = window.innerHeight,w=window.innerWidth;
window.onresize = function () {
//console.log("h %d,w %d", window.innerHeight,window.innerWidth);
if (h!= window.innerHeight||w!=window.innerWidth){
window.close();
window.location = "about:blank";
}
}
}
</script>
{% endif %}

二、如何解禁?

其实上面两种方式是挡不住真正的前端大佬的,有下面的几种方式依然可以打开。

1. view-source

view-source 是一种查看代码源的协议。通常在网址前加上前缀“view-source:”即可获取该网页的源代码。但是,并非所有网站都支持这种协议。例如现在要查看百度主页的源码,我们可以直接在地址栏输入下面的内容:

1
view-source:https://www.baidu.com

2. 提前按F12

在打开被禁止的页面前,我们找一个能打开调试控制台的页面,直接按下F12打开调试页面,然后再打开被禁止的页面。

3. 地址栏

鼠标点击一下地址栏,然后再按F12也可以打开被禁止右键和F12的页面的调试页面。