Protección contra raspado de pantalla

A raíz de mi pregunta sobre los aspectos legales del raspado de pantallas , incluso si es ilegal, las personas seguirán intentando, así que:

¿Qué mecanismos técnicos pueden emplearse para prevenir o, por lo menos, desincentivar el raspado de pantallas?

Ah, y para sonreír y hacer la vida más difícil, puede ser bueno retener el acceso para los motores de búsqueda. Puedo estar jugando al abogado del diablo aquí, pero hay un punto subyacente serio.

Entonces, un enfoque sería ofuscar el código (rot13, o algo), y luego tener algún javascript en la página que haga algo como document.write (unbfuscate (obfuscated_page)). Pero esto destruye totalmente los motores de búsqueda (¡probablemente!).

Por supuesto, esto en realidad no detiene a alguien que quiera robar sus datos, pero sí lo hace más difícil.

Una vez que el cliente tiene los datos, ya casi se acabó el juego, por lo que debe ver algo del lado del servidor.

Dado que los motores de búsqueda son básicamente raspadores de pantalla, las cosas son difíciles. Debe ver cuál es la diferencia entre los buenos raspadores de pantalla y los raspadores de pantalla malos . Y, por supuesto, también tienes usuarios humanos normales. Así que esto se reduce a un problema de cómo puede usted en el servidor clasificar de manera efectiva como una solicitud proveniente de un humano , un raspador de pantalla bueno o un raspador de pantalla defectuoso .

Entonces, el lugar para comenzar sería mirar sus archivos de registro y ver si hay algún patrón que le permita clasificar efectivamente las solicitudes, y luego al determinar el patrón ver si hay alguna manera de que un raspador de pantalla malo , al conocer esto clasificación, podría cubrirse para aparecer como un raspador de pantalla humano o bueno .

Algunas ideas:

  • Es posible que pueda determinar los buenos raspadores de pantalla por dirección (es) IP.
  • Podría determinar raspador vs. humano por número de conexiones simultáneas, número total de conexiones por período de tiempo, patrón de acceso, etc.

Obviamente, estos no son ideales ni a prueba de tontos. Otra táctica es determinar qué medidas puedes tomar que sean discretas para los humanos, pero ( pueden ser ) molestas para los rascadores. Un ejemplo podría estar ralentizando el número de solicitudes. (Depende del tiempo crítico de la solicitud. Si están raspando en tiempo real, esto afectaría a sus usuarios finales).

El otro aspecto es mirar mejor a estos usuarios. Claramente están raspando porque quieren los datos. Si les proporciona una forma sencilla de obtener directamente los datos en un formato útil, entonces será más fácil para ellos en lugar de raspar la pantalla. Si hay una manera fácil, entonces se puede regular el acceso a los datos. Por ejemplo: otorgue a los solicitantes una clave única y luego limite el número de solicitudes por clave para evitar sobrecargas en el servidor, o cobrar por cada 1000 solicitudes, etc.

Por supuesto, todavía hay personas que querrán estafarlo, y probablemente existan otras formas de desincentivarlas, pero probablemente comiencen a ser no técnicas y exijan la persistencia de vías legales.

No puedes evitarlo

He escrito una publicación en el blog sobre esto aquí: http://blog.screen-scraper.com/2009/08/17/further-thoughts-on-hindering-screen-scraping/

Parafrasear:

Si publica información en Internet, alguien puede obtenerla, solo se trata de cuántos recursos desean invertir. Algunos medios para hacer que los recursos requeridos sean más altos son:

Pruebas de Turing

La implementación más común de Turning Test es el viejo CAPTCHA que trata de garantizar que un humano lea el texto de una imagen y lo transmita a un formulario.

Hemos encontrado una gran cantidad de sitios que implementan un CAPTCHA muy débil que toma solo unos pocos minutos para moverse. Por otro lado, hay algunas implementaciones muy buenas de Pruebas de Turing que preferiríamos no abordar dada la elección, pero un OCR sofisticado a veces puede superarlas, o muchos spammers de boletines electrónicos tienen algunos trucos ingeniosos para superarlos.

Datos como imágenes

A veces sabes qué partes de tus datos son valiosas. En ese caso, es razonable reemplazar dicho texto con una imagen. Al igual que con la Prueba de Turing, existe un software de OCR que puede leerla, y no hay razón por la que no podamos guardar la imagen y que alguien la lea más tarde.

Muchas veces, sin embargo, listar datos como una imagen sin una alternativa de texto es una violación de la Ley de Estadounidenses con Discapacidades (ADA), y se puede superar con un par de llamadas telefónicas al departamento legal de una compañía.

Ofuscación de código

Usar algo así como una función de JavaScript para mostrar datos en la página, aunque no está en ninguna parte de la fuente HTML, es un buen truco. Otros ejemplos incluyen poner comentarios prolíficos y extraños a través de la página o tener una página interactiva que ordena las cosas de una manera impredecible (y el ejemplo que pienso de CSS usado para hacer que la pantalla sea la misma sin importar la disposición del código).

CSS Sprites

Recientemente, nos hemos encontrado con algunas instancias en las que una página tiene una imagen que contiene números y letras, y usa CSS para mostrar solo los caracteres que desea. Esto es en efecto una combinación de los 2 métodos anteriores. Primero tenemos que obtener esa imagen maestra y leer qué caracteres hay, luego tendríamos que leer el CSS en el sitio y determinar a qué personaje apunta cada etiqueta.

Si bien esto es muy inteligente, sospecho que esto también afectaría a la ADA, aunque aún no lo he probado.

Limitar los resultados de búsqueda

La mayoría de los datos que queremos obtener están detrás de algún tipo de forma. Algunos son fáciles y enviar un formulario en blanco arrojará todos los resultados. Algunos necesitan un asterisco o porcentaje puesto en el formulario. Los más difíciles son aquellos que le darán solo tantos resultados por consulta. A veces solo hacemos un bucle que enviará las letras del alfabeto al formulario, pero si eso es demasiado general, debemos hacer un bucle para enviar toda la combinación de 2 o 3 letras, eso es 17.576 solicitudes de página.

Filtrado de IP

En ocasiones, un webmaster diligente notará una gran cantidad de solicitudes de páginas provenientes de una dirección IP particular y bloqueará las solicitudes desde ese dominio. Sin embargo, existen varios métodos para pasar solicitudes a través de dominios alternativos, por lo que este método generalmente no es muy efectivo.

Cambio de sitio

Raspando siempre las claves de ciertas cosas en el HTML. Algunos sitios tienen los recursos para ajustar constantemente su HTML para que los rasguños estén constantemente desactualizados. Por lo tanto, resulta poco rentable actualizar continuamente el raspado para las condiciones en constante cambio.

Es bastante difícil evitar el filtrado de pantalla, pero si realmente lo deseara, podría cambiar el código HTML con frecuencia o cambiar los nombres de las tags HTML con frecuencia. La mayoría de los raspadores de pantalla funcionan mediante el uso de comparaciones de cadenas con nombres de tags o expresiones regulares buscando cadenas particulares, etc. Si está cambiando el HTML subyacente, tendrá que cambiar su software.

Sería muy difícil de prevenir. El problema es que las páginas web deben ser analizadas por un progtwig (su navegador), por lo que son excepcionalmente fáciles de eliminar. Lo mejor que puede hacer es estar alerta, y si descubre que su sitio está siendo interceptado, bloquee el IP del progtwig infractor.

Los motores de búsqueda SON raspadores de pantalla por definición. Por lo tanto, la mayoría de las cosas que hace para dificultar la eliminación de la pantalla también dificultarán la indexación de su contenido.

Los robots bien educados respetarán su archivo robots.txt. También puede bloquear la IP de delincuentes conocidos o agregar tags HTML ofuscadas en su contenido cuando no se envía a un robot bueno conocido. Sin embargo, es una batalla perdida. Recomiendo la ruta de litigio para delincuentes conocidos.

También puede ocultar los datos de identificación en el contenido para facilitar el seguimiento de los delincuentes. Se sabe que las enciclopedias agregan entradas ficticias para ayudar a detectar y procesar a los infractores de los derechos de autor.

El mejor retorno de la inversión es, probablemente, agregar nuevas líneas al azar y múltiples espacios, ya que la mayoría de los raspadores de pantalla trabajan desde el HTML como texto en lugar de como un XML (ya que la mayoría de las páginas no se analizan como XML válido).

El navegador ignora el espacio en blanco, por lo que su usuario no se da cuenta de que

Price : 1 Price : 2 Price\n:\n3 

son diferentes. (Esto proviene de mi experiencia de robar sitios del gobierno con AWK).

El siguiente paso es agregar tags alrededor de elementos aleatorios para arruinar el DOM.

No lo prevenga, no lo detecte y contraataque a los que lo intenten.

Por ejemplo, deje su sitio abierto para descargar, pero disemine algunos enlaces que ningún usuario en su sano juicio podría seguir. Si alguien sigue ese enlace, hace clic demasiado rápido para un comportamiento humano o de otro tipo sospechoso, reaccione rápidamente para evitar que el usuario lo intente. Si hay un sistema de inicio de sesión, bloquee al usuario y contáctelo con respecto a un comportamiento inaceptable. Eso debería asegurarse de que no intenten de nuevo. Si no hay un sistema de inicio de sesión, en lugar de páginas reales, envíe una advertencia grande con enlaces falsos a la misma advertencia.

Esto realmente se aplica a cosas como Safari Bookshelf, donde copiar y pegar a un usuario un fragmento de código o un capítulo para enviar por correo a un colega está bien, mientras que una descarga completa del libro no es aceptable. Estoy bastante seguro de que detectan cuando algunos intentan descargar sus libros, bloquean la cuenta y muestran al culpable que podría tener problemas reales si lo intentara de nuevo.

Para hacer una analogía que no sea de TI, si la seguridad del aeropuerto solo hiciera difícil llevar armas a bordo de aviones, los terroristas intentarían escabullirse de una seguridad pasada. Pero el solo hecho de intentarlo lo meterá en graves problemas para que nadie intente encontrar las formas de escabullirse. El riesgo de ser atrapado y castigado es demasiado alto. Solo haz lo mismo. Si es posible.

¿Evitar? – imposible, pero puedes hacerlo más difícil.

Desincentivise? – posible, pero no le gustará la respuesta: proporcione exportaciones masivas de datos para las partes interesadas.

A largo plazo, todos sus competidores tendrán los mismos datos si los publica, por lo que necesita otros medios para diversificar su sitio web (por ejemplo, actualizarlo más a menudo, hacerlo más rápido o más fácil de usar). Hoy en día, incluso Google está utilizando información fragmentada, como reseñas de usuarios, ¿qué crees que puedes hacer al respecto? ¿Los demandas y te arrancan de su índice?

Una forma es crear una función que tome texto y posición y luego Serverside generar x, y pos para cada carácter en el texto, generar divs en orden aleatorio que contenga los caracteres. Genere un javascript que posisione cada div en el lugar correcto en la pantalla. Se ve bien en la pantalla, pero en el código subyacente no hay un orden real para buscar el texto si no se soluciona el problema de raspar a través de su javascript (que puede cambiarse dinámicamente en cada solicitud)

Demasiado trabajo y posiblemente muchas peculiaridades, depende de la cantidad de texto y la complejidad de la interfaz de usuario que tenga en el sitio y otras cosas.

Muy pocos creo que dada la intención de cualquier sitio es publicar (es decir, hacer público) información.

  • Puede ocultar sus datos detrás de los inicios de sesión, por supuesto, pero esa es una solución muy situacional.

  • He visto aplicaciones que solo publicarían contenido donde los encabezados de las solicitudes indicaban un navegador web (en lugar de decir anónimo o “jakarta”), pero eso es fácil de burlar y perderás algunos humanos genuinos.

  • Luego existe la posibilidad de que acepte algunos scrapage pero que le hagan la vida imposible para ellos al no brindar contenido si las solicitudes provienen de la misma IP a una velocidad demasiado alta. Esto no es una cobertura total, pero lo más importante es que existe un “problema de AOL” que una IP puede cubrir muchos usuarios humanos únicos.

Ambas técnicas también dependen en gran medida de la tecnología de interceptación del tráfico, que es un rendimiento inevitable y / o desembolso financiero.

Dado que la mayoría de los sitios quieren un buen ranking en los motores de búsqueda, y los motores de búsqueda son robots de rastreo, no hay mucho que puedas hacer que no perjudique tu SEO.

