img div attribute html architecture screen-scraping piracy-prevention

div - title html css



¿Cómo evito el raspado del sitio? (26)

  1. No, no es posible parar (de ninguna manera)
  2. Abrázalo. ¿Por qué no publicar como RDFa y convertirse en un motor de búsqueda excelente y fomentar la reutilización de datos? La gente le agradecerá y le dará crédito cuando sea necesario (vea musicbrainz como ejemplo).

Es probable que no desees la respuesta, pero ¿por qué ocultar lo que intentas hacer público?

Tengo un sitio web de música bastante grande con una gran base de datos de artistas. He estado notando que otros sitios de música están raspando los datos de nuestro sitio (introduzco nombres de Artistas falsos aquí y allá y luego hago búsquedas en Google para ellos).

¿Cómo puedo prevenir el raspado de la pantalla? ¿Es incluso posible?


De acuerdo, como dicen todas las publicaciones, si quieres que sea compatible con los motores de búsqueda, los robots pueden eliminarlo.

Pero aún puedes hacer algunas cosas, y puede ser efectivo para un 60-70% de robots raspadores.

Haga un script de verificación como abajo.

Si una dirección IP en particular está visitando muy rápido, luego de unas pocas visitas (5-10) coloque su dirección IP + información del navegador en un archivo o base de datos.

El siguiente paso

(Esto sería un proceso en segundo plano y se ejecutará todo el tiempo o se programará después de unos minutos). Haga otro script que continúe revisando las direcciones IP sospechosas.

Caso 1. Si el agente de usuario pertenece a un motor de búsqueda conocido como Google, Bing , Yahoo (puede encontrar más información sobre los agentes de usuario en Google). Entonces debes ver http://www.iplists.com/ . Esta lista y tratar de hacer coincidir los patrones.Y si parece un agente de usuario falso, solicite completar un CAPTCHA en la próxima visita. (Necesitas investigar un poco más sobre las direcciones IP de los bots. Sé que esto es factible y también probar quién es la dirección IP. Puede ser útil).

Caso 2. Ningún agente de usuario de un bot de búsqueda: simplemente solicite completar un CAPTCHA en la próxima visita.


Lo siento, es muy difícil hacer esto ...

Le sugeriría educadamente pedirles que no usen su contenido (si su contenido tiene derechos de autor).

Si lo es y no lo quitan, entonces puede tomar acción furthur y enviarles una carta de cese y desistimiento .

En general, cualquier cosa que haga para evitar el raspado probablemente terminará con un efecto más negativo, por ejemplo, accesibilidad, bots / arañas, etc.


Los sueña

En serio: si tiene algo de dinero, hable con un abogado joven, bueno y agradable, que conozca los Internets. Realmente podrías hacer algo aquí. Dependiendo de la ubicación de los sitios, puede hacer que un abogado escriba un cese y desista o su equivalente en su país. Puedes al menos asustar a los bastardos.

Documentar la inserción de sus valores ficticios. Inserte valores ficticios que le señalen de forma clara (pero oscura). Creo que esta es una práctica común con las compañías de guías telefónicas, y aquí en Alemania, creo que ha habido varios casos en los que los imitadores se eliminaron a través de entradas falsas que copiaron 1: 1.

Sería una vergüenza si esto lo llevara a desordenar su código HTML, arrastrando el SEO, la validez y otras cosas (aunque un sistema de plantillas que utiliza una estructura HTML ligeramente diferente en cada solicitud de páginas idénticas ya puede ser de gran ayuda). rastreadores que siempre dependen de estructuras HTML y nombres de clase / ID para obtener el contenido).

Casos como este son para lo que sirven las leyes de copyright. Robar el trabajo honesto de otras personas para ganar dinero es algo contra lo que deberías poder luchar.


Presumiré que ha configurado robots.txt .

Como han mencionado otros, los raspadores pueden falsificar casi todos los aspectos de sus actividades, y probablemente sea muy difícil identificar las solicitudes que provienen de los malos.

Yo consideraría:

  1. Configurar una página, /jail.html .
  2. No permitir el acceso a la página en robots.txt (por lo que las arañas respetuosas nunca lo visitarán).
  3. Coloque un enlace en una de sus páginas, ocultándolo con CSS ( display: none ).
  4. Registre las direcciones IP de los visitantes a /jail.html .

Esto podría ayudarlo a identificar rápidamente las solicitudes de los raspadores que ignoran flagrantemente su robots.txt .

También es posible que desee que su /jail.html un sitio web completo que tenga el mismo marcado exacto que las páginas normales, pero con datos falsos ( /jail/album/63ajdka , /jail/track/3aads8 , etc.). De esta manera, los raspadores defectuosos no serán alertados de "entrada inusual" hasta que tenga la oportunidad de bloquearlos por completo.


Proporcione una API XML para acceder a sus datos; de una manera que es fácil de usar. Si la gente quiere tus datos, los obtendrán, así que podrías hacer todo lo posible.

De esta manera, puede proporcionar un subconjunto de funcionalidad de una manera efectiva, asegurando que, al menos, los raspadores no generen solicitudes HTTP y grandes cantidades de ancho de banda.

Entonces, todo lo que tiene que hacer es convencer a las personas que desean que sus datos utilicen la API. ;)


Realmente no hay nada que puedas hacer para evitar esto por completo. Los raspadores pueden falsificar su agente de usuario, usar múltiples direcciones IP, etc. y aparecer como un usuario normal. Lo único que puede hacer es hacer que el texto no esté disponible en el momento en que se carga la página; puede hacerlo con una imagen, flash o cargarlo con JavaScript. Sin embargo, las dos primeras son malas ideas, y la última sería un problema de accesibilidad si JavaScript no está habilitado para algunos de sus usuarios habituales.

Si están cerrando absolutamente su sitio y repasando todas sus páginas, podrían hacer algún tipo de limitación de velocidad.

Aunque hay algo de esperanza. Los raspadores confían en que los datos de su sitio se encuentren en un formato consistente. Si pudiera aleatorizarlo de alguna manera, podría romper su raspador. Cosas como cambiar el ID o los nombres de clase de los elementos de la página en cada carga, etc. Pero eso es mucho trabajo por hacer y no estoy seguro de que valga la pena. E incluso entonces, probablemente podrían sortearlo con suficiente dedicación.


Cosas que podrían funcionar contra los rascadores principiantes:

  • Bloqueo de IP
  • usa mucho ajax
  • verifique el encabezado de la solicitud de referencia
  • requiere inicio de sesión

Cosas que ayudarán en general:

  • cambia tu diseño cada semana
  • robots.txt

Cosas que ayudarán pero que harán que tus usuarios te odien:

  • captcha

Método uno (solo sitios pequeños):
sirva datos cifrados / codificados.
Escape la web usando python (urllib, pedidos, beautifulSoup, etc.) y encontré muchos sitios web que sirven datos cifrados / codificados que no se pueden descifrar en ningún lenguaje de programación simplemente porque el método de cifrado no existe.

Logré esto en un sitio web de PHP al cifrar y minimizar la salida (ADVERTENCIA: esto no es una buena idea para sitios grandes) la respuesta siempre fue un contenido confuso.

Ejemplo de minimizar la salida en PHP ( ¿Cómo reducir la salida de html de la página php? ):

