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

IT技术 javascript html webpage-screenshot
2021-01-23 09:43:03

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

我一直试图找到它的解决方案,但徒劳无功。如果可能,我需要考虑Firefox 浏览器的“ Screengrab ”附加组件,同时将其停止。

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

6个回答

我讨厌“这是不可能的”这句话。以下是所有可以帮助您的解决方案:

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

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

    }); }); 
</script>

但是,您隐藏了身体,但已经“打印”到剪贴板。您可以触发另一个将一些文本复制到剪贴板的事件,正如您在此答案“Edit as of 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();
  }
}); 

这将阻止您的问题的一部分。如果用户关注此窗口外的另一个对象,他将能够截取屏幕截图。**但还有另一种解决方案,只需在窗口未聚焦时禁用孔体即可。完整的解决方案,来自您亲爱的巴西朋友:

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();
});

这是工作示例:

在这里,我尝试使窗口失去焦点,在失去焦点时,我隐藏内容并显示模态

我会建议使用“鼠标悬停”而不是焦点。$(window).mouseover(function () { $("body").show(); }).mouseout(function () { $("body").hide(); });
2021-03-16 09:43:03
多年来我一直在说开发人员应该阻止 IE。IE 一直是我们的噩梦,也是多年来推动互联网发展的链条。但这里有一个部分解决方案:显示一条消息,用户应该允许复制/粘贴,并显示一个带有符号的大文本,他必须将这些符号复制并粘贴到文本框上。并向用户推荐其他浏览器以避免并发症。我走得太远了吗?
2021-03-20 09:43:03
我几个月前用我的另一个 facebook 帐户发布了这个。无论如何要将此答案更改为我当前的 Facebook 帐户?
2021-03-21 09:43:03
在 Windows 10 IE 11 中,我收到一条警告,内容为“您要允许此网页访问您的剪贴板吗?...”。这对我们的客户来说是不可接受的。所以似乎没有办法为我们做到这一点。
2021-04-07 09:43:03
很酷的解决方案。谢谢。但它仍然有一些缺陷:组合Win + Print screen。当然,没有人可以简单地通过相机阻止截图:)
2021-04-12 09:43:03

这不可能。

“打印屏幕”键是一种操作系统功能,您绝对无权从网页更改其行为。这就像在硬盘驱动器上安装软件一样。一般来说,没有真正的方法可以阻止用户下载网站的内容。你可以让它更难一点,但这只是时间问题。
2021-03-19 09:43:03
即使没有屏幕截图功能的操作系统,您仍然可以将屏幕放在扫描仪上或拍照:p
2021-03-24 09:43:03
如果是这样,它将很快被规避。
2021-03-27 09:43:03
一般而言:在某些时候必须向用户显示数据。那时,任何确定的用户都可以捕获它。如果不出意外,有一些设备将位于您的 PC 和显示器之间,与 PC 完全分离并记录发送到显示器的任何内容。
2021-03-31 09:43:03
@JSmaga 这将是有史以来最单一用途的操作系统:“功能:无法截图! ”;D
2021-04-09 09:43:03

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

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

尤其是后者可能会引起人们的兴趣,因为还有用于 Internet ExplorerRights Management Add-on

但正如其他人已经说过的,任何 IRM/DRM 技术都是有争议的,您应该明白它通常会限制或惹恼您的用户。

感谢您明确说明用户对实现这一目标的敌意和不受欢迎的程度。
2021-03-18 09:43:03
@Chris - “永远不要将愚蠢可以充分解释的行为归咎于恶意”。如果敌对的员工看到它,她就可以窃取它,但是,IRM 在限制数据和防止意外数据泄漏方面非常有效,并且是标记敏感文档的好方法。
2021-03-21 09:43:03
netflix 是如何做到的..没有截图没有打印屏幕记录屏幕共享使用像Skype这样的应用程序..一切都在那里如何
2021-03-22 09:43:03
我不会说 IRM 是一个“争议”。在互联网上考虑它是愚蠢的,但在企业环境中它是有道理的。公司在每台计算机中都安装了 IRM,这是有充分理由的。它向员工发出明确的信息:“这些数据很敏感”。如果复制数据不是微不足道的,员工就不会再尝试了。
2021-04-06 09:43:03

值得庆幸的是,无论是“禁用屏幕抓取”部分还是“禁用用户的 Firefox 扩展”部分,都无法可靠地实现这一令人发指的想法。即使是这样,正如@kbok 在上面的评论中指出的那样,您也无权这样做。

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

我不会点名的几家大型科技公司窃取了专利创意并将专利锁在法庭上多年,并花费数百万美元进行斗争,直到小家伙不得不离开他的奖品。
2021-03-22 09:43:03
经常提到版权法就够了???谁说的?全球有数百万人窃取他人拥有版权的媒体。美国的保护在海外是不够的。这是一项联邦犯罪,处罚严厉,包括六位数的巨额罚款和数年的监禁。这不是一个离谱的想法。来自一位试图帮助保护他或他的客户拥有的媒体的新开发人员。在保护方面,您有权对您的网站做任何您想做的事情。UX 可能会发挥作用。不是每个人都能负担得起对侵犯版权的诉讼。即使他们能赢,也需要时间和金钱。
2021-04-12 09:43:03

试试这个

$(document).keyup(function(e){
  if(e.keyCode == 44) return false;
});

希望它有效

正如我在下面所说的,相当确定在屏幕已经“打印”之后会触发 keyup 事件......
2021-04-01 09:43:03
这很快就会分崩离析:只需专注于不同的窗口,然后进行屏幕抓取。
2021-04-08 09:43:03
@MatthewScharley 他可以避免使用此代码: $(window).focus(function() { $(".content").show(); }).blur(function() { $(".content").hide (); alert('nonono, 没有甜甜圈给你!'); });
2021-04-12 09:43:03