Bloggartiklarna publiceras på spanska och katalanska.

Aprendiendo IA

¿Es GPTBot o un impostor? Compruébalo en tus registros

Cualquiera puede llamar a tu web diciendo que es GPTBot, ClaudeBot o el robot de Google: el nombre lo escribe quien hace la petición. En el registro de acceso de twinforce.es, 5.156 de las 36.551 peticiones que en un mes dijeron ser uno de nueve robots de IA o de búsqueda llegaron desde fuera de las direcciones IP que publica cada empresa, y seis de cada diez buscaban ficheros de credenciales. Así se comprueba con las listas oficiales y un script de 32 líneas, y así se les cierra la puerta.

En un control de pasaportes, un agente de fronteras con una tarjeta de OpenAI mira desconcertado el pasaporte que le tiende, nervioso, un robot con forma de araña que lleva colgada su propia tarjeta de OpenAI: el sello rojo del documento está tachado. Detrás espera su turno otro robot araña con la misma tarjeta.
📷 Imagen generada con IA

En resumen

  • Del 30 de septiembre al 30 de octubre de 2026, 36.551 peticiones al servidor de twinforce.es dijeron ser uno de nueve robots de OpenAI, Anthropic, Google o Perplexity; 5.156, el 14,1 %, llegaron desde IP que esas empresas no publican como suyas.
  • 38 direcciones se hicieron pasar por los nueve robots, cambiando de nombre de una petición a otra, y suman 4.672 de las peticiones falsas, el 90,6 %.
  • 3.127 peticiones falsas, el 60,6 %, pedían ficheros de credenciales o configuración como `.env` o `.aws/credentials`, rutas de WordPress o paneles de administración; el servidor respondió 404 en 4.396 de las 5.156.
  • Claude-SearchBot y Perplexity-User no hicieron ni una visita auténtica en el mes: todo lo que llegó con esos nombres venía de fuera de sus rangos oficiales.
  • Para el robot de Google, aceptar cualquier nombre acabado en googleusercontent.com habría dado por buenas 775 peticiones de máquinas de Google Cloud que alquila cualquiera.

Cada visita deja una línea en el registro

Cuando alguien abre una página de tu web, el servidor apunta quién ha llamado, cuándo y qué ha pedido. Lo mismo ocurre cuando llama un robot: los de OpenAI, la empresa de ChatGPT; los de Anthropic, la empresa de Claude; los de Google, y los de Perplexity, la empresa estadounidense del buscador con IA del mismo nombre. Todos dejan su línea en ese fichero.

En Apache, el servidor web de la Apache Software Foundation, cada sitio tiene su `access_log`. En los servidores con panel de control, cada dominio suele tener el suyo en la carpeta de registros del sistema.

Para esta práctica se leyó, sin modificarlo, el registro de twinforce.es desde el 30 de septiembre de 2026 a las 0.08 hasta el 30 de octubre a las 8.23, en hora UTC: un mes. La pregunta era sencilla: de las visitas que dicen venir de un robot de IA o del buscador de Google, cuántas vienen de verdad de esas empresas.

El nombre lo escribe quien llama

En el vestíbulo de un hotel, un detective con sombrero y gabardina examina con una lupa a una pequeña araña mecánica que lleva un bolígrafo: bajo la lente se ven un sello oficial y, colgada de la araña, una etiqueta escrita a mano con el nombre de OpenAI, mientras la gente pasa sin fijarse.
📷 Imagen generada con IA

Cada robot se presenta con su nombre en el user-agent. OpenAI da como ejemplo el de GPTBot: «Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot», y avisa de que el número de versión puede cambiar.

El problema es que ese texto lo escribe el programa que hace la petición. Cualquiera puede copiar la cadena de GPTBot en su propio programa y llamar a tu web con ella, y el registro la apuntará igual que la auténtica.

Por eso las cuatro empresas publican, además del nombre, la lista de direcciones IP desde las que salen sus robots. Comprobar un robot es cruzar las dos cosas: el nombre que dice y la dirección desde la que llega.

En el formato combinado de Apache, el habitual, las dos están en cada línea del registro: la IP, al principio; el user-agent, entre las dos últimas comillas.

Tres oficios: entrenar, buscar y responder