<?php function sanitize_output($buffer) { $search = array( ''//>[^/S ]+/s'', // strip whitespaces after tags, except space ''/[^/S ]+/</s'', // strip whitespaces before tags, except space ''/(/s)+/s'' // shorten multiple whitespace sequences ); $replace = array(''>'', ''<'', ''//1''); $buffer = preg_replace($search, $replace, $buffer); return $buffer; } ob_start("sanitize_output"); ?>

Método dos:
si no puede evitar que se atornillen, sirva los datos falsos / inútiles como respuesta.

Método tres:
bloquee los agentes de usuario de raspado comunes, verá esto en los sitios web principales / grandes, ya que es imposible rasparlos con "python3.4" como su agente de usuario.

Método cuatro:
asegúrese de que todos los encabezados de usuario sean válidos, a veces proporciono tantos encabezados como sea posible para hacer que mi raspador parezca un usuario auténtico, algunos de ellos ni siquiera son verdaderos o válidos como en-FU :).
Aquí hay una lista de algunos de los encabezados que comúnmente proporciono.

headers = { "Requested-URI": "/example", "Request-Method": "GET", "Remote-IP-Address": "656.787.909.121", "Remote-IP-Port": "69696", "Protocol-version": "HTTP/1.1", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding": "gzip,deflate", "Accept-Language": "en-FU,en;q=0.8", "Cache-Control": "max-age=0", "Connection": "keep-alive", "Dnt": "1", "Host": "http://example.com", "Referer": "http://example.com", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36" }


Nota: dado que la versión completa de esta respuesta supera el límite de longitud de , deberá dirigirse a GitHub para leer la versión extendida, con más consejos y detalles.

Para impedir el raspado (también conocido como webscraping , screenscraping , minería de datos web , recolección web o extracción de datos web ), es útil saber cómo funcionan estos raspadores y, por extensión, qué impide que funcionen bien.

Hay varios tipos de raspadores, y cada uno funciona de manera diferente:

  • Las arañas, como el robot de Google o las copiadoras de sitios web como HTtrack , que siguen recursivamente enlaces a otras páginas para obtener datos. En ocasiones, se usan para obtener datos específicos, a menudo en combinación con un analizador HTML para extraer los datos deseados de cada página.

  • Shell scripts: A veces, las herramientas comunes de Unix se usan para raspar: Wget o Curl para descargar páginas, y Grep (Regex) para extraer los datos.

  • Analizadores HTML, como los basados ​​en Jsoup, Scrapy y otros. Similar a los basados ​​en expresiones regulares de shell-script, estos funcionan extrayendo datos de páginas basadas en patrones en HTML, generalmente ignorando todo lo demás.

    Por ejemplo: si su sitio web tiene una función de búsqueda, tal raspador podría enviar una solicitud de búsqueda y luego obtener todos los enlaces de resultados y sus títulos de la página de resultados HTML, para obtener específicamente solo los enlaces de resultados de búsqueda y sus títulos . Estos son los mas comunes.

  • Screenscrapers, basados ​​en eg. Selenium o PhantomJS , que abren su sitio web en un navegador real, ejecutan JavaScript, AJAX, etc., y luego obtienen el texto deseado de la página web, generalmente por:

    • Obtenga el HTML desde el navegador después de que se haya cargado su página y se haya ejecutado JavaScript, y luego utilice un analizador HTML para extraer los datos deseados. Estos son los más comunes, y muchos de los métodos para romper analizadores / raspadores de HTML también funcionan aquí.

    • Tomar una captura de pantalla de las páginas renderizadas y luego usar OCR para extraer el texto deseado de la captura de pantalla. Estos son raros, y solo los raspadores dedicados que realmente quieren sus datos configurarán esto.

  • Servicios de webscraping como ScrapingHub o Kimono . De hecho, hay personas cuyo trabajo es descubrir cómo eliminar su sitio y extraer el contenido para que otros lo usen.

    Como era de esperar, los servicios profesionales de raspado son los más difíciles de disuadir, pero si hace que sea difícil y lento averiguar cómo raspar su sitio, es posible que estos (y las personas que les pagan por hacerlo) no se molesten en raspar su sitio web.

  • Incrustar su sitio web en las páginas de otro sitio con frames , e incrustar su sitio en aplicaciones móviles.

    Si bien no es técnicamente un raspado, las aplicaciones móviles (Android e iOS) pueden incrustar sitios web e inyectar CSS y JavaScript personalizados, cambiando así completamente la apariencia de sus páginas.

  • Copia humana - pegar: la gente copiará y pegará su contenido para usarlo en otros lugares.

Hay mucha superposición entre estos diferentes tipos de raspadores, y muchos raspadores se comportarán de manera similar, incluso si utilizan tecnologías y métodos diferentes.

Estos consejos son principalmente mis propias ideas, varias dificultades que he encontrado al escribir scrapers, así como fragmentos de información e ideas de todo el interwebs.

Cómo dejar de raspar

No puede evitarlo por completo , ya que haga lo que haga, los raspadores determinados aún pueden descubrir cómo raspar. Sin embargo, puede detener un montón de raspado haciendo algunas cosas:

Supervise sus registros y patrones de tráfico; Limite el acceso si ve alguna actividad inusual:

Verifique sus registros con regularidad y, en caso de una actividad inusual que indique un acceso automatizado (raspadores), como muchas acciones similares de la misma dirección IP, puede bloquear o limitar el acceso.

Específicamente, algunas ideas:

  • Limitación de la tasa:

    Solo permita que los usuarios (y los raspadores) realicen un número limitado de acciones en un tiempo determinado; por ejemplo, solo permita algunas búsquedas por segundo desde cualquier dirección IP o usuario específico. Esto ralentizará los raspadores y los hará ineficaces. También puede mostrar un captcha si las acciones se completan demasiado rápido o más rápido de lo que lo haría un usuario real.

  • Detectar actividad inusual:

    Si ve una actividad inusual, como muchas solicitudes similares de una dirección IP específica, alguien que mira un número excesivo de páginas o realiza una cantidad inusual de búsquedas, puede impedir el acceso o mostrar un captcha para solicitudes posteriores.

  • No solo supervise y limite el límite por dirección IP, use otros indicadores también:

    Si bloquea o limita la velocidad, no lo haga solo por dirección de IP; Puede utilizar otros indicadores y métodos para identificar usuarios específicos o raspadores. Algunos indicadores que pueden ayudarlo a identificar usuarios / raspadores específicos incluyen:

    • La rapidez con que los usuarios rellenan los formularios y dónde hacen clic en un botón;

    • Puede recopilar mucha información con JavaScript, como el tamaño / resolución de la pantalla, la zona horaria, las fuentes instaladas, etc .; Puedes usar esto para identificar usuarios.

    • Encabezados HTTP y su orden, especialmente User-Agent.

    Como ejemplo, si obtiene muchas solicitudes de una sola dirección IP, todas usando el mismo User Agent, tamaño de pantalla (determinado con JavaScript) y el usuario (raspador en este caso) siempre hace clic en el botón de la misma manera y en intervalos regulares, es probable que sea un raspador de pantalla; y puede bloquear temporalmente solicitudes similares (por ejemplo, bloquear todas las solicitudes con ese agente de usuario y el tamaño de pantalla que proviene de esa dirección IP en particular), y de esta manera no molestará a los usuarios reales en esa dirección IP, por ejemplo. En caso de una conexión compartida a internet.

    También puede llevar esto más lejos, ya que puede identificar solicitudes similares, incluso si provienen de diferentes direcciones IP, indicativas de raspado distribuido (un raspador que utiliza una red de bots o una red de proxies). Si recibe muchas solicitudes idénticas, pero provienen de diferentes direcciones IP, puede bloquearlas. Nuevamente, tenga en cuenta que no bloquea inadvertidamente a usuarios reales.

    Esto puede ser efectivo contra los screenscrapers que ejecutan JavaScript, ya que puede obtener mucha información de ellos.

    Preguntas relacionadas sobre Security Stack Exchange:

  • En lugar de bloquear temporalmente el acceso, use un Captcha:

    La forma sencilla de implementar la limitación de velocidad sería bloquear temporalmente el acceso durante un cierto tiempo, sin embargo, usar un Captcha puede ser mejor, consulte la sección sobre Captchas más abajo.

Requiere registro e inicio de sesión

Requiera la creación de una cuenta para ver su contenido, si esto es posible para su sitio. Este es un buen elemento disuasivo para los raspadores, pero también es un buen elemento disuasorio para los usuarios reales.

  • Si requiere la creación de una cuenta y el inicio de sesión, puede realizar un seguimiento preciso de las acciones del usuario y del raspador. De esta manera, puede detectar fácilmente cuándo se está utilizando una cuenta específica para raspar y prohibirla. Las cosas como la limitación de la velocidad o la detección de abusos (como un gran número de búsquedas en poco tiempo) se hacen más fáciles, ya que puede identificar raspadores específicos en lugar de solo direcciones IP.

Para evitar que los scripts creen muchas cuentas, debes:

  • Solicite una dirección de correo electrónico para registrarse y verifique esa dirección de correo electrónico enviando un enlace que se debe abrir para activar la cuenta. Permitir solo una cuenta por dirección de correo electrónico.

  • Requerir un captcha para ser resuelto durante el registro / creación de la cuenta.

Requerir la creación de una cuenta para ver contenido alejará a los usuarios y motores de búsqueda; Si necesita la creación de una cuenta para ver un artículo, los usuarios irán a otra parte.

Bloquee el acceso desde las direcciones IP del servicio de alojamiento y rastreo en la nube

A veces, los rastreadores se ejecutarán desde servicios de alojamiento web, como Amazon Web Services o GAE, o VPSes. Limite el acceso a su sitio web (o muestre un captcha) para las solicitudes que se originan en las direcciones IP utilizadas por dichos servicios de alojamiento en la nube.

De manera similar, también puede limitar el acceso desde las direcciones IP utilizadas por los proveedores de proxy o VPN, ya que los raspadores pueden usar dichos servidores proxy para evitar que se detecten muchas solicitudes.

Tenga en cuenta que al bloquear el acceso de los servidores proxy y VPN, afectará negativamente a los usuarios reales.

Haga que su mensaje de error sea indescriptible si lo bloquea

Si bloquea / limita el acceso, debe asegurarse de no decirle al raspador qué causó el bloqueo, y así darles pistas sobre cómo arreglar su raspador. Así que una mala idea sería mostrar páginas de error con texto como:

  • Demasiadas solicitudes de su dirección IP, inténtelo de nuevo más tarde.

  • Error, el encabezado de User Agent no está presente!

En su lugar, muestre un mensaje de error amigable que no le diga al raspador lo que lo causó. Algo como esto es mucho mejor:

  • Perdón, algo salió mal. Puede ponerse en contacto con el soporte técnico a través de [email protected] , si el problema persiste.

Esto también es mucho más fácil de usar para usuarios reales, si alguna vez ven un error de este tipo. También debe considerar mostrar un captcha para solicitudes posteriores en lugar de un bloqueo duro, en caso de que un usuario real vea el mensaje de error, para que no bloquee y, por lo tanto, haga que usuarios legítimos se comuniquen con usted.

Use Captchas si sospecha que un raspador está accediendo a su sitio web.

Los Captchas ("Prueba completamente automatizada para distinguir a las computadoras y los humanos") son muy efectivos para detener los raspadores. Desafortunadamente, también son muy efectivos para irritar a los usuarios.

Como tales, son útiles cuando sospecha un posible raspador y desea detener el raspado, sin bloquear también el acceso en caso de que no sea un raspador sino un usuario real. Es posible que desee considerar mostrar un captcha antes de permitir el acceso al contenido si sospecha un raspador.

Cosas a tener en cuenta al usar Captchas:

  • No haga su propio rollo, use algo como reCaptcha de Google: es mucho más fácil que implementar un captcha usted mismo, es más fácil de usar que algunas soluciones de texto borroso y distorsionado que puede encontrar usted mismo (los usuarios a menudo solo necesitan marcar una casilla) ), y también es mucho más difícil de resolver para un guionista que una simple imagen de su sitio

  • No incluya la solución al captcha en el formato HTML: en realidad, he visto un sitio web que tenía la solución para el captcha en la misma página (aunque bastante bien oculto), por lo que es bastante inútil. No hagas algo como esto. Nuevamente, use un servicio como reCaptcha, y no tendrá este tipo de problema (si lo usa correctamente).

  • Los captchas se pueden resolver a granel: hay servicios de resolución de capuchones donde los humanos reales y mal pagados resuelven los captchas a granel. Una vez más, usar reCaptcha es una buena idea aquí, ya que tienen protecciones (como el tiempo relativamente corto que tiene el usuario para resolver el captcha). Es poco probable que se use este tipo de servicio a menos que sus datos sean realmente valiosos.

Servir el contenido de tu texto como una imagen.

Puede representar el texto en un servidor de imágenes y enviarlo para que se muestre, lo que dificultará que los simples raspadores extraigan texto.

Sin embargo, esto es malo para los lectores de pantalla, los motores de búsqueda, el rendimiento y casi todo lo demás. También es ilegal en algunos lugares (debido a la accesibilidad, por ejemplo, la Ley de Estadounidenses con Discapacidades), y también es fácil de eludir algunos OCR, así que no lo hagas.

Puedes hacer algo similar con los sprites CSS, pero que tiene los mismos problemas.

No exponga su conjunto de datos completo:

Si es posible, no proporcione una forma para que un script / bot obtenga todo su conjunto de datos. Como ejemplo: tiene un sitio de noticias, con muchos artículos individuales. Puede hacer que esos artículos solo sean accesibles buscándolos a través de la búsqueda en el sitio y, si no tiene una lista de todos los artículos en el sitio y sus URL en cualquier lugar, solo se podrá acceder a esos artículos utilizando la búsqueda. característica. Esto significa que una secuencia de comandos que desee obtener todos los artículos de su sitio tendrá que realizar búsquedas de todas las frases posibles que puedan aparecer en sus artículos para encontrarlos todos, lo que llevará mucho tiempo, será terriblemente ineficaz y, con suerte, será útil. El raspador se rinde.

Esto será ineficaz si:

  • El bot / script no quiere / necesita el conjunto de datos completo de todos modos.
  • Sus artículos se publican desde una URL que se parece a example.com/article.php?articleId=12345 . Esto (y cosas similares) que permitirá a los raspadores simplemente iterar sobre todos los articleId artículo y solicitar todos los artículos de esa manera.
  • Hay otras formas de encontrar todos los artículos, por ejemplo, escribiendo un guión para seguir los enlaces dentro de los artículos que llevan a otros artículos.
  • Buscar algo como "y" o "el" puede revelar casi todo, por lo que es algo que hay que tener en cuenta. (Puedes evitar esto solo devolviendo los 10 o 20 resultados principales).
  • Necesita motores de búsqueda para encontrar su contenido.

No exponga sus API, puntos finales y cosas similares:

Asegúrate de no exponer ninguna API, incluso involuntariamente. Por ejemplo, si está utilizando AJAX o solicitudes de red desde Adobe Flash o Java Applets (¡Dios no lo permita!) Para cargar sus datos, es trivial mirar las solicitudes de red desde la página y averiguar a dónde van esas solicitudes, y luego realice una ingeniería inversa y use esos puntos finales en un programa de raspado. Asegúrese de ofuscar sus puntos finales y dificultar su uso para otros, como se describe.

Para disuadir a los analizadores y raspadores HTML:

Como los analizadores HTML funcionan extrayendo contenido de páginas basadas en patrones identificables en el HTML, podemos cambiar intencionalmente esos patrones para romper estos raspadores, o incluso atornillarlos. La mayoría de estos consejos también se aplican a otros raspadores como las arañas y los capturadores de pantalla.

Cambia frecuentemente tu HTML

Los raspadores que procesan HTML directamente lo hacen extrayendo contenidos de partes específicas e identificables de su página HTML. Por ejemplo: si todas las páginas de su sitio web tienen un div con un ID de article-content de article-content , que contiene el texto del artículo, es trivial escribir un script para visitar todas las páginas de artículos de su sitio y extraer el contenido. el texto del article-content div en cada página del artículo, y voilà, el raspador tiene todos los artículos de su sitio en un formato que puede ser reutilizado en otro lugar.

Si cambia el HTML y la estructura de sus páginas con frecuencia, dichos raspadores ya no funcionarán.

  • Con frecuencia puede cambiar los ID y las clases de elementos en su HTML, tal vez incluso automáticamente. Entonces, si el div.article-content tu artículo div.article-content convierte en algo así como div.a4c36dda13eaf0 , y cambia cada semana, el raspador funcionará bien inicialmente, pero se romperá después de una semana. Asegúrese de cambiar la longitud de sus ID / clases también, de lo contrario el raspador usará div.[any-14-characters] para encontrar el div deseado en su lugar. Cuidado con otros agujeros similares también ..

  • Si no hay manera de encontrar el contenido deseado en el marcado, el raspador lo hará desde la forma en que está estructurado el HTML. Por lo tanto, si todas las páginas de sus artículos son similares en cuanto a que cada div dentro de un div que viene después de un h1 es el contenido del artículo, los raspadores obtendrán el contenido del artículo basado en eso. Nuevamente, para romper esto, puede agregar / eliminar marcas adicionales a su HTML, periódicamente y al azar, por ejemplo. añadiendo div extra o span s. Con el moderno procesamiento de HTML del lado del servidor, esto no debería ser demasiado difícil.

Cosas a tener en cuenta:

  • Será tedioso y difícil de implementar, mantener y depurar.

  • Va a dificultar el almacenamiento en caché. Especialmente si cambia los identificadores o las clases de sus elementos HTML, esto requerirá los cambios correspondientes en sus archivos CSS y JavaScript, lo que significa que cada vez que los modifique, el navegador los deberá volver a descargar. Esto dará como resultado tiempos de carga de la página más largos para los visitantes frecuentes y una mayor carga del servidor. Si solo lo cambias una vez a la semana, no será un gran problema.

  • Los raspadores inteligentes aún podrán obtener su contenido al inferir dónde se encuentra el contenido real, por ejemplo. al saber que un gran bloque de texto en la página probablemente sea el artículo real. Esto hace posible encontrar y extraer los datos deseados de la página. Boilerpipe hace exactamente esto.

Básicamente, asegúrese de que no sea fácil para un script encontrar el contenido real deseado para cada página similar.

Vea también Cómo evitar que los rastreadores que dependen de XPath obtengan el contenido de la página para obtener detalles sobre cómo se puede implementar esto en PHP.

Cambia tu HTML basado en la ubicación del usuario

Esto es algo similar al consejo anterior. Si sirve un HTML diferente según la ubicación / país de su usuario (determinado por la dirección IP), esto puede interrumpir los raspadores que se entregan a los usuarios. Por ejemplo, si alguien está escribiendo una aplicación móvil que elimina los datos de su sitio, inicialmente funcionará bien, pero se romperá cuando se distribuya realmente a los usuarios, ya que esos usuarios pueden estar en un país diferente y, por lo tanto, obtienen un HTML diferente, que raspador incrustado no fue diseñado para consumir.

¡Cambie frecuentemente su HTML, atornille activamente con los raspadores al hacerlo!

Un ejemplo: tiene una función de búsqueda en su sitio web, ubicada en example.com/search?query=somesearchquery , que devuelve el siguiente HTML:

<div class="search-result"> <h3 class="search-result-title"> has become the world''s most popular programming Q & A website</h3> <p class="search-result-excerpt">The website has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p> <a class"search-result-link" href="/stories/story-link">Read more</a> </div> (And so on, lots more identically structured divs with search results)

Como habrá adivinado, esto es fácil de descifrar: todo lo que debe hacer un raspador es golpear la URL de búsqueda con una consulta y extraer los datos deseados del HTML devuelto. Además de cambiar periódicamente el HTML como se describe anteriormente, también puede dejar el marcado anterior con los ID y las clases anteriores, ocultarlo con CSS y rellenarlo con datos falsos, lo que envenenará el raspador. Así es como se podría cambiar la página de resultados de búsqueda:

<div class="the-real-search-result"> <h3 class="the-real-search-result-title"> has become the world''s most popular programming Q & A website</h3> <p class="the-real-search-result-excerpt">The website has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p> <a class"the-real-search-result-link" href="/stories/story-link">Read more</a> </div> <div class="search-result" style="display:none"> <h3 class="search-result-title">Visit Example.com now, for all the latest related news !</h3> <p class="search-result-excerpt">Example.com is so awesome, visit now !</p> <a class"search-result-link" href="http://example.com/">Visit Now !</a> </div> (More real search results follow)

Esto significará que los raspadores escritos para extraer datos del HTML basados ​​en clases o ID seguirán funcionando aparentemente, pero obtendrán datos falsos o incluso anuncios, datos que los usuarios reales nunca verán, ya que están ocultos con CSS.

Atornille con el raspador: inserte datos de honeypot falsos e invisibles en su página

Añadiendo al ejemplo anterior, puede agregar elementos de honeypot invisibles a su HTML para capturar los raspadores. Un ejemplo que podría agregarse a la página de resultados de búsqueda descrita anteriormente:

<div class="search-result" style=”display:none"> <h3 class="search-result-title">This search result is here to prevent scraping</h3> <p class="search-result-excerpt">If you''re a human and see this, please ignore it. If you''re a scraper, please click the link below :-) Note that clicking the link below will block access to this site for 24 hours.</p> <a class"search-result-link" href="/scrapertrap/scrapertrap.php">I''m a scraper !</a> </div> (The actual, real, search results follow.)

Un raspador escrito para obtener todos los resultados de la búsqueda recogerá esto, como cualquiera de los otros resultados de búsqueda reales en la página, y visitará el enlace, buscando el contenido deseado. Un ser humano real ni siquiera lo verá en primer lugar (debido a que está oculto con CSS), y no visitará el enlace. Una araña genuina y deseable, como la de Google, tampoco visitará el enlace porque usted rechazó /scrapertrap/ en su archivo robots.txt.

Puede hacer que su scrapertrap.php haga algo como bloquear el acceso a la dirección IP que lo visitó o forzar un captcha para todas las solicitudes posteriores de esa IP.

  • No te olvides de no permitir tu honeypot ( /scrapertrap/ ) en tu archivo robots.txt para que los robots de los motores de búsqueda no caigan en él.

  • Puede / debe combinar esto con la sugerencia anterior de cambiar su HTML con frecuencia.

  • Cambia esto con frecuencia también, ya que los raspadores eventualmente aprenderán a evitarlo. Cambia la URL y el texto de honeypot. También debería considerar cambiar el CSS en línea que se usa para ocultar, y usar un atributo de ID y un CSS externo en su lugar, ya que los raspadores aprenderán a evitar cualquier cosa que tenga un atributo de style con el CSS que se usa para ocultar el contenido. También intente solo habilitarlo algunas veces, por lo que el raspador funciona inicialmente, pero se rompe después de un tiempo. Esto también se aplica a la punta anterior.

  • Las personas malintencionadas pueden impedir el acceso para usuarios reales compartiendo un enlace a su honeypot, o incluso insertando ese enlace en algún lugar como una imagen (por ejemplo, en un foro). Cambie la URL con frecuencia y haga que los tiempos de prohibición sean relativamente cortos.

Servir datos falsos e inútiles si detecta un raspador

Si detecta lo que obviamente es un raspador, puede proporcionar datos falsos e inútiles; esto dañará los datos que el raspador obtiene de su sitio web. También debería hacer imposible distinguir tales datos falsos de datos reales, de modo que los raspadores no sepan que están siendo engañados.

Como ejemplo: tienes un sitio web de noticias; Si detecta un raspador, en lugar de bloquear el acceso, presente artículos falsos generados aleatoriamente , y esto envenenará los datos que obtiene el raspador. Si hace que sus datos falsos sean indistinguibles de los reales, será difícil para los raspadores obtener lo que quieren, es decir, los datos reales y reales.

No aceptar solicitudes si el agente de usuario está vacío / falta

A menudo, los raspadores escritos de forma perezosa no envían un encabezado de Agente de Usuario con su solicitud, mientras que todos los navegadores, así como las arañas de los motores de búsqueda, lo harán.

Si recibe una solicitud donde el encabezado del Agente de usuario no está presente, puede mostrar un captcha, o simplemente bloquear o limitar el acceso. (O sirva datos falsos como se describe anteriormente, o algo más ...)

Es trivial de falsificar, pero como medida contra los raspadores mal escritos, vale la pena implementarlos.

No acepte solicitudes si el Agente de usuario es un raspador común; los de la lista negra utilizados por los raspadores

En algunos casos, los rastreadores utilizarán un Agente de usuario que no utiliza ningún navegador real o motor de búsqueda, como por ejemplo:

  • "Mozilla" (Solo eso, nada más. He visto algunas preguntas sobre cómo raspar aquí, usar eso. Un navegador real nunca usará solo eso)
  • "Java 1.7.43_u43" (De forma predeterminada, HttpUrlConnection de Java usa algo como esto).
  • "BIZCO EasyScraping Studio 2.0"
  • "wget", "curl", "libcurl", .. (Wget y cURL a veces se usan para raspado básico)

Si encuentra que los rastreadores utilizan una cadena específica de Agente de usuario y no la utilizan navegadores reales o arañas legítimas, también puede agregarla a su lista negra.

Si no solicita activos (CSS, imágenes), no es un navegador real.

Un navegador real (casi siempre) solicitará y descargará activos como imágenes y CSS. Los analizadores HTML y los raspadores no lo harán, ya que solo están interesados ​​en las páginas reales y su contenido.

Puede registrar solicitudes en sus activos, y si ve muchas solicitudes solo para el HTML, puede ser un raspador.

Tenga en cuenta que los robots de búsqueda, los dispositivos móviles antiguos, los lectores de pantalla y los dispositivos mal configurados tampoco pueden solicitar activos.

Utilizar y requerir cookies; Úsalos para rastrear acciones de usuario y raspador.

Puede requerir que las cookies estén habilitadas para poder ver su sitio web. Esto disuadirá a los escritores de scraper inexpertos y novatos, sin embargo, es fácil para un raspador enviar cookies. Si los usa y los requiere, puede hacer un seguimiento de las acciones del usuario y del raspador con ellos y, de este modo, implementar la limitación de velocidad, el bloqueo o la visualización de captchas por usuario en lugar de por IP.

Por ejemplo: cuando el usuario realiza una búsqueda, configure una cookie de identificación única. Cuando se visualizan las páginas de resultados, verifique esa cookie. Si el usuario abre todos los resultados de búsqueda (se puede ver en la cookie), es probable que sea un raspador.

El uso de cookies puede ser ineficaz, ya que los raspadores también pueden enviar las cookies con sus solicitudes y descartarlas según sea necesario. También impedirá el acceso para usuarios reales que tienen las cookies deshabilitadas, si su sitio solo funciona con cookies.

Tenga en cuenta que si utiliza JavaScript para configurar y recuperar la cookie, bloqueará los raspadores que no ejecutan JavaScript, ya que no pueden recuperar y enviar la cookie con su solicitud.

Usa JavaScript + Ajax para cargar tu contenido

Podría usar JavaScript + AJAX para cargar su contenido después de que se cargue la página. Esto hará que el contenido sea inaccesible para los analizadores HTML que no ejecutan JavaScript. Esto suele ser un impedimento efectivo para los programadores novatos e inexpertos que escriben raspadores.

Ser consciente de:

  • El uso de JavaScript para cargar el contenido real degradará la experiencia y el rendimiento del usuario

  • Los motores de búsqueda tampoco pueden ejecutar JavaScript, lo que evita que indexen su contenido. Esto puede no ser un problema para las páginas de resultados de búsqueda, pero puede ser para otras cosas, como páginas de artículos.

Ofusque su marca, las solicitudes de red de los scripts y todo lo demás.

Si utiliza Ajax y JavaScript para cargar sus datos, ofusque los datos que se transfieren. Como ejemplo, puede codificar sus datos en el servidor (con algo tan simple como base64 o más complejo), y luego decodificarlos y mostrarlos en el cliente, después de obtenerlos a través de Ajax. Esto significará que alguien que esté inspeccionando el tráfico de la red no verá de inmediato cómo funciona su página y cómo carga los datos, y será más difícil que alguien solicite directamente los datos de solicitud de sus puntos finales, ya que tendrán que aplicar ingeniería inversa a su algoritmo de descifrado.

  • Si utiliza Ajax para cargar los datos, debería dificultar el uso de los puntos finales sin cargar primero la página, por ejemplo, al requerir alguna clave de sesión como parámetro, que puede incrustar en su JavaScript o HTML.

  • También puede incrustar sus datos ofuscados directamente en la página HTML inicial y usar JavaScript para desobstruir y mostrarlos, lo que evitaría las solicitudes de red adicionales. Hacer esto hará que sea mucho más difícil extraer los datos utilizando un analizador de solo HTML que no ejecuta JavaScript, ya que el que escribe el raspador tendrá que aplicar ingeniería inversa a su JavaScript (que también debe ofuscar).

  • Es posible que desee cambiar sus métodos de ofuscación con regularidad, para romper los raspadores que lo han descubierto.

Sin embargo, hay varias desventajas para hacer algo como esto:

  • Será tedioso y difícil de implementar, mantener y depurar.

  • Será ineficaz contra los raspadores y los screenscrapers que ejecutan JavaScript y luego extraen los datos. (Sin embargo, la mayoría de los analizadores HTML simples no ejecutan JavaScript)

  • Hará que su sitio no sea funcional para usuarios reales si tienen JavaScript deshabilitado.

  • El rendimiento y los tiempos de carga de la página sufrirán.

No técnico:

  • Dile a la gente que no raspe, y algunos lo respetarán.

  • Encontrar un abogado

  • Haga que sus datos estén disponibles, proporcione una API:

    Podría hacer que sus datos estén fácilmente disponibles y requiera atribución y un enlace a su sitio. Tal vez cobrar $$$ por ello.

Diverso:

  • También hay servicios comerciales de protección contra raspado, como el anti-raspado por Cloudflare o Distill Networks (detalles sobre cómo funciona here ), que hacen estas cosas, y más para usted.

  • Encuentre un equilibrio entre la facilidad de uso para usuarios reales y la resistencia a los raspadores: todo lo que haga impactará negativamente la experiencia del usuario de una forma u otra, encontrará compromisos.

  • No olvides tu sitio móvil y aplicaciones. Si tiene una aplicación móvil, eso también se puede capturar, y se puede inspeccionar el tráfico de la red para determinar los puntos finales REST que utiliza.

  • Los raspadores pueden raspar otros raspadores: si hay un sitio web que tiene contenido raspado del tuyo, otros raspadores pueden rascarse del sitio web de ese raspador.

Otras lecturas:


Desafortunadamente, su mejor opción es bastante manual: busque patrones de tráfico que considere indicativos de raspado y prohíba sus direcciones IP.

Ya que está hablando de un sitio público, entonces hacer que el sitio sea amigable para los motores de búsqueda también lo hará fácil de usar. Si un motor de búsqueda puede rastrear y raspar su sitio, también puede hacerlo un raspador malicioso. Es una línea fina para caminar.


Respuesta tardía - y también esta respuesta probablemente no sea la que quieres escuchar ...

Yo ya escribí muchas (muchas decenas) de diferentes raspadores especializados de extracción de datos. (solo porque me gusta la filosofía de "datos abiertos").

Aquí hay muchos consejos en otras respuestas: ahora desempeñaré el papel de abogado del diablo y extenderé y / o corregiré su efectividad.

Primero:

  • si alguien realmente quiere tus datos
  • Usted no puede ocultar sus datos (técnicamente)
  • si los datos son accesibles públicamente para sus "usuarios regulares"

Tratar de usar algunas barreras técnicas no vale la pena, porque:

  • a sus usuarios habituales empeorando su experiencia de usuario
  • a bots regulares y bienvenidos (buscadores)
  • etc ...

HMTL simple : la forma más sencilla es analizar las páginas HTML simples, con una estructura bien definida y clases css. Por ejemplo, basta con inspeccionar el elemento con Firebug y usar los Xpaths correctos y / o la ruta CSS en mi raspador.

Podría generar la estructura HTML dinámicamente y también, puede generar dinámicamente los nombres de clase de CSS (y el propio CSS también) (por ejemplo, utilizando algunos nombres de clase aleatorios), pero

  • Desea presentar las informaciones a sus usuarios habituales de forma coherente.
  • por ejemplo, de nuevo, es suficiente analizar la estructura de la página una vez más para configurar el raspador.
  • y se puede hacer automáticamente mediante el análisis de algunos "contenidos ya conocidos"
    • una vez que alguien ya sabe (por un raspado anterior), por ejemplo:
    • Que contiene las informaciones sobre "phil collins".
    • basta con mostrar la página "phil collins" y (automáticamente) analizar cómo está estructurada la página "hoy" :)

