Запретить пользователю использовать клавиши «Print Scrn» / «Printscreen» клавиатуры для любой веб-страницы - PullRequest
51 голосов
/ 28 июня 2010

В настоящее время я делаю проект, в котором мне нужно запретить пользователю делать снимок любой веб-страницы, для чего он может использовать клавиши «Print Scrn» / «Printscreen», доступные на любой из обычных клавиатур.

Я пытался найти его решение, но тщетно.Если возможно, мне нужно учесть дополнение « Screengrab » браузера Firefox, также остановив его.

Любая помощь очень ценится, и я использую PHP (в качестве серверного языка) и jQuery для моего проекта.

Ответы [ 11 ]

44 голосов
/ 03 июня 2016

Я ненавижу предложение "это невозможно".Вот все решения, объединенные, чтобы помочь вам:

1 - Вы можете получить решение от Haluk:

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

    }); }); 
</script>

ОДНАКО, вы скрываете тело, но уже «напечатаны» в буфер обмена.Вы можете запустить другое событие, которое скопирует некоторый текст в буфер обмена, как вы можете видеть в ответе «Редактировать с 2016 года» Нажмите кнопку «Копировать в буфер обмена с помощью jQuery », это что-то вроде этого:*

Это заблокирует часть вашей проблемы.Если пользователь сфокусируется на другом объекте за пределами этого окна, он сможет делать скриншоты.** Но есть и другое решение, просто отключите тело отверстия, когда окно get не сфокусировано.Полное решение от вашего дорогого друга из Бразилии:

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

43 голосов
/ 28 июня 2010

Это невозможно.

38 голосов
/ 28 июня 2010

Вы не можете отключить захват экрана из веб-браузера, это возможно только при установке дополнительного программного обеспечения на ПК пользователя.

Доступны некоторые инструменты IRM (Управление правами на доступ к данным), например:за счет защиты вызовов API Windows / DirectX, а также мониторинга видеопамяти, такой как Oracle IRM или, например, технология IRM от Microsoft .

Особенно последний может представлять интерес, поскольку существует также Надстройка управления правами для Internet Explorer .

Но, как уже говорилось, любая технология IRM / DRMЭто противоречие, и вы должны понимать, что оно чаще всего будет ограничивать или раздражать ваших пользователей.

15 голосов
/ 28 июня 2010

К счастью, эту возмутительную идею невозможно реализовать надежно, ни часть «отключить захват экрана», ни часть «отключить расширения Firefox». И даже если бы это было так, как @kbok указывает в своем комментарии выше, у вас нет права на это.

Единственный способ защитить ваш контент в Интернете - это законы об авторском праве - упоминания о них часто достаточно, чтобы напугать людей от злоупотребления им! - или вообще не показывать.

14 голосов
/ 28 июня 2010

Попробуйте это

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

Надеюсь, что это работает

6 голосов
/ 29 июня 2010

Вы можете изменить содержимое буфера обмена, используя JavaScript или Flash. Это уже немного помогает.

4 голосов
/ 07 декабря 2015

Вы можете скопировать в буфер обмена что-то еще, когда пользователь нажимает клавишу печати экрана.Это пример, и я копирую текст пользователя.

<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');
      };
    });
});
4 голосов
/ 28 июня 2010

Как сказал @Sjoerd, это невозможно.

Если вы хотите защитить изображения, я предлагаю вам, например, отображать изображения низкого качества с водяными знаками вместо них и отображать только высококачественные изображения без водяных знаковкогда уместно.

Но да ... Если вы хотите, чтобы их было невозможно скопировать ... не размещайте их в Интернете.

3 голосов
/ 20 октября 2014

Прямого способа сделать это не существует, однако есть способ максимально защитить ваш контент от prnt scrn.

Идея такова:

  1. сделает ваш контент недоступным, если java отключен, и используйте некоторый скрипт, например, защиту от копирования Artist Scope.

  2. При обнаружении prnt scrn отправит сообщение администратору с зарегистрированным user info, это означает, что ограниченный контент, который доступен только членам, может извлечь из этого пользу.отправка IP адресов звучит как хорошая идея, но запретить IP-адреса нет, поэтому вы не получите от этого большой пользы.

  3. Однажды за пределами вашего сайтаокно, ваш контент будет закрыт наложением, которое не может быть удалено, если вы не вернетесь на свой сайт и не активируете его, что повторно активирует код обнаружения prnt scrn, упомянутый в предыдущем пункте.

  4. Если устройство мобильное, вы можете либо скрыть изображения, либо, как в моем случае, перенаправить на страницу «Сожалеем».

  5. snipping tool и другие подобные расширения и надстройки браузера будут бесполезны.кроме одного инструмента, который я нашел, который называется снимок экрана полной страницы

    • этот инструмент захватывает веб-контент примерно через 3 секунды после нажатия кнопки, что достаточно времени, чтобы закрыть наложение и получитьназад к вашему контенту
    • хороший поворот состоит в том, чтобы запустить счетчик при нажатии на кнопку «отменить оверлей», для чего потребуется 5 секунд или более, т.е.после того, как это расширение уже сделало снимок
  6. Существует также косвенный метод предотвращения захвата видео, все еще работающий над ним, опубликует его здесь или в моем блоге.

  7. Если ваш контент действительно стоит того, пользователи могут по-прежнему снимать его с помощью своих камер, для этого тоже может быть способ!Но мне нужно провести некоторое исследование, прежде чем говорить об этом.

Я буду обновлять этот пост в своем блоге для других методов, которые я использовал / будуиспользовать для большей защиты.Пожалуйста, проверьте этот тест (все еще в разработке) для демонстрации.

2 голосов
/ 28 июня 2010

Почему вы хотите запретить печать экрана?

Если вы хотите защитить несколько фотографий, вы можете поместить их в низкое разрешение и программно добавить какой-либо логотип авторского права в php.

Я думаю, что это в значительной степени.

...