No todos los robots de IA hacen lo mismo, y cada empresa usa uno distinto para cada tarea. Unos recorren la web para reunir contenido de entrenamiento: GPTBot, que según OpenAI rastrea contenido «that may be used in training our generative AI foundation models», es decir, contenido que puede servir para entrenar sus modelos fundacionales de IA generativa, y ClaudeBot, que según Anthropic recoge contenido que podría contribuir al entrenamiento de sus modelos.

Otros indexan páginas para el buscador del propio asistente: OAI-SearchBot, que según OpenAI sirve para mostrar webs en la búsqueda de ChatGPT; Claude-SearchBot, que según Anthropic mejora la calidad de sus resultados, y PerplexityBot, que según Perplexity «is not used to crawl content for AI foundation models», es decir, no rastrea contenido para entrenar modelos fundacionales.

El tercer grupo no rastrea por su cuenta: visita una página cuando un usuario le pide algo al asistente. Son ChatGPT-User, Claude-User y Perplexity-User. OpenAI aclara que ChatGPT-User «is not used for crawling the web in an automatic fashion», es decir, no recorre la web de forma automática.

OpenAI subraya que cada robot se gestiona por separado: «Each setting is independent of the others», es decir, cada ajuste es independiente de los demás. Puedes dejar que OAI-SearchBot te muestre en la búsqueda de ChatGPT y negar a GPTBot tu contenido para entrenar.

Google tiene un caso aparte, Google-Extended, que no es un robot: según Google, «no tiene una cadena de user-agent de solicitud HTTP independiente» y el rastreo se hace con las de Google. Sirve para decidir si lo rastreado se usa para entrenar Gemini y para la fundamentación de sus respuestas, y según Google «no afecta a la inclusión de los sitios en la Búsqueda de Google». Por eso nunca aparece en un registro.

Las normas para robots no son un candado

Nueve robots y un permiso: cómo se comprueba cada uno
Robot Empresa Para qué sirve Lista oficial de IP ¿Obedece robots.txt?
GPTBot OpenAI Entrenamiento gptbot.json Sí
OAI-SearchBot OpenAI Búsqueda en ChatGPT searchbot.json Sí
ChatGPT-User OpenAI Visitas pedidas por un usuario chatgpt-user.json Puede no aplicarse
ClaudeBot Anthropic Entrenamiento bots.json Sí
Claude-SearchBot Anthropic Búsqueda bots.json Sí
Claude-User Anthropic Visitas pedidas por un usuario bots.json y las IP de salida de la API Sí
PerplexityBot Perplexity Búsqueda, no entrenamiento perplexitybot.json Sí
Perplexity-User Perplexity Visitas pedidas por un usuario perplexity-user.json Por lo general, no
Googlebot Google Buscador de Google common-crawlers.json y DNS en googlebot.com Sí
Google-Extended Google Permiso de entrenamiento de Gemini No rastrea: es solo un nombre de robots.txt —
Según la documentación de OpenAI, Anthropic, Google y Perplexity, consultada el 30-10-2026.

Los robots que juegan limpio leen primero el robots.txt de la web. Anthropic dice que sus tres robots respetan sus directivas, y también la extensión `Crawl-delay`, que la propia empresa califica de «non-standard», para espaciar las visitas. Google afirma que sus rastreadores habituales siempre respetan las reglas de robots.txt en los rastreos automáticos.

Los que activa un usuario son otra historia. Para ChatGPT-User, OpenAI advierte de que, como esas acciones las inicia un usuario, «robots.txt rules may not apply», es decir, puede que las reglas de robots.txt no se apliquen. Perplexity dice que Perplexity-User «generally ignores robots.txt rules», es decir, suele ignorarlas, por el mismo motivo.

Y Google-Extended solo existe aquí: es el nombre que se escribe en robots.txt para decidir sobre el entrenamiento de Gemini.

Cada empresa publica sus IP en un fichero

Las listas oficiales son ficheros JSON públicos: `gptbot.json`, `searchbot.json` y `chatgpt-user.json`, de OpenAI; `bots.json`, de Anthropic, uno para sus tres robots; `perplexitybot.json` y `perplexity-user.json`, de Perplexity, y `common-crawlers.json`, de Google, para su robot habitual. Google precisa que las direcciones de sus ficheros «se representan en formato CIDR».

Cada fichero lleva la fecha en que se generó, y cambian. De los descargados el 30 de octubre de 2026, el de GPTBot era del 22 de septiembre; el de Anthropic, del 20 de octubre, y el de Google, del 29 de octubre.