No puedes cambiar la estructura de cada respuesta, porque tus usuarios habituales te odiarán. Además, esto causará más problemas para usted (mantenimiento) y no para el raspador. La ruta XPath o CSS es determinable por el script de raspado automáticamente del contenido conocido.

Ajax : un poco más difícil al principio, pero muchas veces acelera el proceso de raspado :) ¿por qué?

Al analizar las solicitudes y las respuestas, acabo de configurar mi propio servidor proxy (escrito en perl) y mi Firefox lo está utilizando. Por supuesto, porque es mi propio proxy, está completamente oculto, el servidor de destino lo ve como un navegador normal. (Por lo tanto, no X-Forwarded-for y tales encabezados). Sobre la base de los registros de proxy, en su mayoría es posible determinar la "lógica" de las solicitudes de ajax, por ejemplo, podría omitir la mayor parte del raspado de HTML, y simplemente usar las respuestas de ajax bien estructuradas (principalmente en formato JSON).

Entonces, el ajax no ayuda mucho ...

Algunas más complicadas son las páginas que usan muchas funciones de javascript empaquetadas .

Aquí es posible utilizar dos métodos básicos:

  • desempaquete y comprenda el JS y cree un raspador que siga la lógica de Javascript (la manera más difícil)
  • o (preferiblemente usando solo) - solo uso Mozilla con Mozrepl para raspar. Por ejemplo, el raspado real se realiza en un navegador habilitado para javascript con todas las funciones, que está programado para hacer clic en los elementos correctos y simplemente capturar las respuestas "descodificadas" directamente desde la ventana del navegador.

