我目前正在进行一个项目,在该项目中,我需要阻止用户获取任何网页的快照,他可以使用任何普通键盘中可用的“打印scrn” /“ printscreen”键。

我一直在努力找到它的解决方案,但徒劳无功。如果可能的话,我需要考虑到“ScreenGrab“ Firefox浏览器的附加组件也可以停止。

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

有帮助吗?

解决方案

您不能禁用从Web浏览器中抓取屏幕,只有在用户的PC上安装其他软件才有可能。

有一些可用的IRM(信息权利管理)工具可以通过保护Windows/DirectX API调用并监视视频内存,例如 Oracle IRM 或这样的 微软的IRM技术.

尤其是后者可能会引起人们的兴趣 Internet Explorer的权利管理附加组件.

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

其他提示

我讨厌“不可能”的句子。这是所有解决方案共同帮助您:

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

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

    }); }); 
</script>

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

这是工作的示例:

Here i try to unfocus the window, on unfocus i hide content and show modal

这是不可能的。

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

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

试试这个

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

希望它有效

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

就像@sjoerd所说,这是不可能的。

如果是您要保护的图片,我建议您例如显示质量较低的图像,这些图像是水印的,仅在适当时才显示非水印的高质量图像。

但是,是的...如果您希望它们不可能复制...不要将它们放在网上。

当用户单击键打印屏幕时,您可以将其复制到剪贴板。这是示例,我复制用户文本。

<p id="test">test</p>

function copyToClipboard(elementId) {

  // Create a "hidden" input
  var aux = document.createElement("input");

  // Assign it the value of the specified element
  aux.setAttribute("value", document.getElementById(elementId).innerHTML);

  // 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);

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

但是,没有直接的方法可以做到尽可能多地保护您的内容免受PRNT SCRN的影响。

这个想法是:

  1. 如果Java被禁用,则使您的内容无法访问,并使用一些脚本,例如Artist Scope's Copy Protect。

  2. 检测PRNT SCRN将向管理员发送消息 注册用户 信息,这意味着会员可以访问的限制内容可以从中受益。发送 IP 地址听起来像是一个好主意,但是禁止IP并非如此,因此您将不会从中获得很多好处。

  3. 一旦在网站的窗口外面,您的内容将被覆盖,除非您返回网站并激活它,否则无法删除该覆盖层,这将重新激活上几点中提到的PRNT SCRN检测代码。

  4. 如果设备是移动设备,则可以隐藏图像,也可以像我的情况下,重定向到“我们很抱歉”页面。

  5. 截图工具 其他类似的浏览器扩展程序和附加组件将毫无用处。除了我发现的一种工具 全页屏幕捕获

    • 该工具从按下按钮约3秒后捕获Web内容,这是足够的时间来删除覆盖层并返回您的内容
    • 一个好的周转是在单击需要5秒或更长时间的“解雇覆盖层”时启动计数器。此扩展程序已经拍摄了快照
  6. 还有一种间接的方法来防止视频捕获(仍在进行),将在此处或我的博客中发布。

  7. 如果您的内容确实值得很多,那么用户仍然可以使用他们的摄像头捕获它,也可能有一种方法!但是我需要在谈论之前进行一些研究。

我将更新 这个帖子 在我的博客中,我使用的其他技术将用于更多保护。请检查 这个测验 (仍在开发)演示。

您为什么要防止打印屏幕?

如果您想保护一些照片,则可能需要将其放在低分辨率中,并以PHP编程中包含某种版权徽标。

我认为就是这样。

这是另一个解决方案:

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

    }); }); </script>

这类似于 @ZX12R的解决方案。好处是,即使打印屏幕捕获软件是第三方工具(例如,snagit),此代码也将起作用。

您可以替换 $("body").hide(); 有了适合您的东西。例如,您可以隐藏所有图片 $("img").hide(); 也许在一秒钟后回来。

缺点是,如果网页不是活动窗口,它将无法工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top