Остановите пользователя от использования клавиши "Печать 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(); и, возможно, показать их спустя секунду позже.

Недостатком является то, что он не будет работать, если веб-страница не является активным окном.