Tal raspado es lento (el raspado se realiza como en el navegador normal), pero es

  • Muy fácil de configurar y utilizar
  • y es casi imposible contrarrestarlo :)
  • y la "lentitud" es necesaria de todos modos para contrarrestar el "bloqueo de las mismas solicitudes rápidas basadas en IP"

El filtrado basado en User-Agent no ayuda en absoluto. Cualquier minero de datos serio lo ajustará a uno correcto en su raspador.

Requiere inicio de sesión - no ayuda. La forma más sencilla de vencerlo (sin ningún tipo de análisis y / o secuencias de comandos del protocolo de inicio de sesión) es iniciar sesión en el sitio como usuario habitual, usar Mozilla y después de ejecutar el raspador basado en Mozrepl ...

Recuerde, el inicio de sesión requiere ayuda para los bots anónimos, pero no ayuda contra alguien que desea eliminar sus datos. Simplemente se registra en su sitio como usuario regular.

Usar marcos no es muy efectivo también. Esto es usado por muchos servicios de películas en vivo y no es muy difícil de superar. Los marcos son simplemente otra página HTML / Javascript que se necesita para analizar ... Si los datos merecen la pena, el analizador de datos hará el análisis requerido.

La limitación basada en IP no es efectiva en absoluto: aquí hay demasiados servidores proxy públicos y también aquí está el TOR ... :) No ralentiza el raspado (para alguien que realmente quiere sus datos).

