You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MERN栈网站实现用户截屏时自动黑屏的防护功能?

MERN栈实现截屏自动黑屏方案

该功能核心以前端逻辑实现为主,后端仅需配合做内容权限控制即可,具体实现方式如下:

效果演示

黑屏效果示例图

1. 前端(React)核心逻辑

通过监听系统截屏相关事件,触发时给页面叠加全屏黑色遮罩,即可让截屏结果为全黑:

事件监听代码

import { useEffect } from 'react';

const CoursePage = () => {
  useEffect(() => {
    // 快捷键拦截:匹配主流系统的默认截屏快捷键
    const handleKeyDown = (e) => {
      const isWindowsScreenshot = (e.key === 'PrintScreen') || 
                                (e.metaKey && e.shiftKey && e.key === 'S') ||
                                (e.ctrlKey && e.key === 'PrintScreen');
      const isMacScreenshot = (e.metaKey && e.shiftKey && ['3','4','5'].includes(e.key));

      if (isWindowsScreenshot || isMacScreenshot) {
        document.body.classList.add('screenshot-block');
        // 截屏操作一般1秒内完成,结束后移除遮罩恢复页面显示
        setTimeout(() => document.body.classList.remove('screenshot-block'), 1000);
      }
    };

    // 监听页面失焦/隐藏:规避第三方截屏工具、切屏截屏的情况
    const handlePageHide = () => document.body.classList.add('screenshot-block');
    const handlePageShow = () => document.body.classList.remove('screenshot-block');

    window.addEventListener('keydown', handleKeyDown);
    document.addEventListener('visibilitychange', () => {
      document.hidden ? handlePageHide() : handlePageShow();
    });
    window.addEventListener('blur', handlePageHide);
    window.addEventListener('focus', handlePageShow);

    // 卸载时清除事件监听
    return () => {
      window.removeEventListener('keydown', handleKeyDown);
      document.removeEventListener('visibilitychange', handlePageShow);
      window.removeEventListener('blur', handlePageHide);
      window.removeEventListener('focus', handlePageShow);
    };
  }, []);

  return <div>{/* 你的课程页面内容 */}</div>
};

export default CoursePage;

配套全局CSS

.screenshot-block::after {
  content: '';
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  background-color: #000;
  z-index: 999999;
  pointer-events: none;
}

2. 视频类内容升级方案

如果是视频课程,建议搭配DRM数字版权加密实现系统级防截屏:

  • 用Encrypted Media Extensions (EME) 接口加密视频流,操作系统会直接禁止截屏工具获取视频帧,截取结果默认就是黑屏,比前端事件拦截可靠性更高。

3. 后端(Node/Express)配合逻辑

  • 付费课程资源仅对已购买的授权用户返回,避免未授权用户爬取内容
  • 视频/课件资源生成带过期时间的签名URL,避免资源链接被恶意传播

注意事项

该方案只能拦截普通用户的常规截屏操作,无法100%规避所有盗拍行为:比如用户用手机拍摄屏幕、在虚拟机中打开页面、使用系统级特权截屏工具时还是可能绕过,可以根据你的业务安全要求选择合适的防护等级。

内容的提问来源于stack exchange,提问作者Rohan Devaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:15:06