news 2026/3/21 20:26:20

Electron 禁止复制粘帖

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Electron 禁止复制粘帖
const{app,BrowserWindow}=require('electron');functioncreateWindow(){constmainWindow=newBrowserWindow({width:800,height:600,webPreferences:{nodeIntegration:false,contextIsolation:true,sandbox:true,// 增强安全性webSecurity:true// 确保远程内容的安全性}});// 加载远程网站mainWindow.loadURL('https://example.com').catch(err=>{console.error('Failed to load URL:',err);});// 方法1: 拦截键盘复制快捷键mainWindow.webContents.on('before-input-event',(event,input)=>{if(input.type==='keyDown'){constisCopy=(input.key==='c'||input.key==='C')&&(input.control||input.meta);constisPaste=(input.key==='v'||input.key==='V')&&(input.control||input.meta);if(isCopy||isPaste){console.log('Blocked copy/paste attempt');event.preventDefault();}}});// 方法2: 禁用右键菜单mainWindow.webContents.on('context-menu',(e,props)=>{e.preventDefault();});// 方法3: 当页面加载完成后注入保护措施mainWindow.webContents.on('did-finish-load',()=>{mainWindow.webContents.executeJavaScript(`// 禁用选择 document.body.style.cssText += '-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;'; // 拦截复制事件 document.addEventListener('copy', (e) => { e.preventDefault(); e.clipboardData.setData('text/plain', ''); return false; }, true); // 拦截选择开始 document.addEventListener('selectstart', (e) => { e.preventDefault(); return false; }, true); // 禁用拖拽 document.addEventListener('dragstart', (e) => { e.preventDefault(); return false; }, true);`).catch(err=>{console.error('JavaScript injection failed:',err);});});// 方法4: 监控开发者工具(可选)mainWindow.webContents.on('devtools-opened',()=>{console.log('DevTools opened - might bypass protections');});}app.whenReady().then(()=>{createWindow();app.on('activate',()=>{if(BrowserWindow.getAllWindows().length===0)createWindow();});});app.on('window-all-closed',()=>{if(process.platform!=='darwin')app.quit();});

针对你的环境优化后的特点:

  1. Electron 34.3.0 兼容性

    • 这个版本是较新的,支持所有提到的 API。
    • 使用了did-finish-load替代dom-ready,因为对于远程网站更可靠。
  2. 远程网站处理

    • 添加了错误处理,确保加载失败时有提示。
    • 使用executeJavaScript在页面加载后注入保护代码,因为直接的 CSS 注入可能被远程网站的 CSP 阻止。
  3. 全面的复制防护

    • 阻止键盘快捷键(Ctrl+C / Command+C)
    • 禁用右键菜单
    • 禁止文本选择
    • 清空剪贴板数据
    • 阻止拖拽复制

可能的限制和解决方法:

  1. CSP(内容安全策略)

    • 如果远程网站启用了严格的 CSP,executeJavaScript可能失败。
    • 解决:将远程内容加载到本地代理,或联系网站管理员调整 CSP。
  2. 网站自身的 JavaScript

    • 远程网站可能覆盖我们的保护措施。
    • 解决:使用更高的优先级事件监听(true参数表示捕获阶段)。
  3. 用户绕过

    • 用户仍可通过截屏或开发者工具复制。
    • 解决:无法完全阻止,但可以通过检测 DevTools 打开来警告。

测试步骤:

  1. 用你的实际远程 URL 替换'https://example.com'
  2. 运行应用(确保使用electron-builder打包或直接用electron .)。
  3. 尝试:
    • Ctrl+C / Command+C
    • 右键复制
    • 选择文本
    • 拖拽文本
  4. 检查控制台输出是否有错误或阻止日志。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 18:26:04

MZmine 2终极指南:5步掌握开源质谱数据分析

MZmine 2终极指南:5步掌握开源质谱数据分析 【免费下载链接】mzmine2 MZmine 2 source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine2 MZmine 2是一款功能强大的开源质谱数据分析工具,专门用于处理、分析和可视化质谱数据…

作者头像 李华
网站建设 2026/3/20 12:09:08

MANO手部模型实战指南:从零构建逼真3D手势交互系统

MANO手部模型实战指南:从零构建逼真3D手势交互系统 【免费下载链接】MANO A PyTorch Implementation of MANO hand model. 项目地址: https://gitcode.com/gh_mirrors/ma/MANO 想要快速掌握3D手部建模的核心技术吗?MANO(Mesh-based An…

作者头像 李华
网站建设 2026/3/15 10:09:45

手把手教程:如何判断移动设备采用arm架构或x86架构

如何一眼看穿你的手机用的是 ARM 还是 x86?实战全解析你有没有遇到过这样的情况:一个 APK 在模拟器上跑得好好的,一装到真机就闪退;或者某个第三方 SDK 死活加载不了 so 库,报UnsatisfiedLinkError;甚至 CI…

作者头像 李华
网站建设 2026/3/13 16:00:47

3分钟掌握KityMinder:这款免费的在线思维导图工具让你效率翻倍

3分钟掌握KityMinder:这款免费的在线思维导图工具让你效率翻倍 【免费下载链接】kityminder-editor Powerful Mindmap Editing Tool 项目地址: https://gitcode.com/gh_mirrors/ki/kityminder-editor KityMinder是一款功能强大的在线思维导图工具&#xff0c…

作者头像 李华
网站建设 2026/3/13 10:43:07

极致CMS建站实战指南:从痛点分析到企业级部署进阶

极致CMS建站实战指南:从痛点分析到企业级部署进阶 【免费下载链接】jizhicms 极致CMS(以下简称:JIZHICMS)是一款开源免费,无商业授权的建站系统。 项目地址: https://gitcode.com/gh_mirrors/ji/jizhicms 还在为网站建设的…

作者头像 李华
网站建设 2026/3/21 7:38:37

轻松伪装硬件信息:EASY-HWID-SPOOFER完全使用手册

轻松伪装硬件信息:EASY-HWID-SPOOFER完全使用手册 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 还在担心你的硬件信息被追踪吗?EASY-HWID-SPOOFER这款强大…

作者头像 李华