Muy difícil es raspar los datos ocultos en las imágenes. (por ejemplo, simplemente convirtiendo los datos en imágenes del lado del servidor). Emplear "tesseract" (OCR) ayuda muchas veces, pero honestamente, los datos deben valer la pena para el raspador. (que muchas veces no vale la pena).

Por otro lado, tus usuarios te odiarán por esto. Yo mismo (incluso cuando no estoy raspando) odio los sitios web que no permiten copiar el contenido de la página en el portapapeles (porque la información está en las imágenes o (los que son tontos) que intentan enlazar con la derecha, hacer clic en algún evento Javascript personalizado.) )

Los más difíciles son los sitios que utilizan applets de java o flash , y el applet utiliza las solicitudes https seguras internamente . Pero piénsalo dos veces: cuán felices serán los usuarios de tu iPhone ...;). Por lo tanto, actualmente muy pocos sitios los utilizan. Yo mismo, bloqueando todo el contenido de Flash en mi navegador (en sesiones de navegación regulares) y nunca utilizando sitios que dependan de Flash.

Sus hitos podrían ser ..., por lo que puede probar este método, recuerde que probablemente perderá algunos de sus usuarios. También recuerde, algunos archivos SWF son descompilables. ;)

Captcha (los buenos, como reCaptcha) ayuda mucho, pero tus usuarios te odiarán ... solo imagina cómo te amarán cuando necesiten resolver algunos captchas en todas las páginas que muestran información sobre los artistas musicales.

