Geonode logo
Geonode Team

Geonode Team

Actualizado: 7 de octubre de 2026

Publicado: 2 de septiembre de 2026

Las trampas «honeypot» en el web scraping: una guía completa

Una trampa «honeypot» es contenido colocado en una página con el objetivo específico de que solo un cliente automatizado interactúe con él. Un usuario humano nunca lo ve; un rastreador poco experimentado lo sigue de inmediato. Pueden ir desde un enlace invisible en el pie de página hasta un laberinto infinito de páginas generadas, diseñadas para agotar el presupuesto informático de un rastreador durante días. Esta guía aborda los seis tipos con los que te encontrarás realmente, cómo evitarlos y —dado que la misma información sirve a ambas partes— cómo se implementan.

Nuestra postura, tal y como la hemos declarado: somos Geonode y vendemos proxies, por lo que, por interés comercial, nos situamos del lado de los rastreadores en esta cuestión. La verdad es que, en la mayoría de los casos, evitar los honeypots consiste simplemente en rastrear correctamente, y la medida más eficaz es aquella que no cuesta nada: respetar robots.txt. Una gran parte de las trampas se colocan en rutas que el sitio ya ha pedido a los rastreadores que no visiten, por lo que un rastreador que cumpla con las normas nunca se encuentra con ellas. El resto se evita renderizando el CSS, no enviando formularios a los que no se te ha invitado y limitando el alcance del rastreo. Nada de eso requiere comprarnos nada, y un rastreador que necesite proxies para sobrevivir a un honeypot es un rastreador que ya ha cometido un error más fundamental.

¿Qué es una trampa «honeypot»?

La definición es más bien conductual que técnica: se trata de contenido con el que solo interactuará un cliente automatizado, colocado allí para que dicha interacción identifique al cliente como automatizado.

La lógica es sencilla y bastante difícil de rebatir. Un visitante humano utiliza un navegador, que aplica CSS, representa el diseño y le muestra lo que es visible. Un rastreador que analiza el HTML ve todo lo que hay en el código de la misma manera, incluyendo un enlace diseñado para ser invisible, un campo de formulario oculto fuera de la pantalla y una ruta a la que nadie enlaza desde ningún lugar donde una persona pudiera mirar.

Interactuar con cualquiera de ellos es una señal clara. No es concluyente, ya que las herramientas de accesibilidad y los navegadores en modo texto también se comportan de forma diferente, pero es lo suficientemente clara como para que los sitios web actúen en consecuencia.

Las consecuencias varían según el sitio web. Algunos registran el acceso y lo ignoran. Otros limitan la frecuencia de acceso. Otros bloquean la dirección. Otros sirven contenido degradado de forma indefinida, lo cual es el peor resultado porque parece un éxito. Y otros ahora hacen algo más elaborado, como se explica a continuación.

Los seis tipos que encontrarás

1. Enlaces invisibles. Un enlace con el estilo display: none, visibility: hidden, dimensiones nulas, un color que coincide con el fondo o situado fuera de la pantalla. Presente en el código HTML, pero ausente en la página mostrada.

<a href="/trap/do-not-follow" style="display:none">Products</a>
<a href="/hidden" class="visually-hidden">Sitemap</a>

La forma más habitual y la más fácil de evitar.

2. Rutas no permitidas. URL que solo aparecen en robots.txt bajo una directiva Disallow, sin enlace desde ningún sitio. La única forma de encontrarlas es leer el archivo de exclusión y luego ignorarlas, lo que hace que una solicitud a esa ruta sea una señal casi perfecta de incumplimiento deliberado.

3. Campos de formulario ocultos. Un campo oculto con CSS que un usuario humano nunca rellena. Cualquier envío que contenga un valor para ese campo procede de algo que analiza el HTML. Es habitual en formularios de comentarios y procesos de registro, donde constituye una medida antispam legítima y eficaz.