Anthropic publica, en realidad, dos listas. La de sus robots, de la que dice: «If a crawler has a source IP address on this list, it indicates that the crawler is coming from Anthropic», es decir, si la IP de un rastreador está en esa lista, viene de Anthropic. Y otra, en la documentación de su API, con las direcciones de salida de las búsquedas y lecturas web que hace Claude como herramientas: el bloque 160.79.104.0/21.

En el registro de twinforce.es, siete peticiones de Claude-User llegaron desde ese bloque con el user-agent estándar de Claude-User. No están en la lista de robots, pero sí entre las IP oficiales de la empresa, así que en esta práctica cuentan como legítimas.

Un script de 32 líneas cruza nombre e IP

Qué hace el script, paso a paso
Paso Qué hace Por qué
1. Descarga las listas Pide las listas oficiales de los nueve robots, identificándose con un user-agent propio, y convierte cada rango en una red con el módulo `ipaddress`. A Claude-User le suma el bloque de salida de la API de Anthropic. Las listas cambian: así se usa siempre la de hoy
2. Lee el registro Recorre el fichero línea a línea, también si está en .gz, y saca de cada una la IP (el primer campo), el user-agent (lo que va entre las dos últimas comillas) y la fecha. Es el formato combinado de Apache
3. Asigna el robot Busca en el user-agent el nombre de cada robot y se queda con el primero que encuentra; descarta las líneas sin ninguno y las anteriores a la fecha indicada. Solo cuentan las peticiones que dicen ser un robot
4. Cruza y cuenta Comprueba si la IP cae dentro de algún rango oficial de ese robot y suma peticiones e IP distintas, dentro y fuera. Fuera de rango, la petición es de un impostor
Script propio en Python 3, sin dependencias. Listas oficiales descargadas el 30-10-2026.

La comprobación se hace con un script de 32 líneas en Python que solo usa la biblioteca estándar: no hay que instalar nada. Se ejecuta con el registro y la fecha desde la que se quiere contar: `python3 verificar_robots.py access_log 30/Sep/2026`. También lee registros comprimidos en `.gz`.

Hace cuatro cosas, en este orden. El resultado es una tabla por robot con las peticiones y las IP distintas, dentro y fuera de los rangos oficiales.

Para el robot de Google hay una segunda prueba, que se explica más abajo, porque Google ofrece otra forma de verificarlo además de su lista.

Uno de cada siete era un impostor

Quién dice ser quién en el registro de twinforce.es
Robot Peticiones que dicen serlo Desde IP oficial Impostoras IP oficiales IP impostoras
ClaudeBot (Anthropic) 13.794 13.314 480 30 38
Googlebot 8.207 6.996 1.211 52 68
PerplexityBot 4.693 4.241 452 12 40
GPTBot (OpenAI) 4.186 3.672 514 56 38
OAI-SearchBot (OpenAI) 2.526 2.022 504 274 40
ChatGPT-User (OpenAI) 1.648 1.134 514 594 43
Claude-SearchBot (Anthropic) 509 0 509 0 41
Claude-User (Anthropic) 508 16 492 3 46
Perplexity-User 480 0 480 0 38
Total 36.551 31.395 5.156 — —
Registro de acceso de twinforce.es, 30-09 a 30-10-2026. IP oficial = dentro de los rangos que publica cada empresa (descargados el 30-10-2026). Una misma IP impostora aparece en varias filas, así que las columnas de IP no se suman.
Una mujer, con los ojos muy abiertos, juega en la mesa del salón a un tablero cuyas casillas verdes del centro llevan el logo de OpenAI: sobre ellas descansan arañas verdes sonrientes y, por fuera, rondan arañas rojas disfrazadas con boina, gafas de sol, bigote o sombrero; ella sujeta con el dedo una roja que intenta colarse en la zona verde.
📷 Imagen generada con IA

En el mes analizado, 36.551 peticiones dijeron ser uno de los nueve robots. 5.156 llegaron desde direcciones que no están en las listas oficiales: un 14,1 %, una de cada siete.

Dos nombres no trajeron ni una visita auténtica en todo el mes: Claude-SearchBot y Perplexity-User. Todo lo que llegó con ellos venía de fuera de sus rangos. En el otro extremo, ClaudeBot fue el robot auténtico más activo, y el de Google, el más suplantado, tanto en peticiones como en IP.