Probablemente no necesites continuar, ya te metiste en la imagen.

Ahora lo que debes hacer:

Recuerde: es casi imposible ocultar sus datos, si en el otro lado desea publicarlos (de manera amigable) para sus usuarios habituales.

Asi que,

  • Haz que tus datos sean fácilmente accesibles - por alguna API
    • Esto permite el fácil acceso a los datos.
    • por ejemplo, descargue su servidor de raspado - bueno para usted
  • configurar los derechos de uso correctos (por ejemplo, por ejemplo, debe citar la fuente)
  • recuerde, muchos datos no tienen derechos de autor y son difíciles de proteger
  • agregue algunos datos falsos (como ya lo hizo) y use herramientas legales
    • como ya han dicho otros, envíe una "carta de cese y desistimiento"
    • otras acciones legales (demandar y como) probablemente sean demasiado costosas y difíciles de ganar (especialmente contra sitios no estadounidenses)

Piense dos veces antes de tratar de usar algunas barreras técnicas.

En lugar de intentar bloquear a los mineros de datos, simplemente agregue más esfuerzos a la usabilidad de su sitio web. Tu usuario te amará. El tiempo (y la energía) invertido en barreras técnicas generalmente no vale la pena, mejor gastar el tiempo para hacer un sitio web aún mejor ...

