Documentación/Sitios web con protección contra bots

Sitios web con protección contra bots

Si tu web usa protección contra bots, como Cloudflare o Vercel Firewall, puede impedir que Asktopus lea tus páginas. Con una cabecera secreta, Asktopus puede pasar sin que tengas que desactivar la protección.

Por qué la protección contra bots bloquea a Asktopus

La protección contra bots examina cada petición y le pide una verificación a todo lo que no se comporte como una persona en un navegador normal. Asktopus lee tu web de forma automática, así que recibe esa verificación en lugar de tu contenido: una página como “Just a moment...” de Cloudflare o el Vercel Security Checkpoint. De esas páginas no hay nada que aprender. Cuando Asktopus lee tus páginas y solo recibe páginas de verificación, no las añade a la base de conocimiento. La pestaña Conocimiento te avisa de que la protección contra bots de tu web ha bloqueado a Asktopus y enlaza a la solución que explicamos más abajo.

Por qué no basta con una lista de IP permitidas

Asktopus descarga tu sitemap y tu robots.txt desde su propio servidor, pero lee las páginas en un navegador en la nube, en la red de Cloudflare, para que las páginas creadas con JavaScript salgan bien. Esas peticiones no vienen de una dirección IP fija, y las direcciones de las que sí vienen las comparten todos los que usan el mismo servicio. Si las permitieras, dejarías pasar a mucho más que a Asktopus. Una cabecera secreta es precisa: solo pasan las peticiones que llevan tu valor.

Cómo funciona la cabecera

Tú eliges un nombre de cabecera y un valor secreto. A partir de ahí, Asktopus añade la cabecera a todas las peticiones que hace a tu web cuando la escanea y la lee:

  • Las descargas del sitemap y de robots.txt desde el servidor de Asktopus.
  • La lectura de las páginas en el navegador en la nube.

Solo tu dominio — La cabecera solo se envía al dominio de tu web y a sus subdominios, por ejemplo example.com, www.example.com y blog.example.com. Nunca se envía a otros dominios, ni siquiera cuando una página redirige a otro sitio.

Nada de otros dominios — Mientras haya una cabecera configurada, el navegador en la nube no carga nada de otros dominios al leer tus páginas. Los scripts de analítica y de publicidad y los widgets de terceros quedan bloqueados, así que tu secreto no les puede llegar. Si tu web carga su contenido real desde otro dominio, puede que esas páginas salgan incompletas mientras haya una cabecera configurada.

No se vuelve a mostrar — Una vez guardado, el valor no se vuelve a mostrar completo. El panel muestra los cuatro últimos caracteres de los valores de 12 caracteres o más.

Configúralo en Asktopus

  1. Abre tu sitio web en el panel y ve a Ajustes › Protección contra bots.
  2. Escribe un nombre de cabecera, por ejemplo X-Asktopus-Verify.
  3. Haz clic en Generar para crear un secreto aleatorio de 32 caracteres, o pega el tuyo. Cópialo ahora: lo necesitas para la regla de tu firewall y no se vuelve a mostrar completo.
  4. Haz clic en Añadir cabecera.
  5. Añade a tu firewall una regla que deje pasar las peticiones con esta cabecera y este valor. Las guías por plataforma de más abajo explican cómo.
  6. Ve a la pestaña Conocimiento y haz clic en Buscar páginas nuevas y después en Actualizar conocimiento. Las cabeceras nuevas o modificadas se aplican a partir del siguiente escaneo o actualización.

Puedes añadir hasta 5 cabeceras. Los nombres pueden tener hasta 64 caracteres y usar los caracteres habituales en los nombres de cabecera; los valores, hasta 1.024 caracteres ASCII imprimibles. Para cambiar un valor, vuelve a añadir el mismo nombre y sustituirá al anterior. Con Quitar se borra una cabecera. Los propietarios y los editores pueden gestionar las cabeceras, en todos los planes.

Algunos nombres no se pueden usar porque los controla el navegador o la red: Host, Content-Length, Content-Type, Content-Encoding, Transfer-Encoding, Connection, Keep-Alive, Upgrade, TE, Trailer, Expect, Cookie, User-Agent, Accept-Encoding y cualquier nombre que empiece por cf-, sec- o proxy-.

Cloudflare

Super Bot Fight Mode (planes Pro, Business y Enterprise)

Crea una regla personalizada que omita Super Bot Fight Mode para las peticiones que lleven tu cabecera:

  1. En el panel de Cloudflare, abre tu dominio y ve a Security › Security rules.
  2. Selecciona Create rule › Custom rules y ponle un nombre a la regla, por ejemplo Allow Asktopus.
  3. En When incoming requests match, selecciona Edit expression e introduce la expresión de abajo con tu propio nombre de cabecera y tu secreto.
  4. En Then take action, elige Skip y selecciona All Super Bot Fight Mode rules.
  5. Selecciona Deploy.
any(http.request.headers["x-asktopus-verify"][*] == "tu-secreto")

Escribe el nombre de la cabecera en minúsculas en la expresión, porque Cloudflare guarda los nombres de cabecera en minúsculas. El valor tiene que coincidir exactamente.

Las reglas personalizadas se ejecutan en orden, y una regla que bloquea o pide una verificación detiene la evaluación. Coloca la regla de omisión por encima de cualquier regla tuya que pueda bloquear a Asktopus. Si las reglas de limitación de peticiones (rate limiting rules) o las reglas administradas (managed rules) también frenan a Asktopus, puedes seleccionarlas en la misma regla Skip.

Bot Fight Mode (plan Free)

Bot Fight Mode no se puede omitir. No funciona dentro del motor de reglas de Cloudflare, así que las reglas Skip, Bypass y Allow no le afectan y una cabecera no sirve de nada. Si bloquea a Asktopus, tienes dos opciones: desactivar Bot Fight Mode (en Security › Settings, filtrando por Bot traffic) o pasarte al plan Pro y usar Super Bot Fight Mode con la regla de omisión de arriba.

Vercel Firewall

El conjunto de reglas Bot Protection de Vercel muestra el Vercel Security Checkpoint al tráfico que probablemente no viene de un navegador. Una regla personalizada con la acción Bypass deja pasar las peticiones que llevan tu cabecera. Las reglas personalizadas se ejecutan antes que los conjuntos de reglas administrados, como Bot Protection.

  1. En el panel de Vercel, abre el proyecto y selecciona Firewall en la barra lateral.
  2. Selecciona ⋯ › Configure, luego Add New… › Rule y ponle un nombre a la regla.
  3. Añade una condición If sobre la cabecera de la petición: tu nombre de cabecera, comparado de forma exacta con tu secreto.
  4. Pon Then en Bypass y selecciona Save Rule.
  5. Selecciona Review Changes y después Publish.

Coloca la regla en primer lugar entre tus reglas personalizadas, porque un bypass solo omite las reglas que vienen después. Bypass no cubre las protecciones de sistema de Vercel, como la mitigación de DDoS.

Otros firewalls

Cualquier firewall o proxy que pueda comprobar una cabecera de la petición admite el mismo método: crea una regla que compruebe el nombre de tu cabecera y el secreto exacto, y haz que se salte la comprobación de bots.

  • AWS WAF — añade una regla con una coincidencia de cadena sobre tu cabecera, configurada como Exactly matches string, con la acción Allow. Allow termina la evaluación, así que coloca la regla antes de tu grupo de reglas Bot Control.
  • Tu propio servidor — en nginx, Apache o el código de tu aplicación, sáltate la comprobación de bots cuando la cabecera lleve tu secreto.

Guarda bien el secreto

Trata el valor como una contraseña. Usa un valor largo y aleatorio (Generar crea uno), no lo reutilices en ningún otro sitio y no lo pongas en código público. La cabecera solo sirve para que Asktopus pase la comprobación de bots, así que mantén el resto de tu protección, como los límites de peticiones. Para cambiar el secreto, haz que la regla de tu firewall acepte tanto el valor antiguo como el nuevo, añade el valor nuevo en Asktopus con el mismo nombre de cabecera y, por último, quita el valor antiguo de la regla.

Comprueba que funciona

Después de la actualización, la pestaña Conocimiento debería mostrar tus páginas y ningún aviso de protección contra bots. El registro de eventos de tu firewall muestra qué regla gestionó cada petición: en Cloudflare, en Security › Analytics › Events, y en Vercel, en la página de resumen de Firewall, donde puedes agrupar el tráfico por tu regla personalizada. Si las peticiones con la cabecera siguen recibiendo una verificación, comprueba que el nombre y el valor coinciden exactamente y que la regla está por encima de cualquier regla que bloquee.