四行js代码让别人无法复制你的网站文字,八行程序员都哭了

简介: 我们常常会看到百度文库或者其他网站的文字无法复制,你想知道这种做法是如何实现的吗?其实很简单,今天阿牛带你们来揭开他的神秘面纱,让广大的程序员的F12大法都失效了,真的是太狠了!

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛。
  • 💬格言:迄今所有人生都大写着失败,但不妨碍我继续向前!🔥

@TOC

💥前言

我们常常会看到百度文库或者其他网站的文字无法复制,你想知道这种做法是如何实现的吗?其实很简单,今天阿牛带你们来揭开他的神秘面纱,让广大的程序员的F12大法都失效了,真的是太狠了!

💞普通版-让别人无法复制你的网站文字

💘原理分析

对于普通人来说,他们复制网页内容无非就是选中一段文字,然后鼠标右键打开菜单进行鼠标点击复制,所以我们针对这种方法的措施就是禁用鼠标右键菜单。
 // 1.禁用右键菜单
        document.addEventListener('contextmenu',function(e){
            e.preventDefault();  // 阻止默认事件
        });
上面步骤完成之后,我们再来考虑另为一种情况,有些键盘党可能会直接选中文字然后进行CRL + C 复制,这时我们只禁用鼠标右键菜单就不行了,因此我们还需要禁止鼠标选中。
// 2.禁止鼠标选中
        document.addEventListener('selectstart',function(e){
            e.preventDefault();  
        });

💘示例演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>这是一段你们永远得不到的文字</p>
    <script>
        // 1.禁用右键菜单
        document.addEventListener('contextmenu',function(e){
            e.preventDefault();  // 阻止默认事件
        });
        // 2.禁止鼠标选中
        document.addEventListener('selectstart',function(e){
            e.preventDefault();  
        });
    </script>
    
</body>
</html>

其中addEventListener是注册事件的一种方式,function(e)中的e即event事件对象,contextmenu是右键菜单,e.preventDefault()方法阻止默认事件,即这里的阻止右键菜单,下面的禁止鼠标选中同理。

💘结果

在这里插入图片描述
浏览器界面的这段文字你无法选中,无法打开鼠标右键菜单,普通人已经寄了~~~

💞毁灭版-禁用F12(针对程序员)

💘原理分析

上面的四行代码拦住了普通人,但对我们的程序员无所不能的程序员是没有作用的,他们可以打开F12在源码中复制,因此还需要在上述基础上再加四行代码,这四行代码负责禁用F12。
// 3.禁止键盘F12键
        document.addEventListener('keydown',function(e){
            if(e.key == 'F12'){
                e.preventDefault(); // 如果按下键F12,阻止事件
            }
        });

这里的keydown是键盘按下事件,e是事件对象,这里是键盘按下事件的对象,我们可以输出一下e看看keydown事件会产生那些属性
在这里插入图片描述
这里我们常用keyCode和key, keyCode是按下的键的字母对应的ascll码值,我们可以看到,浏览器给功能键F12给了123,而123在ascll表中对应‘{’。所以我们这里就用key属性判断,直观一点。

💘示例演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>这是一段你们永远得不到的文字</p>
    <script>
        // 1.禁用右键菜单
        document.addEventListener('contextmenu',function(e){
            e.preventDefault();  // 阻止默认事件
        });
        // 2.禁止鼠标选中
        document.addEventListener('selectstart',function(e){
            e.preventDefault();  
        });
        // 3.禁止键盘F12键
        document.addEventListener('keydown',function(e){
            if(e.key == 'F12'){
                e.preventDefault(); // 如果按下键F12,阻止事件
            }
        });

    </script>
    
</body>
</html>

这样,他们连F12开发者工具都打不开,你说狠不狠?

💞解决不能复制的方案

💘方法一

作为一名爬虫学习者,见到这种情况已经很多了,我有一种方法可以调出F12,我们看图说话。
在这里插入图片描述
我们可以把光标定到地址栏,然后按下F12。
在这里插入图片描述
嘿嘿嘿,作为一名专业人员,这下你还不能为所欲为的话你就真得太菜了!

💘方法二

给浏览装个油猴插件,然后去greasy fork这个网站下个免复制的脚本就可以复制文字了。

💥 结语

陆陆续续写了很多前端基础知识和小demo了,这些对初学者都很有用,一起来学习吧!

相关文章
|
2月前
|
JavaScript
短小精悍的js代码
【10月更文挑战第17天】
130 58
|
21天前
|
JavaScript 前端开发 测试技术
在 golang 中执行 javascript 代码的方案详解
本文介绍了在 Golang 中执行 JavaScript 代码的四种方法:使用 `otto` 和 `goja` 嵌入式 JavaScript 引擎、通过 `os/exec` 调用 Node.js 外部进程以及使用 WebView 嵌入浏览器。每种方法都有其适用场景,如嵌入简单脚本、运行复杂 Node.js 脚本或在桌面应用中显示 Web 内容。
54 15
在 golang 中执行 javascript 代码的方案详解
|
1月前
|
JavaScript
原生js炫酷随机抽奖中奖效果代码
原生js随机抽奖是一个炫酷的根据数据随机抽奖的代码,该网页可进行随机抽取一个数据,页面动画高科技、炫酷感觉的随机抽奖效果,简单好用,欢迎下载!
46 3
|
25天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
1月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
476 4
|
1月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
114 6
|
1月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这些工具,可以确保代码风格一致,提高代码质量和可读性。
159 1
|
2月前
|
JavaScript 前端开发 开发者
如何在 VSCode 中使用 ESLint 和 Prettier 检查并自动格式化 Vue.js 代码,提升团队协作效率和代码质量。
【10月更文挑战第9天】随着前端开发技术的发展,代码规范和格式化工具变得至关重要。本文介绍如何在 VSCode 中使用 ESLint 和 Prettier 检查并自动格式化 Vue.js 代码,提升团队协作效率和代码质量。通过安装插件、配置 ESLint 和 Prettier,以及设置 VSCode,实现代码实时检查和格式化,确保代码风格一致。
309 2
|
2月前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包:原理、应用与代码演示
【10月更文挑战第12天】深入理解JavaScript中的闭包:原理、应用与代码演示