阻止用户在任何网页上使用键盘的“打印scrn” /“打印屏幕”键
-
01-10-2019 - |
题
我目前正在进行一个项目,在该项目中,我需要阻止用户获取任何网页的快照,他可以使用任何普通键盘中可用的“打印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();
});
这是工作的示例:
这是不可能的。
值得庆幸的是,这种令人发指的想法是不可能可靠地实现的,“禁用屏幕抓取”部分也不是“禁用用户的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的影响。
这个想法是:
如果Java被禁用,则使您的内容无法访问,并使用一些脚本,例如Artist Scope's Copy Protect。
检测PRNT SCRN将向管理员发送消息 注册用户 信息,这意味着会员可以访问的限制内容可以从中受益。发送 IP 地址听起来像是一个好主意,但是禁止IP并非如此,因此您将不会从中获得很多好处。
一旦在网站的窗口外面,您的内容将被覆盖,除非您返回网站并激活它,否则无法删除该覆盖层,这将重新激活上几点中提到的PRNT SCRN检测代码。
如果设备是移动设备,则可以隐藏图像,也可以像我的情况下,重定向到“我们很抱歉”页面。
截图工具 其他类似的浏览器扩展程序和附加组件将毫无用处。除了我发现的一种工具 全页屏幕捕获
- 该工具从按下按钮约3秒后捕获Web内容,这是足够的时间来删除覆盖层并返回您的内容
- 一个好的周转是在单击需要5秒或更长时间的“解雇覆盖层”时启动计数器。此扩展程序已经拍摄了快照
还有一种间接的方法来防止视频捕获(仍在进行),将在此处或我的博客中发布。
如果您的内容确实值得很多,那么用户仍然可以使用他们的摄像头捕获它,也可能有一种方法!但是我需要在谈论之前进行一些研究。
您为什么要防止打印屏幕?
如果您想保护一些照片,则可能需要将其放在低分辨率中,并以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();
也许在一秒钟后回来。
缺点是,如果网页不是活动窗口,它将无法工作。