阻止用户对任何网页使用键盘的"Print Scrn"/"Printscreen"键

Kno*_*ing 52 html javascript webpage-screenshot

我目前正在做一个项目,我需要阻止用户拍摄任何网页的快照,为此他可以使用任何普通键盘中的"Print Scrn"/"Printscreen"键.

我一直试图找到它的解决方案,但是徒劳无功.如果可能的话,我需要考虑Firefox浏览器的" Screengrab "插件,也可以将其停止.

非常感谢任何帮助,我正在为我的项目使用PHP(作为服务器端语言)和jQuery.

小智 46

我讨厌"这不可能"的句子.以下所有解决方案可以帮助您:

1-您可以从Haluk获取解决方案:

<script type="text/javascript"> $(document).ready(function() {
    $(window).keyup(function(e){
      if(e.keyCode == 44){
        $("body").hide();
      }

    }); }); 
</script>
Run Code Online (Sandbox Code Playgroud)

但是,你隐藏了身体,但已经"打印"到剪贴板.你可以触发另一个将一些文本复制到剪贴板的事件,正如你在这个答案中看到的"编辑截至2016年" 点击按钮复制到剪贴板使用jQuery,它是这样的:

function copyToClipboard() {
  // Create a "hidden" input
  var aux = document.createElement("input");
  // Assign it the value of the specified element
  aux.setAttribute("value", "Você não pode mais dar printscreen. Isto faz parte da nova medida de segurança do sistema.");
  // Append it to the body
  document.body.appendChild(aux);
  // Highlight its content
  aux.select();
  // Copy the highlighted text
  document.execCommand("copy");
  // Remove it from the body
  document.body.removeChild(aux);
  alert("Print screen desabilitado.");
}

$(window).keyup(function(e){
  if(e.keyCode == 44){
    copyToClipboard();
  }
}); 
Run Code Online (Sandbox Code Playgroud)

这将阻止您的部分问题.如果用户专注于此窗口之外的另一个对象,他将能够截取屏幕截图.**但是还有另一个解决方案,当窗口没有聚焦时,只需禁用孔体.完全解决方案,来自您亲爱的brazillian朋友:

function copyToClipboard() {
  // Create a "hidden" input
  var aux = document.createElement("input");
  // Assign it the value of the specified element
  aux.setAttribute("value", "Você não pode mais dar printscreen. Isto faz parte da nova medida de segurança do sistema.");
  // Append it to the body
  document.body.appendChild(aux);
  // Highlight its content
  aux.select();
  // Copy the highlighted text
  document.execCommand("copy");
  // Remove it from the body
  document.body.removeChild(aux);
  alert("Print screen desabilitado.");
}

$(window).keyup(function(e){
  if(e.keyCode == 44){
    copyToClipboard();
  }
}); 

$(window).focus(function() {
  $("body").show();
}).blur(function() {
  $("body").hide();
});
Run Code Online (Sandbox Code Playgroud)

以下是工作示例:

在这里,我尝试疏散窗口,在无焦点上隐藏内容并显示模态

  • 很酷的解决方案。谢谢。但它仍然有一些缺陷:组合Win + Print screen。当然,没有人可以仅仅通过相机来阻止截图:) (2认同)

Sjo*_*erd 43

这是不可能的.

  • "打印屏幕"键是操作系统的功能,您绝对无权从网页更改其行为.这就像在硬盘上安装软件一样.一般而言,没有真正的方法来阻止用户下载网站的内容.你可以让它变得更难一点,但这只是时间问题. (21认同)
  • 如果是的话,它会很快被规避. (5认同)
  • @JSmaga这将是有史以来最具单一功能的操作系统:"功能:**无法截屏!**"; D (4认同)
  • 通常:在某些时候必须向用户显示数据.此时,任何确定的用户都可以捕获它.如果不出意外,有些设备将位于您的PC和显示器之间,完全独立于PC并记录发送到显示器的任何内容. (2认同)
  • 即使操作系统没有屏幕截图功能,您仍然可以将屏幕放在扫描仪上或拍摄照片:p (2认同)

Dir*_*mar 38

您无法通过Web浏览器禁用屏幕抓取,只能通过在用户的PC上安装其他软件来实现.

有一些IRM(信息权限管理)工具可以实现这一点,例如通过保护Windows/DirectX API调用以及监视视频内存(如Oracle IRMMicrosoft的IRM技术).

特别是后者可能会引起关注,因为Internet Explorer还有一个Rights Management Add-on.

但正如其他人已经说过的,任何IRM/DRM技术都存在争议,你应该明白,它通常会限制或骚扰你的用户.

  • 我不会说IRM是一个"争议".在互联网上,即使考虑它也是愚蠢的,但在公司环境中它是有道理的.公司在每台计算机上都安装了IRM,这是有充分理由的.它向员工发出明确的信息:"这些数据很敏感".如果复制数据并非易事,则员工不会进一步尝试. (3认同)
  • @Chris - "永远不要归咎于愚蠢得到充分解释的恶意".如果敌对员工可以看到它可以窃取它,但是,IRM在限制数据和防止*无意*数据泄漏方面非常有效,并且是一种标记敏感文档的好方法. (2认同)

Pek*_*ica 15

值得庆幸的是,这个令人发指的想法无法可靠地实现,无论是"禁用屏幕抓取"部分还是"禁用用户的Firefox扩展"部分.即使它是,正如@kbok在上面的评论中指出的那样,你没有权利这样做.

在线保护您的内容的唯一方法是版权法 - 提及这些通常足以吓跑人们滥用它! - 或根本不显示.


ZX1*_*12R 13

试试这个

$(document).keyup(function(e){
  if(e.keyCode == 44) return false;
});
Run Code Online (Sandbox Code Playgroud)

希望它有效

  • 这很快就会崩溃:只需关注一个不同的窗口,*然后*screengrab. (13认同)
  • 正如我在下面所述,相当确定在屏幕已经"打印"后触发了keyup事件... (4认同)
  • @MatthewScharley他可以避免使用以下代码: $(window).focus(function() { $(".content").show(); }).blur(function() { $(".content").hide ();alert('nonono,没有甜甜圈给你!'); }); (2认同)

Leo*_*Leo 6

您可以使用JavaScript或Flash更改剪贴板的内容.这已经有点帮助了.