Dos limitaciones de la medida. Una herramienta que se ejecuta en el equipo del usuario, como Claude Code, se identifica como Claude-User desde una IP cualquiera, y la comprobación la marca como impostora. Y las listas se descargaron el 30 de octubre. Si algún robot cambió de dirección durante el mes, una IP que fue suya hace semanas podría salir hoy como impostora.

Los mismos disfraces, la misma búsqueda

Qué pedían y qué recibieron los impostores
Peticiones falsas Número Porcentaje
Total 5.156 100 %
Desde las 38 IP que usaron los nueve nombres 4.672 90,6 %
Pedían credenciales, configuración, WordPress o paneles 3.127 60,6 %
Recibieron un 404 (no encontrado) 4.396 85,3 %
Recibieron un 200 (páginas públicas) 100 1,9 %
Registro de acceso de twinforce.es, 30-09 a 30-10-2026. Las filas no se suman: cada una cuenta una característica distinta.

Los impostores no son muchos ni distintos. Las 5.156 peticiones falsas salieron de 80 IP, y 38 de ellas usaron los nueve nombres: cambiaban de user-agent de una petición a otra. Esas 38 direcciones hicieron 4.672 peticiones, el 90,6 % de las falsas.

Tampoco venían a leer. 3.127 peticiones, el 60,6 %, pedían ficheros de credenciales o de configuración que una web estática no tiene: `.env`, `.aws/credentials`, `secrets.json`, `firebase-adminsdk.json` o `config/gcp-credentials.json`, además de rutas de WordPress y de paneles de administración. Son barridos automáticos con el disfraz de un robot de IA.

El servidor respondió 404, «no encontrado», en 4.396 de ellas, el 85,3 %. Las 100 que recibieron un 200 pedían páginas públicas, como la portada.

El robot de Google se comprueba de ida y vuelta

El falso robot de Google ante el DNS
Qué devolvió el DNS inverso Peticiones IP
`*.bc.googleusercontent.com` (Google Cloud), y la vuelta coincide 775 42
Ningún nombre 424 —
Otros proveedores 12 —
Total fuera de common-crawlers.json 1.211 68
Registro de acceso de twinforce.es, 30-09 a 30-10-2026. Las 775 de la primera fila pasarían una comprobación que acepte cualquier nombre acabado en googleusercontent.com.
En un descampado, una mujer sostiene sonriente el bumerán con la G de Google, que ha vuelto a su mano trazando una curva en el aire junto a un pequeño edificio rotulado «DATA CENTRE»; a su lado, un hombre intenta alcanzar el suyo, mientras otro bumerán ha ido a parar al tejado de una nave con el rótulo «RENTED WAREHOUSE».
📷 Imagen generada con IA

Google ofrece, además de su lista, un método manual. Se hace una consulta de DNS inverso de la IP con el comando `host`, se comprueba que el dominio es «googlebot.com, google.com o googleusercontent.com» y se hace la consulta directa con el nombre obtenido, que debe devolver la misma IP del registro.

Con una IP del robot de Google auténtico: `host 66.249.79.72` responde `crawl-66-249-79-72.googlebot.com.`, y `host crawl-66-249-79-72.googlebot.com` devuelve `has address 66.249.79.72`. El círculo se cierra.

La trampa está en quedarse en «acaba en googleusercontent.com». De las 1.211 peticiones de falso robot de Google, 775, desde 42 IP, resolvían a nombres `*.bc.googleusercontent.com` y pasaban también la vuelta: son máquinas de Google Cloud, que alquila cualquiera. Google no da esa forma de nombre para ninguno de sus robots.

Las formas que sí da son estas: `crawl-…googlebot.com` o `geo-crawl-….geo.googlebot.com` para sus rastreadores habituales; `rate-limited-proxy-….google.com` para los de casos especiales, y `….gae.googleusercontent.com` o `google-proxy-….google.com` para los que activa un usuario. Para el robot de Google, la regla segura exige las dos cosas: un nombre `crawl-…googlebot.com` o `geo-crawl-….geo.googlebot.com` y la IP dentro de `common-crawlers.json`.

Dos capas para cerrar la puerta