4. Espacios infinitos de URL. No siempre es intencionado, pero resulta igualmente perjudicial en cualquier caso. Un calendario con un enlace a «el mes que viene» genera URL ilimitadas. La navegación por facetas en un catálogo extenso produce explosiones combinatorias. Un rastreador sin límites de profundidad ni de patrones seguirá estas rutas hasta que algo lo detenga.

5. Trampas de tiempo. Contenido que aparece solo tras un retraso, o formularios que rechazan envíos completados más rápido de lo que un ser humano podría hacer. Estos atrapan a los clientes que actúan al instante, en lugar de a los que analizan el código.

6. Contenido contaminado o generado. La categoría más reciente, y lo suficientemente importante como para merecer su propia sección.

«Tarpits» de IA y laberintos generados

Se trata de un avance verdaderamente novedoso, y la razón por la que este tema ha cambiado de forma en los últimos dos años.

El AI Labyrinth de Cloudflare es el ejemplo más extendido. Cloudflare lo describe como «un nuevo enfoque de mitigación que utiliza contenido generado por IA para ralentizar, confundir y agotar los recursos de los rastreadores de IA».

El mecanismo: Workers AI genera diversas páginas HTML sobre temas variados, que se almacenan en R2 para una entrega rápida, y estas páginas señuelo están enlazadas desde páginas reales a través de enlaces ocultos que son «invisibles para los visitantes humanos, pero accesibles para los rastreadores de bots».

La explicación de Cloudflare sobre por qué funciona es la descripción más acertada del principio del «honeypot» que se ha escrito hasta la fecha:

Ningún ser humano real se adentraría cuatro enlaces más allá en un laberinto de tonterías generadas por IA.

Lo fundamental es que el contenido que se muestra es «real y está relacionado con hechos científicos, pero no es relevante ni exclusivo del sitio que se está rastreando», por lo que un rastreador no puede detectarlo comprobando si el texto es coherente. Es coherente. Simplemente trata sobre otra cosa.

Está disponible en todos los planes de Cloudflare, incluido el nivel gratuito, y para activarlo basta con pulsar un único interruptor en la sección de gestión de bots, «sin necesidad de configuración adicional».

Hay herramientas independientes que funcionan según el mismo principio. Nepenthes genera un laberinto infinito de páginas sin enlaces de salida. Iocaine funciona como un proxy inverso y da un paso adicional que vale la pena comprender: contamina las URL que sirve, de modo que un rastreador que vuelva más tarde disfrazado de navegador puede identificarse por el hecho de que su cola de solicitudes contiene únicamente URL que el «tarpit» ha proporcionado alguna vez. Se trata de un marcador persistente, en lugar de momentáneo.

Esto tiene dos implicaciones para cualquiera que utilice un rastreador.

La detección basada en la calidad del contenido no funciona. Las páginas son coherentes y objetivas. Lo que las identifica es que son irrelevantes para el sitio, no están enlazadas desde ningún lugar donde una persona pudiera encontrarlas y su número es ilimitado.

Limitar el rastreo es ahora esencial, y no solo una cuestión de orden. Un rastreador sin límites de profundidad, sin límites de número de páginas y sin detección de duplicados puede consumir días de recursos informáticos y gigabytes de ancho de banda medido en datos sin sentido generados, sin recibir ningún error en ningún momento. Con una tarificación por gigabyte, eso supone una factura real por nada.

Cómo evitarlas sin recurrir a trucos

Todas las medidas que aquí se describen son cosas que un rastreador bien diseñado debería hacer de todos modos.

Respeta el protocolo «robots.txt». Esto por sí solo evita una gran parte de las trampas, ya que las rutas no permitidas son aquellas que los sitios web indican como tales. Ahora es un estándar — RFC 9309 — en el que la coincidencia se basa en la especificidad en lugar del orden, y ya hemos explicado cómo leerlo correctamente en cómo leer un archivo robots.txt.

Comprueba la visibilidad calculada antes de seguir un enlace. En un navegador sin interfaz gráfica, esto es sencillo:

const links = await page.$$eval('a[href]', els =>
  els.filter(el => {
    const s = getComputedStyle(el);
    const r = el.getBoundingClientRect();
    return s.display !== 'none' && s.visibility !== 'hidden' &&
           parseFloat(s.opacity) > 0 && r.width > 1 && r.height > 1;
  }).map(el => el.href)
);

Ten en cuenta que se utiliza getComputedStyle en lugar de leer el atributo style en línea: un enlace oculto por una regla de hoja de estilo no tiene ningún estilo en línea que inspeccionar.

Sin navegador, aplica heurísticas: omite los enlaces cuyo estilo en línea contenga display:none o visibility:hidden, omite el texto de anclaje vacío, omite nombres de clase como hidden, visually-hidden y sr-only, y desconfía de los enlaces cuyo atributo href no aparezca en ninguna parte del texto visible.

Limita el rastreo de forma absoluta. Una profundidad máxima, un número máximo de páginas y un presupuesto por dominio. No como plan de contingencia, sino como límite estricto. Esta es la única defensa contra los espacios infinitos que funciona independientemente de cómo se generen.

Detecta las repeticiones. El hash de contenido detecta páginas generadas que difieren superficialmente. El análisis de patrones de URL detecta rutas que crecen sin límite. Si un directorio ha generado doscientas páginas y no da señales de detenerse, detente y examínalo.

No envíes formularios a los que no hayas sido invitado. Las trampas de campos ocultos solo atrapan a los clientes que rellenan todos los campos de entrada que encuentran.

Límita la frecuencia y controla el ritmo. Un ritmo similar al humano evita las trampas de temporización y reduce al mismo tiempo cualquier otra señal.

Identifícate. Un rastreador con un nombre y una URL de contacto es uno que el operador puede decidir permitir. No se trata exactamente de una medida para evitar trampas, pero cambia lo que ocurre después de que caigas en una.

Cómo detectar una trampa en el entorno real

Señales que indican que te has metido en una, ordenadas más o menos según la rapidez con la que aparecen.

El recuento de páginas no converge. La cola sigue creciendo en lugar de reducirse, lo cual es la primera señal de alerta y la más fácil de detectar.

El contenido es coherente pero irrelevante. Páginas que se leen bien pero que no tienen nada que ver con el tema real del sitio. Esta es la característica distintiva del «laberinto de IA».

Las URL siguen un patrón generado. Rutas largas, estructuras de segmentos inusuales y ausencia de repetición de las URL que cabría esperar en un sitio web real.

No hay enlaces entrantes desde ninguna fuente fiable. Las páginas enlazan entre sí, pero no hay enlaces externos que apunten a ellas.

Los tiempos de respuesta son sospechosamente uniformes. El contenido generado se sirve desde una caché; las páginas reales varían.

La calidad de tus datos disminuye sin que cambie tu tasa de error. La señal más clara de una fase avanzada, y la razón por la que es importante que todo devuelva un 200.

El control práctico consiste en una comprobación continua, más que en una revisión manual: si la proporción entre las nuevas URL descubiertas y las páginas recuperadas no disminuye a lo largo de un rastreo, algo está generando URL más rápido de lo que puedes consumirlas, y ningún rastreo de un sitio web finito se comporta así.

Para los propietarios de sitios web: cómo implementarlos

La otra perspectiva, brevemente, ya que el mismo razonamiento se aplica a ambos casos.

Los campos de formulario ocultos son la mejor opción. Son muy fáciles de añadir, eficaces contra el envío automatizado de formularios y no afectan a los usuarios reales. Dale al campo un nombre inocuo, ocúltalo con CSS en una hoja de estilo en lugar de hacerlo en línea, y rechaza cualquier envío que lo rellene.

Los enlaces ocultos detectan a los rastreadores que no muestran el contenido. Es eficaz y merece la pena combinarlo con la directiva «robots.txt» para que los rastreadores que cumplen las normas no queden atrapados. Penalizar a un rastreador que se comporta correctamente por una trampa que no has excluido es un problema que te has buscado tú mismo.