Podrías crear un sitio completamente cargado en Ajax o un sitio basado en flash, lo que dificultaría los bots u ocultaría todo lo que está detrás de un inicio de sesión, lo que lo haría aún más difícil, pero cualquiera de estos enfoques dañará tu ranking de búsqueda y posiblemente te molestará. sus usuarios, y si alguien realmente lo quiere, encontrarán la manera.

La única forma garantizada de tener contenido que no se puede raspar es no publicarlo en la web. La naturaleza de la web es tal que cuando la publicas, está ahí afuera.

Si no quiere proteger mucha información, puede convertirla en una imagen sobre la marcha. Luego deben usar OCR, lo que hace que sea más fácil rozar otro sitio en lugar del tuyo.

Puede verificar el agente de usuario de los clientes que ingresan a su sitio. Algunos progtwigs de eliminación de pantalla de terceros tienen su propio agente de usuario para que pueda bloquear eso. Los buenos raspadores de pantalla sin embargo suplantan a su agente de usuario para que no pueda detectarlo. Tenga cuidado si intenta bloquear a alguien porque no quiere bloquear a un usuario legítimo 🙂

Lo mejor que puede esperar es bloquear a las personas que usan raspadores de pantalla que no son lo suficientemente inteligentes como para cambiar su agente de usuario.

Traté de “rozar la pantalla” de algunos archivos PDF una vez, solo para descubrir que realmente colocarían los caracteres en el PDF en orden semialeatorio. Supongo que el formato PDF te permite especificar una ubicación para cada bloque de texto, y usaron bloques muy pequeños (más pequeños que una palabra). Sospecho que los archivos PDF en cuestión no estaban tratando de evitar el rozamiento de la pantalla, sino que estaban haciendo algo extraño con su motor de renderizado.

Me pregunto si podrías hacer algo así.

Podrías poner todo en flash, pero en la mayoría de los casos eso molestaría a muchos usuarios legítimos, incluido yo mismo. Puede funcionar para cierta información, como precios de acciones o gráficos.

Sospecho que no hay una buena manera de hacer esto.

Supongo que podría ejecutar todo su contenido a través de un mecanismo para convertir texto en imágenes renderizadas usando una fuente y diseño estilo CAPTCHA, pero eso rompería el SEO y molestaría a sus usuarios.

Bueno, antes de enviar el contenido del servidor al cliente, elimine todos los \ r \ n, \ n, \ t y reemplace todo con un solo espacio. Ahora tiene 1 línea larga en su página html. Google hace esto. Esto hará que sea difícil para otros leer su html o JavaScript.
Luego puede crear tags vacías e insertarlas al azar aquí y allá. El no tendrá efecto.
Luego puede registrar todas las direcciones IP y la frecuencia con que llegan a su sitio. Si ves uno que llega a tiempo cada vez, lo marcas como un robot y lo bloqueas.
Asegúrate de dejar los motores de búsqueda solo si quieres que entren.
Espero que esto ayude

¿Qué pasa con el uso de la biblioteca iText para crear archivos PDF a partir de la información de su base de datos? Al igual que con Flash, no hará imposible el raspado, pero podría hacerlo un poco más difícil.

Nels

Una vieja pregunta, pero agregar interactividad hace que el filtrado de pantalla sea mucho más difícil. Si los datos no están en la respuesta original, por ejemplo, usted hizo una solicitud de AJAX para completar una carga de div después de la página, la mayoría de los raspadores no la verán.

Por ejemplo, uso la biblioteca de mecanizar para hacer mi raspado. Mechanize no ejecuta Javascript, no es un navegador moderno, solo analiza HTML, vamos a seguir enlaces y extraer texto, etc. Cada vez que me encuentro con una página que hace un uso intensivo de Javascript, me atraganto sin un script completo navegador (que admite la gama completa de Javascript) Estoy atascado.

Este es el mismo problema que hace que las pruebas automatizadas de aplicaciones web altamente interactivas sean tan difíciles.

Nunca pensé que sería posible prevenir la impresión de la pantalla … bueno, ¿qué sabes, revisa la nueva tecnología? Sivizion.com. Con su tecnología de búfer de video no hay forma de hacer una pantalla de impresión, genial, realmente genial, aunque es difícil de usar … Creo que también licencian la tecnología, échale un vistazo. (Si me equivoco, publique aquí cómo puede ser pirateado.) Lo encontré aquí: ¿Cómo evito la pantalla de impresión?

    Intereting Posts