Ejemplo de robots.txt: búsqueda sí, entrenamiento no
Bloque Qué pide
User-agent: GPTBot · Disallow: / Que OpenAI no use tu contenido para entrenar sus modelos
User-agent: ClaudeBot · Disallow: / Que Anthropic excluya tu contenido futuro de sus datos de entrenamiento
User-agent: Google-Extended · Disallow: / Que Google no lo use para entrenar Gemini ni para la fundamentación; no afecta a la Búsqueda
User-agent: OAI-SearchBot · Allow: / Seguir apareciendo en la búsqueda de ChatGPT
User-agent: Claude-SearchBot · Allow: / Seguir indexado para las búsquedas de Claude
User-agent: PerplexityBot · Allow: / Seguir apareciendo en los resultados de Perplexity
Ejemplo didáctico, no una recomendación. En el fichero, cada directiva va en su propia línea. Efectos según la documentación de OpenAI, Anthropic, Google y Perplexity.

La primera capa es para los robots de verdad, que obedecen: el robots.txt. Una decisión habitual es dejar que te encuentren los buscadores de los asistentes y negar el contenido para entrenar. Cada bloque nombra un robot con `User-agent` y le dice qué puede leer: `Disallow: /` le cierra toda la web y `Allow: /` se la abre.

La segunda capa es para los impostores, que no leen robots.txt. En Apache 2.4 se escribe en la configuración del sitio con una condición `<If>` y el operador `-R`, que según la documentación de Apache equivale a comparar la IP del cliente con `-ipmatch`, «but more efficient». Para GPTBot son tres líneas: `<If "%{HTTP_USER_AGENT} =~ /GPTBot/ && ! -R '20.171.206.0/24' && ! -R '20.171.207.0/24'">`, después `Require all denied` y, al final, `</If>`.

Se lee así: si el user-agent contiene GPTBot y la IP no está en ninguno de esos rangos, se deniega la petición. El ejemplo muestra solo dos rangos de la lista de OpenAI; la regla real lleva un `! -R` por cada rango del JSON y hay que actualizarla cuando la empresa regenera su fichero, o generarla con el propio script. Y solo frena a quien usa ese nombre desde fuera del rango, no a cualquier barrido.

Si tu web pasa por Cloudflare, empresa de red de distribución de contenidos y seguridad web, Perplexity publica la misma idea como regla de su cortafuegos, que empareja cada nombre con sus rangos: `(http.user_agent contains "PerplexityBot" and ip.src in {<PerplexityBot IP ranges>})`. La propone para dejar pasar a sus robots auténticos.

La medida de fondo no está en ninguna de las dos capas: no tener `.env` ni credenciales en la carpeta pública de la web. El RFC 9309 lo advierte: robots.txt no es «a substitute for valid content security measures», es decir, un sustituto de las medidas de seguridad de verdad, y listar rutas en él las deja a la vista.

Lo que esta comprobación no resuelve

Las listas de IP cambian, así que la comprobación vale lo que valga la lista del día. Y los robots que activa un usuario, como ChatGPT-User o Perplexity-User, pueden no hacer caso del robots.txt aunque sean auténticos.

Bloquear por IP a los robots de verdad tampoco es buena idea. Anthropic avisa de que hacerlo «may not work correctly or persistently guarantee an opt-out, as doing so impedes our ability to read your robots.txt file», es decir, puede no funcionar bien ni garantizar la exclusión, porque les impide leer tu robots.txt. La regla del servidor debe frenar solo a quien usa el nombre desde fuera de su rango, nunca a los rangos oficiales.

La salida de fondo es que el robot demuestre quién es. Cloudflare describe Web Bot Auth como un método que usa «cryptographic signatures in HTTP messages to verify that a request comes from an automated bot», es decir, firmas criptográficas en los mensajes HTTP para comprobar que una petición viene de un robot. Un nombre se copia; una firma hecha con una clave privada, no.

Conclusión

El user-agent es una tarjeta de visita que puede imprimir cualquiera. En el registro de twinforce.es, una de cada siete peticiones que en un mes dijeron ser un robot de IA o de Google era falsa; casi todas venían de las mismas 38 direcciones cambiando de disfraz, y la mayoría buscaba credenciales. Comprobarlo cuesta un script de 32 líneas y las listas que publican OpenAI, Anthropic, Google y Perplexity; frenarlos, una regla en el servidor que se actualiza con esas mismas listas. Y hay algo que ningún filtro sustituye: no dejar secretos donde un robot, auténtico o no, pueda pedirlos.

Fuentes primarias

Comentarios

Sé respetuoso. Los comentarios se moderan.

    La continuación natural

    Aprende IA a tu ritmo con nuestros cursos gratuitos.

    En nuestra plataforma de aprendizaje TAKU podrás acceder a este y muchos otros cursos de manera totalmente gratuita.

    APRENDER CON TAKU

    ← Volver al blog