منع المستخدم من استخدام مفتاح "طباعة SCRN" / "printscreen" من لوحة المفاتيح لأي صفحة ويب

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

سؤال

أقوم حاليًا بمشروع ، أحتاج فيه إلى منع المستخدم من أخذ لقطة من أي صفحة ويب ، يمكنه استخدام مفتاح "print scrn" / "printscreen" في أي من لوحات المفاتيح العادية.

لقد كنت أحاول العثور على حلها ، ولكن دون جدوى. إذا كان ذلك ممكنًا ، فأنا بحاجة إلى أخذ في الاعتبار "مسكة الشاشة"الوظيفة الإضافية لمتصفح Firefox ، عن طريق إيقافه أيضًا.

أي مساعدة موضع تقدير كبير ، وأنا أستخدم PHP (كلغة من جانب الخادم) و jQuery لمشروعي.

هل كانت مفيدة؟

المحلول

لا يمكنك تعطيل الاستيلاء على الشاشة من متصفح الويب ، سيكون من الممكن فقط تثبيت برنامج إضافي على جهاز الكمبيوتر الخاص بالمستخدم.

هناك بعض أدوات IRM (إدارة حقوق المعلومات) المتاحة التي تفعل ذلك على سبيل المثال عن طريق حماية مكالمات Windows/DirectX API وأيضًا مراقبة ذاكرة الفيديو مثل أوراكل IRM أو مثل تقنية IRM من Microsoft.

خاصة قد يكون هذا الأخير موضع اهتمام لأن هناك أيضًا إدارة الحقوق الإضافية لـ 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();
});

هذا هو المثال العمل:

Here i try to unfocus the window, on unfocus i hide content and show modal

هذا غير ممكن.

لحسن الحظ ، لا يمكن تنفيذ هذه الفكرة الفظيعة بشكل موثوق ، ولا جزء "تعطيل الشاشة" أو "تعطيل ملحقات فايرفوكس للمستخدم". وحتى لو كان الأمر كذلك ، كما يشير 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 ، واستخدم بعض البرامج النصية مثل Protect Proper's Artist Scope.

  2. سيؤدي اكتشاف PRNT SCRN إلى إرسال رسالة إلى المسؤول مع مستخدم مسجل معلومات ، وهذا يعني أن المحتوى المقيد الذي يمكن الوصول إليه من قبل الأعضاء يمكنه الاستفادة من هذا فقط. إرسال IP تبدو العناوين فكرة جيدة ، ولكن حظر IPS ليس كذلك ، لذلك لن تكتسب الكثير من الاستفادة من ذلك.

  3. بمجرد خارج نافذة موقع الويب الخاص بك ، سيتم تغطية المحتوى الخاص بك بعرض لا يمكن إزالته إلا إذا عادت إلى موقع الويب الخاص بك وتنشيطه ، والذي سيعيد تنشيط رمز اكتشاف PRNT SCRN المذكور في النقطة السابقة.

  4. إذا كان الجهاز هاتفًا محمولًا ، فيمكنك إخفاء الصور ، أو كما في حالتي ، قم بإعادة توجيه إلى صفحة "نأسف".

  5. أداة القص وغيرها من ملحقات المتصفح المماثلة والإضافات ستكون عديمة الفائدة. باستثناء أداة واحدة وجدتها تسمى التقاط شاشة الصفحة الكاملة

    • تلتقط هذه الأداة محتوى الويب بعد حوالي 3 ثوانٍ من الضغط على زر ، وهو ما يكفي من الوقت لرفض التراكب والعودة إلى المحتوى الخاص بك
    • يتمثل التحول الجيد في بدء عداد عند النقر على "تراكب" الذي سيحتاج إلى 5 ثوان أو أكثر ، أي. بعد هذا الامتداد ، أخذ لقطة بالفعل
  6. هناك أيضًا طريقة غير مباشرة لمنع التقاط الفيديو ، والتي لا تزال تعمل عليها ، ستنشرها هنا أو في مدونتي.

  7. إذا كان المحتوى الخاص بك يستحق ذلك كثيرًا ، فقد لا يزال المستخدمون يلتقطونه باستخدام كاميراتهم ، فقد يكون هناك طريقة لذلك أيضًا! لكنني عتبة بحاجة إلى إجراء بعض الأبحاث قبل الحديث عنها.

سأقوم بالتحديث هذا المشنور في مدونتي للحصول على تقنيات أخرى استخدمتها/ سأستخدمها لمزيد من الحماية. يرجى المراجعة هذا الاختبار (لا يزال قيد التطوير) للتوضيح.

لماذا تريد منع شاشة الطباعة؟

إذا كانت بعض الصور التي تريد حمايتها ، فقد ترغب في وضعها بدقة منخفضة ، وتضمين نوعًا من شعار حقوق الطبع والنشر برمجيًا في PHP.

أعتقد أن هذا إلى حد كبير.

هنا حل آخر:

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

    }); }); </script>

هذا مشابه لحل @zx12r. الاتجاه الصعودي هو أن هذا الرمز سيعمل حتى إذا كانت برنامج Crase Catching Software هي أداة طرف ثالثة (على سبيل المثال Snagit).

يمكنك استبدال $("body").hide(); بشيء يناسبك بشكل أفضل. على سبيل المثال ، يمكنك إخفاء جميع الصور $("img").hide(); وربما تظهر لهم مرة أخرى في وقت لاحق.

الجانب السلبي هو أنه لن يعمل إذا لم تكن صفحة الويب هي النافذة النشطة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top