js屏蔽F12审查元素,禁止修改页面代码等实现代码


Posted in Javascript onOctober 02, 2020

众所周知,审查元素的情况下,大家都可以随机更改一部分页面的代码,注入恶意JS等等,这种情况避免也不难,虽然还能看到一部分H5源码,但是无法修改

一、屏蔽F12 审查元素

document.onkeydown = function(){
  if(window.event && window.event.keyCode == 123) {
    alert("F12被禁用");
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n请使用Del键进行字符的删除操作!");
    window.event.returnValue=false;
  }
}

如果想要禁用右键 不提示可以使用下面的代码

document.onkeydown = function(){
  if(window.event && window.event.keyCode == 123) {    
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n请使用Del键进行字符的删除操作!");
    window.event.returnValue=false;
  }
}

还有其他的玩法 也可以让用户按F12我们关闭网页 或者跳转其他页面

<script type="text/javascript">
document.onkeydown = function(){
 
  if(window.event && window.event.keyCode == 123) {
    window.close(); //关闭当前窗口(防抽)
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n请使用Del键进行字符的删除操作!");
    window.event.returnValue=false;
  }
 
}
</script>

按住F12空白页面 或者跳转其他页面

<script type="text/javascript">
document.onkeydown = function(){
 
  if(window.event && window.event.keyCode == 123) {
    window.location="about:blank"; //将当前窗口跳转置空白页
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n请使用Del键进行字符的删除操作!");
    window.event.returnValue=false;
  }
 
}
</script>

除了屏蔽这个,我们还有其他有趣的设置:

二、屏蔽右键菜单

document.oncontextmenu = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

三、屏蔽粘贴

document.onpaste = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

四、屏蔽复制

document.oncopy = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if(!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

五、屏蔽剪切

document.oncut = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if(!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

这种很适合小说网站,毕竟版权珍贵,被别人随意copy走内容就不好了

六、屏蔽选中

document.onselectstart = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
} catch (e) {
return false;
}
}

当然js屏蔽chrome F12后页面自动跳转可以参考这篇文章

js检测用户是否打开调试工具(chrome)

(function(){ var re=/x/; var i=0; console.log(re); re.toString=function(){ window.close(); return '第'+(++i)+'次打开控制台'; } })();

JavaScript检测是否开启了控制台(调试工具)

测试后在chrome有效

不少人防止别人趴源码,一般采用检测按键F12之类的,但是这些基本没什么用

现在介绍一个方法,非常管用,可以检测到你是否开启了控制台程序,可以算是JavaScript的一些奇淫巧技

将这段代码加入你的网站即可,原理不明 = -

(function () {
var re = /x/;
var i = 0;
console.log(re);
 
re.toString = function () {
alert("请关闭控制台");
return '第 ' + (++i) + ' 次打开控制台';
};
})();

然后你在打开控制台,即会弹出对话框

js检测开发者工具Devtools是否打开防调试

之前写过一篇文章《Javascript检测开发者工具Devtools是否打开》,主要是讲如何通过js来检测开发者工具是否打开,防止别人恶意调试我们的代码,那段代码也是查了蛮多资料整理出来的,当时可以兼容chrome,firefox,ie,但是随着浏览器版本的更新,已经基本上没有作用了,最近我发现还是有蛮多人去浏览那篇文章,所以这里再放出一段代码,算是个升级版吧,之前的版本里在firefox上还有有限制的,下面提供的这个版本我测试过通杀现在的chrome 69,firefox,IE,也不存在之前firefox上存在的问题了,下面直接贴出代码:

setInterval(function() {
  check()
}, 4000);
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();

这段代码是什么原理,说实话我没搞太懂,也去请教过一些大佬,都不能完全说出其中的原理,如果有懂的朋友请一定不吝赐教,虽然不知道原理,但是效果的确是杠杠的,这是本人从huichan网站上截取的,这里不得不佩服那些做huichan的,太强大。由于以前代码是加密的,对于其中一些方法的命名我解密时都是随意取的,不喜勿喷。

当然这种伎俩对于熟悉调试的开发者来说,完全没有阻碍,但毕竟也能防范住一小批不怀好意的人,幸幸苦苦写出来的代码被别人悄悄的就搬走了,确实挺恼人的,但仅仅靠这么一个防调试的代码是不够的,我们还需要做的还有很多,比如一些基本的js的压缩混淆加密等等,后期本人会整理一些js加密混淆以及解密方面的文章,敬请期待...

Javascript 相关文章推荐
Js之软键盘实现(js源码)
Jan 30 Javascript
jQuery 处理表单元素的代码
Feb 15 Javascript
使用jquery的ajax需要注意的地方dataType的设置
Aug 12 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
用JS实现图片轮播效果代码(一)
Jun 26 Javascript
jQuery仿京东商城楼梯式导航定位菜单
Jul 25 Javascript
基于d3.js实现实时刷新的折线图
Aug 03 Javascript
关于angularJs指令的Scope(作用域)介绍
Oct 25 Javascript
微信小程序 label 组件详解及简单实例
Jan 10 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
Jun 09 Javascript
JS身份证信息验证正则表达式
Jun 12 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
Oct 01 #Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
Dec 01 #Javascript
在Vue里如何把网页的数据导出到Excel的方法
Sep 30 #Javascript
jQuery实现二级导航菜单的示例
Sep 30 #jQuery
javascript canvas封装动态时钟
Sep 30 #Javascript
VUE Elemen-ui之穿梭框使用方法详解
Jan 19 #Javascript
Vue实现穿梭框效果
Sep 30 #Javascript
You might like
PHP 高手之路(一)
2006/10/09 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
vue webpack重写cookie路径的方法
2019/07/10 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
python打开文件并获取文件相关属性的方法
2015/04/23 Python
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
个性大学生自我评价
2013/12/04 职场文书
学生会部长竞聘书
2014/03/31 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
道德模范事迹材料
2014/12/20 职场文书
作息时间调整通知
2015/04/22 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
护士工作心得体会
2016/01/25 职场文书