Además, los ladrones de datos no son como los ladrones normales.

Si compra una alarma doméstica de bajo costo y agrega una advertencia "esta casa está conectada a la policía", muchos ladrones ni siquiera intentarán entrar. Porque un movimiento equivocado por él - y él va a la cárcel ...

Entonces, estás invirtiendo solo unos pocos dólares, pero el ladrón invierte y arriesga mucho.

Pero el ladrón de datos no tiene tales riesgos. todo lo contrario: si realiza un movimiento incorrecto (p. ej., si introduce algún ERROR como resultado de barreras técnicas), perderá a sus usuarios. Si el robot de raspado no funciona por primera vez, no pasa nada: el minero de datos solo intentará otro enfoque y / o depurará el script.

En este caso, necesita invertir mucho más y el raspador invertir mucho menos.

Solo piensa donde quieres invertir tu tiempo y energía ...

Ps: el inglés no es mi nativo, así que perdona mi inglés roto ...


Un enfoque rápido para esto sería establecer una trampa explosiva / bot.

  1. Cree una página que, si se abre una cierta cantidad de veces o incluso si se abre, recopilará cierta información como la IP y otras cosas (también puede considerar irregularidades o patrones, pero esta página no debería tener que abrirse en absoluto).

  2. Haga un enlace a esto en su página que está oculto con la visualización de CSS: ninguno; o izquierda: -9999px; posición: absoluta; trate de colocarlo en lugares que sea menos probable que se ignoren, como el lugar donde se encuentra su contenido y no su pie de página, ya que a veces los robots pueden optar por olvidarse de ciertas partes de una página.

  3. En su archivo robots.txt, establezca una gran cantidad de reglas de desautorización para las páginas en las que no desea que los robots amigos (LOL, ¡como si tuvieran caras felices!) Para recopilar información y establecer esta página como una de ellas.

  4. Ahora, si un bot amigable viene a través de él, debe ignorar esa página. Correcto, pero eso todavía no es lo suficientemente bueno. Haga un par más de estas páginas o, de alguna manera, reencamine una página para aceptar nombres diferentes. y luego coloque más reglas no permitidas en estas páginas de captura en su archivo robots.txt junto con las páginas que desea ignorar.

  5. Recopile la IP de estos bots o de cualquier persona que ingrese en estas páginas, no los elimine, sino que realice una función para mostrar texto noodled en su contenido, como números aleatorios, avisos de derechos de autor, cadenas de texto específicas, imágenes de miedo, básicamente cualquier cosa que impida su buen contenido También puede establecer enlaces que apuntan a una página que tardará una eternidad en cargar, es decir. en php puedes usar la función sleep (). Esto contrarrestará al rastreador si tiene algún tipo de detección para omitir las páginas que demoran mucho en cargarse, ya que algunos robots bien escritos están configurados para procesar X cantidad de enlaces a la vez.

  6. Si ha creado cadenas / oraciones de texto específicas, por qué no accede a su motor de búsqueda favorito y las busca, podría mostrarle dónde termina su contenido.

De todos modos, si piensas táctica y creativamente, este podría ser un buen punto de partida. Lo mejor que puedes hacer es aprender cómo funciona un bot.

También pensaría en estafar algunas identificaciones o la forma en que se muestran los atributos de la página:

<a class="someclass" href="../xyz/abc" rel="nofollow" title="sometitle">

eso cambia su forma cada vez que algunos bots pueden configurarse para buscar patrones específicos en sus páginas o elementos específicos.

<a title="sometitle" href="../xyz/abc" rel="nofollow" class="someclass"> id="p-12802" > id="p-00392"


Claro que es posible. Para un 100% de éxito, desconecte su sitio.

En realidad, puedes hacer algunas cosas que dificultan un poco el raspado. Google realiza comprobaciones en el navegador para asegurarse de que no es un robot que raspa los resultados de búsqueda (aunque esto, como la mayoría de los demás, puede ser falsificado).

Puede hacer cosas como requerir varios segundos entre la primera conexión a su sitio y los clics posteriores. No estoy seguro de cuál sería el momento ideal o exactamente cómo hacerlo, pero esa es otra idea.

Estoy seguro de que hay muchas otras personas que tienen mucha más experiencia, pero espero que esas ideas sean al menos algo útiles.


Desde una perspectiva tecnológica: simplemente modele lo que hace Google cuando los golpea con demasiadas consultas a la vez. Eso debería ponerle fin a mucho.

Desde una perspectiva legal: suena como si los datos que está publicando no son propiedad. Lo que significa que estás publicando nombres y estadísticas y otra información que no puede ser protegida por derechos de autor.

Si este es el caso, los raspadores no están violando los derechos de autor al redistribuir su información sobre el nombre del artista, etc. Sin embargo, pueden estar violando los derechos de autor cuando cargan su sitio en la memoria porque su sitio contiene elementos con derechos de autor (como el diseño, etc.).

Recomiendo leer sobre Facebook v. Power.com y ver los argumentos que usó Facebook para detener el raspado de la pantalla. Hay muchas formas legales en que puede intentar evitar que alguien raspe su sitio web. Pueden ser de gran alcance e imaginativos. A veces los tribunales compran los argumentos. A veces no lo hacen.

Pero, asumiendo que está publicando información de dominio público que no se puede copiar como nombres y estadísticas básicas ... debería dejarla ir en nombre de la libertad de expresión y los datos abiertos. Es decir, de qué se trata la web.


En lugar de incluir en la lista negra a los robots, tal vez debería incluirlos en la lista blanca. Si no quiere anular los resultados de su búsqueda para los primeros motores principales, puede incluir en la lista blanca las cadenas de usuario-agente, que generalmente son bien publicitadas. Los robots menos éticos tienden a forjar cadenas de usuario-agente de los navegadores web populares. Los primeros motores de búsqueda deberían estar conduciendo más del 95% de su tráfico.

La identificación de los propios bots debe ser bastante sencilla, utilizando las técnicas que otros carteles han sugerido.


Estoy de acuerdo con la mayoría de las publicaciones anteriores, y me gustaría agregar que cuanto más amigable para los motores de búsqueda sea su sitio, más fácil será el raspado. Podría intentar hacer un par de cosas que dificultan los raspadores, pero también podría afectar su capacidad de búsqueda ... Depende de qué tan bien quiera que su sitio se ubique en los motores de búsqueda, por supuesto.


Generar el HTML, CSS y JavaScript. Es más fácil escribir generadores que analizadores, por lo que podría generar cada página servida de manera diferente. Ya no puedes usar un caché o contenido estático.


Hay algunas cosas que puede hacer para tratar de evitar el raspado de la pantalla. Algunos no son muy efectivos, mientras que otros (un CAPTCHA) lo son, pero dificultan la usabilidad. También debe tener en cuenta que puede obstaculizar los raspadores de sitios legítimos, como los índices de motores de búsqueda.

Sin embargo, asumo que si no quieres que se raspe eso significa que tampoco quieres que los motores de búsqueda lo indexen.

