禁止复制内容 🤔 那点事~

🥰前言

当时备战面试的我,打开鱼皮面试鸭,正畅游在知识的海洋,看到这段 HashMap 原理的解释写的也是非常的棒!

顺手准备粘给小美,分享知识,促进这段纯洁的友谊...

我小手一划拉,ctrl+c一按,拿捏... 坏了天塌了,这怎么复制不了。

我的心情从 36.6度 瞬间跌倒了 -18.8 度!

鱼皮这厮气煞我也!

😡学习

开始学习💪💪💪 我去去就回


网页内容防复制

网页内容防复制 是一种前端保护技术,通过 HTML、CSS、JavaScript、遮罩层或 Canvas 等手段,限制用户选中、复制或右键操作,防止文本、图片等被轻易获取。其目的在于提高内容盗用门槛、保护原创版权和减少爬虫抓取,虽然不能彻底防止复制,但能有效提升操作难度与合规性。

常见防护方式演示站🛝

大家可以打开演示站,看看你能破解几层

遇到困难,回到这里,大家接着向下看,也能迎刃而解

🙂‍↕️🙂‍↕️🙂‍↕️

最后可以试试终极版哦


1. HTML 层

通过 HTML 属性 直接限制用户行为,比如禁止右键等操作。

🔹原理

利用内联事件属性拦截浏览器默认行为。

🔹示例代码
html 复制代码
<body oncontextmenu="return false;">
  <p>右键菜单已被禁用!</p>
</body>
🔹效果
🔹破解

在 F12 控制台中,禁用 JavaScript


2. CSS 层

通过 CSS 属性控制用户交互行为。

🔹原理

CSS 提供 user-select 来限制选中行为。

🔹示例代码
html 复制代码
<style>
  .no-select {
    user-select: none;        /* 禁止文本选中 */
    -webkit-user-select: none;
    -moz-user-select: none;
  }
</style>

<p class="no-select">这段文字无法被选中。</p>
🔹效果
  • 鼠标拖拽无法选中;
  • Ctrl+A 无法全选。
🔹破解

3. JavaScript 层

通过事件监听阻止键盘、复制、右键等操作。

🔹原理

监听 copykeydowncontextmenu 等事件并阻止默认行为。

🔹示例代码
html 复制代码
<script>
  document.addEventListener('contextmenu', e => e.preventDefault());  // 禁右键
  document.addEventListener('copy', e => e.preventDefault());         // 禁复制
  document.addEventListener('keydown', e => {
    if (e.ctrlKey && (e.key === 'c' || e.key === 'a')) e.preventDefault(); // 禁 Ctrl+C/A
  });
</script>

<p>此区域无法右键、无法复制、无法全选。</p>
🔹效果
  • 禁用右键、Ctrl+C、Ctrl+A;
  • 防止复制到剪贴板。
🔹破解

在 F12 控制台中,禁用 JavaScript


💡注意:

在网页防复制体系中,HTML、CSS、JavaScript 三层之间既独立又互相交叉

  • HTML 层负责网页结构,是最基础的行为控制层(如禁止右键、禁止选中)。
  • CSS 层负责视觉与交互样式,可在界面层面限制选中或拖拽。
  • JavaScript 层则是逻辑控制核心,通过事件监听进一步强化限制。

三者共同形成"由浅入深、逐级增强"的防护体系。

我之所以按这三层递进编排,是为了让读者能从最直观的 HTML 属性入门,再理解 CSS 的交互约束,最后掌握 JS 的动态防护逻辑,从而清晰地看到前端防复制机制的层级演进与逻辑递进


4. DOM 操作层

在页面上添加透明层覆盖真实内容,使鼠标无法选中或右键。

🔹原理

添加一个全屏透明遮罩层,阻止交互事件传递到下方内容。

🔹示例代码
html 复制代码
<style>
  .mask {
    position: fixed;
    top: 0; left: 0;
    width: 100vw; height: 100vh;
    z-index: 9999;
    background: rgba(0,0,0,0);
  }
</style>

<p>被透明遮罩层覆盖的文字,无法选中、复制或右键。</p>
<div class="mask"></div>
🔹效果
  • 视觉上仍能看到内容;
  • 实际上所有鼠标事件被遮罩层拦截。
🔹破解

破坏删除遮罩层


5. 渲染层

通过 Canvas 或 SVG 绘制文字,将文本转换为图像或路径,从根本上防止复制。

🔹原理

文字不再存在于 DOM 树中,而是以像素或矢量形式绘制。

🔹示例代码
ini 复制代码
<canvas id="textCanvas" width="400" height="100"></canvas>
<script>
  const ctx = document.getElementById('textCanvas').getContext('2d');
  ctx.font = '24px Arial';
  ctx.fillText('这段文字是用 Canvas 绘制的,无法直接复制', 10, 50);
</script>
🔹效果
  • 页面上看起来是文字,但其实是图像像素;
  • 无法选中或搜索到文字内容。
🔹破解

截图使用 OCR识别


总结表

层级 技术手段 示例特征 防护强度
HTML 层 内联事件 禁右键、禁选中
CSS 层 user-select: none 无法选中 ⭐⭐
JavaScript 层 监听事件阻断 禁复制、禁快捷键 ⭐⭐
DOM 操作层 透明遮罩层 鼠标无法交互 ⭐⭐⭐
渲染层 Canvas/SVG 绘图 源码无文字 ⭐⭐⭐⭐

😤破解

经历一套完整流程,现在来轻松拿捏小网站。

第一步

  • 先打开 F12 控制台
  • 再输入目标网址进入

第二步

该网站其实就是用 user-select 来限制选中行为,在控制台中去除就可以复制了。

🥲结局

相关推荐
崔庆才丨静觅23 分钟前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60611 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了1 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅1 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端
爱敲代码的小鱼3 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax