Остановите пользователя от использования клавиши "Печать Scrn" / "Printscreen" на клавиатуре для любой веб-страницы
В настоящее время я делаю проект, в котором мне нужно остановить пользователя от моментального снимка любой веб-страницы, для чего он может использовать клавишу "Print Scrn" / "Printscreen", доступную на любой из обычных клавиатур.
Я пытался найти свое решение, но напрасно. Если возможно, мне нужно принять во внимание расширение " Screengrab" браузера Firefox, остановив его также.
Приветствуется любая помощь, и я использую PHP (как серверный язык) и jQuery для моего проекта.
Ответы
Ответ 1
Вы не можете отключить захват экрана из веб-браузера, это было бы возможно только при установке дополнительного программного обеспечения на ПК пользователя.
Доступны некоторые инструменты управления правами на доступ к данным (IRM), которые делают это, например. защищая вызовы API Windows/DirectX, а также отслеживая видеопамять, такую как Oracle IRM или Технология Microsoft IRM.
Особенно последнее может представлять интерес, так как существует также надстройка управления правами для Internet Explorer.
Но, как уже говорилось, любая технология IRM/DRM является полемикой, и вы должны понимать, что она чаще всего ограничивает или раздражает ваших пользователей.
Ответ 2
Это невозможно.
Ответ 3
Я ненавижу предложение "это невозможно". Здесь все решения объединены, чтобы помочь вам:
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();
});
Вот пример работы:
![Здесь я пытаюсь развернуть окно, не скрою, скрываю контент и показываю модальное]()
Ответ 4
К счастью, эту возмутительную идею невозможно реализовать надежно, ни "отключить захват экрана", ни "отключить пользовательские расширения Firefox". И даже если бы это было так, как указывает @kbok в своем комментарии выше, вы не имеете на это право.
Единственный способ защитить ваш контент в Интернете - это законы об авторском праве - упоминание о них часто достаточно, чтобы напугать людей от злоупотребления им! - или не показывать его вообще.
Ответ 5
Попробуйте это
$(document).keyup(function(e){
if(e.keyCode == 44) return false;
});
Надеюсь, что это работает.
Ответ 6
Вы можете изменить содержимое буфера обмена с помощью JavaScript или Flash. Это уже немного помогает.
Ответ 7
Как и @Sjoerd, это невозможно.
Если это фотографии, которые вы хотите защитить, я предлагаю вам, например, отображать изображения с более низким качеством, которые обозначены водяным знаком, и при необходимости отображать только высококачественные высококачественные материалы с водяным знаком.
Но да... Если вы хотите, чтобы их было невозможно копировать... не размещайте их онлайн.
Ответ 8
Нет прямого метода для этого, однако есть способ защитить ваш контент как можно больше от prnt scrn.
Идея такова:
-
сделать ваш контент недоступным, если java отключен, и используйте защиту script, например, Copy Scope.
-
Обнаружение prnt scrn отправит сообщение администратору с информацией зарегистрированный пользователь, это означает, что доступ к ограниченному контенту, доступный только для членов, может быть полезен. отправка IP адресов звучит как хорошая идея, но запрет IP-адресов не является, поэтому вы не получите от этого большой пользы.
-
Как только вы закроете окно своего веб-сайта, ваш контент будет покрыт оверлеем, который нельзя удалить, если вы не вернетесь на свой сайт и не активируете его, что приведет к повторному активированию кода обнаружения prnt scrn, упомянутого в предыдущая точка.
-
Если устройство является мобильным телефоном, вы можете либо скрыть изображения, либо, как в моем случае, перенаправить на страницу "извините".
-
инструмент отладки и другие подобные расширения и дополнения браузера будут бесполезны. кроме одного инструмента, который я нашел, называется полноэкранным захватом
- этот инструмент захватывает веб-контент примерно через 3 секунды после нажатия кнопки, что достаточно времени, чтобы отклонить оверлей и вернуться к вашему контенту.
- Хороший поворот - это запустить счетчик, когда будет нажата кнопка "наложить наложение", которая понадобится 5 секунд или более, т.е. после этого расширения уже сделан снимок
-
Также косвенный метод предотвращения захвата видео, все еще работающий над ним, разместит его здесь или в моем блоге.
-
Если ваш контент действительно того стоит, пользователи могут его захватить с помощью своих камер, возможно, для этого тоже есть способ! Но я должен сделать некоторые исследования, прежде чем говорить об этом.
Я буду обновлять этот пост в своем блоге для других техник, которые я использовал/буду использовать для большей защиты.
Пожалуйста, проверьте эту викторину (все еще разрабатываемую) для демонстрации.
Ответ 9
Почему вы хотите предотвратить печать экрана?
Если это некоторые фотографии, которые вы хотите защитить, вы можете захотеть поместить их в низком разрешении и программным образом включить какой-либо логотип авторского права в php.
Я думаю, что в значительной степени это.
Ответ 10
Вы можете скопировать в буфер обмена что-то еще, когда пользователь нажимает экран печати ключа. Это пример, и я копирую текст пользователя.
<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');
};
});
});
Ответ 11
Вот еще одно решение:
<script type="text/javascript"> $(document).ready(function() {
$(window).keyup(function(e){
if(e.keyCode == 44){
$("body").hide();
}
}); }); </script>
Это похоже на решение @ZX12R. Воспроизведение этого кода будет работать, даже если программное обеспечение для захвата экрана печати является сторонним инструментом (например, snagIt).
Вы можете заменить $("body").hide();
на то, что подойдет вам лучше. Например, вы можете скрыть все изображения $("img").hide();
и, возможно, показать их спустя секунду позже.
Недостатком является то, что он не будет работать, если веб-страница не является активным окном.