Estoy bastante seguro de que muchas personas han pensado en esto, pero por alguna razón no puedo encontrarlo usando la búsqueda de Google y StackOverflow.Hacer un enlace completamente invisible?
Me gustaría hacer un enlace invisible (en la lista negra de robots.txt) a una página CGI o PHP que "atrapará" robots y arañas maliciosos. Hasta ahora, he intentado:
enlaces vacíos en el cuerpo:
<a href='/trap'><!-- nothing --></a>
Esto funciona bastante bien la mayor parte del tiempo, con dos pequeños problemas:
Problema: El enlace es parte del cuerpo del documento. Aunque es prácticamente imposible de cliquear con un mouse, algunos visitantes aún lo golpean inadvertidamente mientras navega por el sitio con el teclado Tab y Ingrese. Además, si copian y pegan la página en un procesador de texto o software de correo electrónico, por ejemplo, el enlace trampa se copia y a veces incluso se puede hacer clic (algunos programas no aceptan las etiquetas vacías
<a>
y copian el href como contenido de la etiqueta).bloques invisibles en el cuerpo:
<div style="display:none"><a href='/trap'><!-- nothing --></a></div>
Esto soluciona el problema con la navegación por teclado, por lo menos en los navegadores que probé. El enlace es efectivamente inaccesible desde la visualización normal de la página, mientras que aún es completamente visible para la mayoría de los bots araña con su nivel actual de inteligencia.
Problema: El enlace sigue siendo parte del DOM. Si el usuario copia y pega el contenido de la página, reaparece.
bloques de comentarios Interior:
<!-- <a href='/trap'>trap</a> -->
Esto elimina de forma efectiva el enlace desde el DOM de la página. Bueno, técnicamente, el comentario sigue siendo parte del DOM, pero logra el efecto deseado de que los usuarios-agentes que cumplen no generarán el elemento A, por lo que no es un enlace real.
Problema: La mayoría de los spider bots en la actualidad son lo suficientemente inteligentes como para analizar (X) HTML e ignorar los comentarios. Personalmente, he visto bots que utilizan los objetos COM/ActiveX de Internet Explorer para analizar el (X) HTML y extraer todos los enlaces a través de XPath o Javascript. Este tipo de bots no son engañados para seguir el hipervínculo trampa.
que estaba usando el método # 3 hasta anoche, cuando fue alcanzado por un enjambre de robots que parecen ser muy selectivo sobre qué enlaces que siguen. Ahora vuelvo al método n. ° 2, pero sigo buscando una forma más efectiva.
¿Alguna sugerencia u otra solución diferente que me perdí?
¿Qué pasa si algunos clientes no tienen JavaScript habilitado? –
Entonces no ven el enlace, pero tienen la desventaja de poder tabular el enlace. No es una solución al 100%, pero no creo que haya muchos clientes que ficharán al enlace no visible que tiene javascript deshabilitado. –
¡Esta parece ser una gran solución! No estoy realmente preocupado por la dependencia de JavaScript, ya que afecta solo la intersección de dos minorías (aquellos que descubren los enlaces mediante copiar y pegar, y aquellos que tienen scripts desactivados). ¿Podría ampliar su respuesta para incluir una solución que no dependa de jQuery? Creo que debería incluir document.GetElementById() y node.parentNode.removeChild(), pero mi experiencia con Javascript es bastante limitada. – Juliano