Aquí hay algunas cosas que puedes probar:

  • Mostrar el texto en una imagen. Esto es bastante confiable, y es menos molesto para el usuario que un CAPTCHA, pero significa que no podrán cortar y pegar, y no se podrá escalar de manera agradable ni ser accesible.
  • Use un CAPTCHA y solicite que se complete antes de devolver la página. Este es un método confiable, pero también el mayor dolor para imponer a un usuario.
  • Solicite al usuario que se registre para obtener una cuenta antes de ver las páginas y confirme su dirección de correo electrónico. Esto será bastante efectivo, pero no totalmente: un raspador de pantalla puede configurar una cuenta y puede programar inteligentemente su script para que inicie sesión por ellos.
  • Si la cadena de agente de usuario del cliente está vacía, bloquee el acceso. Un script de raspado del sitio a menudo se programará de manera perezosa y no establecerá una cadena de agente de usuario, mientras que todos los navegadores web lo harán.
  • Puede configurar una lista negra de cadenas conocidas de agentes de usuario de raspador de pantalla a medida que las descubra. De nuevo, esto solo ayudará a los codificados perezosamente; un programador que sabe lo que está haciendo puede configurar una cadena de agente de usuario para hacerse pasar por un navegador web.
  • Cambiar la ruta de la URL a menudo. Cuando lo cambie, asegúrese de que el anterior siga funcionando, pero solo durante el tiempo que un usuario tenga abierto su navegador. Haz que sea difícil predecir cuál será la nueva ruta de la URL. Esto hará que sea difícil para los scripts capturarlo si su URL está codificada. Sería mejor hacer esto con algún tipo de guión.

Si tuviera que hacer esto, probablemente usaría una combinación de los últimos tres, porque minimizan los inconvenientes para los usuarios legítimos. Sin embargo, deberías aceptar que no podrás bloquear a todos de esta manera y, una vez que alguien descubra cómo evitarlo, podrá eliminarlo para siempre. Entonces podrías intentar bloquear sus direcciones IP a medida que las descubres, supongo.


He hecho un montón de raspado web y resumí algunas técnicas para detener los raspadores web en mi blog según lo que encuentro molesto.

Es un intercambio entre sus usuarios y raspadores. Si limita los IP, utiliza CAPTCHA, requiere inicio de sesión, etc., lo que hace que sea difícil para los raspadores. Pero esto también puede alejar a sus usuarios genuinos.


La mayoría ya se ha dicho, pero ¿ha considerado la protección de CloudFlare? Quiero decir esto:

Otras compañías probablemente también lo hagan, CloudFlare es la única que conozco.

Estoy bastante seguro de que eso complicaría su trabajo. También una vez se me prohibió automáticamente la IP durante 4 meses cuando intenté eliminar los datos de un sitio protegido por CloudFlare debido al límite de velocidad (utilicé el bucle de solicitud AJAX simple).


Los rascadores de pantalla funcionan procesando HTML. Y si están decididos a obtener sus datos, no hay mucho que pueda hacer técnicamente porque el globo ocular humano procesa cualquier cosa. Legalmente ya se ha señalado que puede que tengas algún recurso y esa sería mi recomendación.

Sin embargo, puede ocultar la parte crítica de sus datos utilizando una lógica de presentación no basada en HTML

  • Genera un archivo Flash para cada artista / álbum, etc.
  • Generar una imagen para cada contenido de artista. Tal vez solo una imagen para el nombre del artista, etc. sería suficiente. Haga esto representando el texto en un archivo JPEG / PNG en el servidor y vinculándolo a esa imagen.

Tenga en cuenta que esto probablemente afectaría sus rankings de búsqueda.


No se puede detener el raspado de pantalla normal. Para bien o para mal, es la naturaleza de la web.

Usted puede hacerlo para que nadie pueda acceder a ciertas cosas (incluyendo archivos de música) a no ser que está conectado como usuario registrado. No es demasiado difícil hacerlo en Apache . Supongo que no sería demasiado difícil hacerlo también en IIS.


Poner su contenido detrás de un captcha significaría que a los robots les resultaría difícil acceder a su contenido. Sin embargo, los seres humanos tendrían inconvenientes por lo que puede ser indeseable.


Si desea ver un gran ejemplo, visite http://www.bkstr.com/ . Usan el algoritmo aj / s para establecer una cookie, luego recargan la página para que pueda usar la cookie para validar que la solicitud se está ejecutando dentro de un navegador. Una aplicación de escritorio creada para raspar definitivamente podría superar esto, pero detendría la mayoría del raspado de tipo cURL.


Una forma sería servir el contenido como atributos XML, cadenas codificadas en URL, texto preformateado con JSON codificado en HTML o URI de datos, luego transformarlo en HTML en el cliente. Aquí hay algunos sitios que hacen esto:

  • Skechers : XML

    <document filename="" height="" width="" title="SKECHERS" linkType="" linkUrl="" imageMap="" href=&quot;http://www.bobsfromskechers.com&quot; alt=&quot;BOBS from Skechers&quot; title=&quot;BOBS from Skechers&quot; />

  • Chrome Web Store : JSON

    <script type="text/javascript" src="https://apis.google.com/js/plusone.js">{"lang": "en", "parsetags": "explicit"}</script>

  • Bing News : URL de datos

    <script type="text/javascript"> //<![CDATA[ (function() { var x;x=_ge(''emb7''); if(x) { x.src=''data:image/jpeg;base64,/*...*/''; } }() )

  • Protopage : URL codificado cadenas

    unescape(''Rolling%20Stone%20%3a%20Rock%20and%20Roll%20Daily'')

  • TiddlyWiki : Entidades HTML + JSON preformateado

    <pre> {&quot;tiddlers&quot;: { &quot;GettingStarted&quot;: { &quot;title&quot;: &quot;GettingStarted&quot;, &quot;text&quot;: &quot;Welcome to TiddlyWiki, } } } </pre>

  • Amazon : Lazy Loading

    amzn.copilot.jQuery=i;amzn.copilot.jQuery(document).ready(function(){d(b);f(c,function() {amzn.copilot.setup({serviceEndPoint:h.vipUrl,isContinuedSession:true})})})},f=function(i,h){var j=document.createElement("script");j.type="text/javascript";j.src=i;j.async=true;j.onload=h;a.appendChild(j)},d=function(h){var i=document.createElement("link");i.type="text/css";i.rel="stylesheet";i.href=h;a.appendChild(i)}})(); amzn.copilot.checkCoPilotSession({jsUrl : ''http://z-ecx.images-amazon.com/images/G/01/browser-scripts/cs-copilot-customer-js/cs-copilot-customer-js-min-1875890922._V1_.js'', cssUrl : ''http://z-ecx.images-amazon.com/images/G/01/browser-scripts/cs-copilot-customer-css/cs-copilot-customer-css-min-2367001420._V1_.css'', vipUrl : ''https://copilot.amazon.com''

  • XMLCalabash : XML con espacio de nombre + tipo MIME personalizado + extensión de archivo personalizada

    <p:declare-step type="pxp:zip"> <p:input port="source" sequence="true" primary="true"/> <p:input port="manifest"/> <p:output port="result"/> <p:option name="href" required="true" cx:type="xsd:anyURI"/> <p:option name="compression-method" cx:type="stored|deflated"/> <p:option name="compression-level" cx:type="smallest|fastest|default|huffman|none"/> <p:option name="command" select="''update''" cx:type="update|freshen|create|delete"/> </p:declare-step>

Si ve la fuente en cualquiera de los puntos anteriores, verá que el raspado simplemente devolverá los metadatos y la navegación.