tomar print html2 div javascript html webpage-screenshot

javascript - print - Evite que el usuario use la tecla "Imprimir copia"/"Pantalla de impresión" del teclado para cualquier página web.



screenshot pdf javascript (11)

Actualmente estoy haciendo un proyecto, en el que tengo que evitar que el usuario tome la instantánea de cualquier página web, para lo cual puede usar la tecla "Imprimir Scrn" / "Pantalla de impresión" disponible en cualquiera de los teclados normales.

He estado tratando de encontrar su solución, pero fue en vano. Si es posible, necesito tener en cuenta el complemento " Screengrab " del navegador Firefox, deteniéndolo también.

Cualquier ayuda es muy apreciada, y estoy usando PHP (como lenguaje del lado del servidor) y jQuery para mi proyecto.


¿Por qué quieres evitar la pantalla de impresión?

Si se trata de proteger algunas fotos, es posible que desee ponerlas en baja resolución e incluir algún tipo de logotipo de copyright programáticamente en php.

Creo que eso es más o menos.


Afortunadamente, esta escandalosa idea no es posible de implementar de manera confiable, ni la parte "deshabilitar la captura de pantalla" ni la de "deshabilitar las extensiones de Firefox del usuario". E incluso si lo fuera, como señala @kbok en su comentario anterior, no tienes derecho a hacerlo.

La única manera de proteger su contenido en línea es con las leyes de derechos de autor; mencionarlas suele ser suficiente para asustar a la gente y evitar que se abuse de ellas. - o no lo muestra en absoluto.


Aquí hay otra solución:

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

Esto es similar a la solución de @ZX12R. La ventaja es que este código funcionará incluso si el software de captura de la pantalla de impresión es una herramienta de terceros (por ejemplo, snagIt).

Puede reemplazar $("body").hide(); con algo que te conviene más. Por ejemplo, puede ocultar todas las imágenes $("img").hide(); y tal vez mostrarlos un segundo después.

La desventaja es que no funcionará si la página web no es la ventana activa.


Como dijo @Sjoerd, esto no es posible.

Si se trata de imágenes que desea proteger, le sugiero que, por ejemplo, muestre imágenes de menor calidad que tengan una marca de agua en su lugar y solo muestre las de alta calidad que no sean de marca de agua cuando corresponda.

Pero sí ... Si quieres que sean imposibles de copiar ... no los pongas en línea.


Esto no es posible.


No hay un método directo para hacerlo, sin embargo, hay una manera de proteger su contenido tanto como sea posible de prnt scrn.

La idea es esta:

  1. haga que su contenido sea inaccesible si java está deshabilitado, y use algún script como Protect de copia de Artist Scope.

  2. La detección de prnt scrn enviará un mensaje al administrador con la información de usuario registrada , esto significa que el contenido restringido al que solo pueden acceder miembros puede beneficiarse de esto. enviar direcciones IP suena como una buena idea, pero prohibir las direcciones IP no lo es, por lo que no obtendrás muchos beneficios de eso.

  3. Una vez fuera de la ventana de su sitio web, su contenido estará cubierto con una superposición que no podrá eliminarse a menos que regrese a su sitio web y lo active, lo que reactivará el código de detección de prnt scrn mencionado en el punto anterior.

  4. Si el dispositivo es un dispositivo móvil, puede ocultar imágenes o, como en mi caso, redirigir a una página de "lo lamentamos".

  5. herramienta de recorte y otras extensiones de navegador similares y complementos serán inútiles. excepto una herramienta que he encontrado llamada captura de pantalla de página completa

    • esta herramienta captura el contenido web después de 3 segundos aproximadamente al presionar el botón, que es tiempo suficiente para descartar la superposición y volver a su contenido
    • un buen cambio es iniciar un contador cuando se hace clic en "descartar superposición" que necesitará 5 segundos o más, es decir. después de esta extensión ya ha tomado una instantánea
  6. También hay un método indirecto para evitar la captura de video, seguir trabajando en ello, lo publicaré aquí o en mi blog.

  7. Si su contenido realmente vale la pena, los usuarios aún pueden capturarlo usando sus cámaras, ¡también podría haber un método para eso! Pero aún tengo que investigar un poco antes de hablar de eso.

Actualizaré esta publicación en mi blog para otras técnicas que he usado / utilizaré para más protección. Por favor revise esta prueba (aún en desarrollo) para una demostración.


No puede deshabilitar la captura de pantalla desde el navegador web, solo sería posible instalando software adicional en la PC del usuario.

Hay algunas herramientas IRM (Information Rights Management) disponibles que lo hacen, por ejemplo, protegiendo las llamadas API de Windows / DirectX y también monitoreando la memoria de video como Oracle IRM o como la tecnología IRM de Microsoft .

Especialmente, este último podría ser de interés, ya que también hay un complemento de gestión de derechos para Internet Explorer .

Pero como ya se dijo, cualquier tecnología IRM / DRM es controvertida y usted debe comprender que con frecuencia limitará o molestará a sus usuarios.


Odio la frase "no es posible". Aquí están todas las soluciones combinadas para ayudarlo a usted:

1- Puedes agarrar la solución de Haluk:

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

SIN EMBARGO, oculta el cuerpo, pero ya está "impreso" en el portapapeles. Puede disparar otro evento que copie algún texto en su portapapeles, como puede ver en esta respuesta "Editar a partir de 2016" Haga clic en Copiar botón al portapapeles usando jQuery , es algo como esto:

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(); } });

Esto bloqueará una parte de tu problema. Si el usuario se enfoca en otro objeto fuera de esta ventana, podrá tomar capturas de pantalla. ** Pero hay otra solución para eso también, simplemente deshabilite el cuerpo del agujero cuando la ventana se desenfoque. Solución completa, de su querido amigo brasileño:

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(); });

Aquí está el ejemplo trabajando:


Prueba esto

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

Espero que funcione


Puede cambiar el contenido del portapapeles usando JavaScript o Flash. Esto ya ayuda un poco.


Puede copiar al portapapeles otra cosa, cuando el usuario haga clic en la tecla imprimir pantalla. Este es un ejemplo y copio el texto del usuario.

<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''); }; }); });