ユーザーが任意のWebページにキーボードの「print scrn」 /「printscreen」キーを使用しないでください

StackOverflow https://stackoverflow.com/questions/3130983

質問

私は現在、プロジェクトを行っています。このプロジェクトでは、ユーザーがWebページのスナップショットを取得しないようにする必要があります。そのため、通常のキーボードで使用可能な「Print SCRN」 /「PrintScreen」キーを使用できます。

私はその解決策を見つけようとしてきましたが、無駄です。可能であれば、私は「スクリーングラブ「Firefoxブラウザのアドオンも停止します。

どんな助けも大歓迎であり、私はプロジェクトにPHP(サーバー側の言語として)とjQueryを使用しています。

役に立ちましたか?

解決

Webブラウザからの画面グラブを無効にすることはできません。ユーザーのPCに追加のソフトウェアをインストールすることによってのみ可能です。

Windows/DirectX API呼び出しを保護し、などのビデオメモリを監視することにより、IRM(情報権管理)ツールが利用可能です。 Oracle Irm またはなど MicrosoftのIRMテクノロジー.

特に後者は、 Internet Explorerの権利管理アドオン.

しかし、他の人がすでに言ったように、IRM/DRMテクノロジーは論争であり、ほとんどの場合、ユーザーを制限または悩ませることを理解する必要があります。

他のヒント

「不可能な」文が嫌いです。これがあなたを助けるために組み合わされたすべてのソリューションです:

1-ハルクから解決策をつかむことができます:

<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

これは不可能です。

ありがたいことに、このとんでもないアイデアは確実に実装することはできません。「Disable Screen Grab」部分でも、「ユーザーのFirefox拡張機能」を「無効にする」部分もありません。 @Kbokが上記の彼のコメントで指摘しているように、たとえそうだったとしても、あなたは これをする。

オンラインでコンテンツを保護する唯一の方法は、著作権法です - それらに言及することは、多くの場合、人々がそれを誤用するのを怖がらせるのに十分です! - またはまったく見せない。

これを試して

$(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が無効になっている場合、コンテンツをアクセスできないようにし、アーティストScopeのコピー保護などのスクリプトを使用します。

  2. PRNT SCRNを検出すると、 登録ユーザー 情報、これは、メンバーがアクセスできる制限付きコンテンツがこれからのみ恩恵を受けることができることを意味します。送信 IP アドレスは良いアイデアのように聞こえますが、IPSを禁止することはそうではないので、それから多くの利益を得ることはありません。

  3. Webサイトのウィンドウの外にあると、コンテンツは、Webサイトに戻ってアクティブにならない限り削除できないオーバーレイで覆われ、前のポイントに記載されているPRNT SCRN検出コードが再アクティブになります。

  4. デバイスがモバイルである場合、画像を非表示にするか、私の場合のように、「ごめんなさい」ページにリダイレクトできます。

  5. スニッピングツール 他の同様のブラウザ拡張機能とアドオンは役に立たないでしょう。私が見つけた1つのツールを除いて、電話をかけました フルページ画面キャプチャ

    • このツールは、押しボタンから約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(); そして多分それらを一瞬後に見せてください。

欠点は、Webページがアクティブウィンドウでない場合に機能しないことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top