Los «tarpits» gestionados ahora se pueden activar o desactivar. El de Cloudflare está disponible en todos los planes, incluido el gratuito, y no requiere configuración, lo que lo pone al alcance de cualquier sitio web.

La accesibilidad es la verdadera limitación. Los lectores de pantalla y los navegadores de texto no aplican estilos visuales de la misma forma que lo hace el navegador de un usuario vidente. Una trampa que utilice «display: none» suele ser segura porque la tecnología de asistencia la respeta; una trampa que utilice posicionamiento fuera de pantalla o texto transparente puede ser anunciada a un usuario de lector de pantalla, quien, al seguirla, acaba siendo bloqueado. Si implementas estas técnicas, pruébalas con un lector de pantalla.

Y decide qué es lo que realmente quieres. Los motores de búsqueda, los socios de comparación de precios, las herramientas de accesibilidad, los servicios de monitorización y los agentes de IA envían tráfico automatizado, y parte de él te interesa. Una trampa general lo captura todo. Excluir los rastreadores de confianza mediante el agente de usuario y colocar trampas solo en las rutas que robots.txt ya prohíbe es la configuración que captura el tráfico que te molesta y deja pasar el resto.

Cuándo dejar de hacerlo en lugar de adaptarse

Una decisión que merece la pena dejar clara, ya que somos un proveedor cuyo producto consiste precisamente en la típica «adaptación».

Si un sitio web ha implementado medidas de protección, está enviando un mensaje claro. Si a ello le sumamos las restricciones de robots.txt y las condiciones que prohíben el acceso automatizado, el mensaje no deja lugar a dudas, y seguir intentando sortear estas medidas es una decisión cuyas consecuencias van más allá de lo técnico.

Las alternativas suelen ser mejores y casi siempre más económicas:

Pregunta. Un correo electrónico en el que expliques quién eres y qué necesitas resuelve esto con más frecuencia de lo que la gente espera, y un feed de un socio elimina el problema por completo.

Comprueba si hay una API oficial. Muchos sitios web que aplican medidas de protección agresivas también publican una, precisamente para que los usuarios legítimos tengan a dónde acudir.

Comprueba si los datos existen en otro lugar. Conjuntos de datos públicos, archivos, documentos oficiales, proveedores con licencia.

Reduce lo que necesitas. Gran parte del scraping recopila mucha más información de la que requiere la consulta. Una solicitud más reducida es más fácil de satisfacer por medios legítimos.

Y la cuestión práctica: los «tarpits» están diseñados para que te cuesten más a ti que al propio sitio web. Cloudflare genera las páginas una vez y las sirve desde el almacenamiento; tú pagas por gigabyte, por hora de computación y en tiempo de ingeniería. Esa asimetría es deliberada y no mejora con el esfuerzo.

Preguntas frecuentes

¿Qué es una trampa «honeypot» en el web scraping?

Contenido colocado en una página con el que solo interactúa un cliente automatizado: un enlace invisible, un campo de formulario oculto o una ruta a la que no llegaría un usuario humano. Al interactuar con ello, el cliente queda identificado como un bot, y los sitios web responden registrándolo, limitando su frecuencia de acceso o bloqueándolo.

¿Cómo evito las trampas «honeypot»?

Respeta la etiqueta robots.txt, ya que muchas trampas se encuentran en rutas no permitidas. Comprueba la visibilidad calculada antes de seguir enlaces, en lugar de analizar el código HTML sin procesar. No rellenes campos de formulario que no se te hayan mostrado. Y limita tu rastreo con límites estrictos de profundidad y número de páginas, que es la única defensa contra los espacios infinitos.

¿Qué es un «tarpit» de IA?

Un sistema que ofrece a los rastreadores automatizados un laberinto interminable de páginas generadas para agotar sus recursos. El «AI Labyrinth» de Cloudflare genera contenido coherente y factual que, sencillamente, no tiene nada que ver con el sitio web, enlazado de forma invisible desde páginas reales. Está disponible en todos los planes, incluido el gratuito, con solo activar un interruptor.

¿Puedo detectar un «honeypot» antes de caer en él?

En parte. Cargar la página y comprobar los estilos calculados permite detectar enlaces ocultos de forma fiable. Los laberintos generados son más difíciles de detectar, ya que el contenido es coherente: las señales son una cola que no deja de crecer, contenido irrelevante para el sitio y patrones de URL que no se repiten. Limitar el rastreo es la defensa que funciona en cualquier caso.

¿Los enlaces ocultos perjudican al SEO o a la accesibilidad?

Históricamente, los motores de búsqueda han considerado el texto oculto como una práctica manipuladora, por lo que las trampas suelen ir acompañadas de una directiva «disallow» en el archivo robots.txt. La accesibilidad es la mayor preocupación: la norma display: none es respetada por la tecnología de asistencia, pero el texto fuera de pantalla o transparente puede ser anunciado a un usuario de lector de pantalla, que luego lo seguirá.

¿Qué ocurre si mi rastreador se topa con un «honeypot»?

Depende. Algunos sitios lo registran, otros limitan la frecuencia de acceso, otros bloquean la dirección y otros sirven contenido degradado de forma indefinida —lo cual es el peor de los casos, porque todo devuelve un código 200 y tus datos se degradan silenciosamente—. Los «tarpits» hacen algo diferente: siguen sirviéndote contenido, para siempre.

¿Son legales las trampas «honeypot»?

Colocarlas en tu propio sitio web es totalmente legal: tú decides qué contenido servir. Lo que un sitio web haga con la identificación resultante se rige por sus condiciones de uso. Desde el punto de vista del rastreador, activar una trampa no es en sí mismo ilegal; puede infringir las condiciones de servicio, lo cual es una cuestión contractual.

¿Cómo evito que mi rastreador malgaste dinero en un «tarpit»?

Límites estrictos en cuanto a la profundidad y el número de páginas por dominio, el hash del contenido para detectar páginas casi duplicadas y una alerta cuando la proporción entre las URL recién descubiertas y las páginas recuperadas no disminuye. Sin ello, un rastreador con límite de uso puede dedicar días y gigabytes a páginas generadas mientras muestra una tasa de éxito perfecta.

Conclusión

Las trampas «honeypot» se basan en una premisa: que un rastreador vea el código fuente, mientras que un usuario vea la página tal y como se muestra. Todo lo demás son variaciones: un enlace invisible, un campo oculto, una ruta que solo menciona robots.txt o un laberinto sin fin.

Todas estas defensas son cosas que un rastreador bien diseñado debería hacer de todos modos. Respeta robots.txt, porque ahí es donde se esconden muchas trampas y cumplir con ello no cuesta nada. Comprueba la visibilidad calculada en lugar de analizar el HTML sin procesar. No toques los formularios a menos que se te hayan mostrado. Y limita tu rastreo con límites estrictos, que es la única medida que te protege contra los laberintos generados cuyo contenido es deliberadamente indistinguible del texto real.

Esta última categoría ha cambiado la economía del asunto. Un «tarpit» gestionado genera sus páginas una sola vez y las sirve desde la caché; un rastreador paga por gigabyte y por hora de computación, y recibe un código de estado 200 cada vez. La asimetría es la clave: ahora está al alcance de cualquier sitio web con solo pulsar un botón, y no cede ante el esfuerzo.

Lo cual hace que merezca la pena tomarse en serio esta opción poco glamurosa. Un sitio web que ha desplegado trampas te ha dicho algo, y solicitar un feed, comprobar si hay una API o encontrar los datos en otro lugar suele ser más rápido, más barato y más duradero que intentar burlar a alguien que se ha organizado para que pierdas.