Una petición HTTP puede presentarse ante una web como GPTBot, OAI-SearchBot o PerplexityBot simplemente escribiendo ese nombre en el User-Agent. Para auditar de verdad el tráfico atribuido a rastreadores de inteligencia artificial conviene comprobar también la dirección IP de origen contra los rangos publicados oficialmente por OpenAI y Perplexity, una verificación que puede evitar métricas infladas y reglas de bloqueo mal planteadas.
Las claves para identificar bots de IA reales en 20 segundos
- El
User-Agentes una cadena de texto y puede falsificarse fácilmente. - OpenAI y Perplexity publican rangos de IP para varios de sus rastreadores.
- GPTBot tiene actualmente 21 prefijos publicados y OAI-SearchBot, 35.
- El JSON de PerplexityBot contiene ocho prefijos que abarcan 18 direcciones IPv4.
- Conviene cruzar
User-Agente IP antes de etiquetar tráfico como procedente de un bot legítimo.
Hay además una distinción que puede cambiar por completo el análisis: un crawler de OpenAI no equivale necesariamente a una visita humana procedente de ChatGPT.
GPTBot, OAI-SearchBot y ChatGPT-User cumplen funciones diferentes. OpenAI identifica OAI-SearchBot como el rastreador utilizado para ayudar a que las páginas puedan aparecer en los resultados de búsqueda de ChatGPT. GPTBot está relacionado con el acceso a contenido que puede utilizarse en los sistemas de OpenAI, mientras que ChatGPT-User se ha utilizado para peticiones relacionadas con acciones iniciadas por usuarios.
Por tanto, encontrar GPTBot en access.log no significa que una persona haya hecho clic desde ChatGPT y visitado la web.
Esta diferencia resulta especialmente importante cuando los datos terminan en cuadros de mando de SEO, GEO o AI Search y se agrupan todos bajo etiquetas como «tráfico de IA».
Un User-Agent que diga ChatGPT no demuestra prácticamente nada
El User-Agent forma parte de la petición HTTP y el cliente puede elegir qué texto envía.
Con curl, por ejemplo, cualquier máquina podría hacer algo tan sencillo como:
curl -A "GPTBot" https://ejemplo.com/
O:
curl -A "PerplexityBot" https://ejemplo.com/
Desde el punto de vista de un análisis que únicamente revise esa cabecera, ambas peticiones podrían terminar clasificadas como tráfico legítimo de estas compañías.
Esto afecta también a reglas demasiado simples en el servidor o el Web Application Firewall (WAF). Una regla que permita o bloquee exclusivamente:
User-Agent contains "GPTBot"
confía en un dato controlado por quien realiza la petición.
La documentación de Perplexity recomienda precisamente combinar la comprobación del User-Agent con sus rangos de direcciones IP publicados cuando se crean reglas en sistemas como Cloudflare WAF o AWS WAF.
La IP tampoco debe interpretarse sin contexto. Si la web está detrás de Cloudflare, Fastly, un balanceador o un proxy inverso, el access.log del servidor de origen puede mostrar la IP del proxy en lugar de la del visitante. Antes de hacer el cruce hay que asegurarse de que se está extrayendo correctamente la dirección original mediante la configuración correspondiente del proxy y cabeceras como X-Forwarded-For o equivalentes.
Los rangos oficiales permiten hacer una segunda comprobación
OpenAI mantiene ficheros JSON públicos para sus rastreadores. Dos especialmente relevantes para SEO son:
https://openai.com/gptbot.json
https://openai.com/searchbot.json
También existe el endpoint:
https://openai.com/chatgpt-user.json
En la comprobación realizada el 10 de septiembre de 2026, el fichero de GPTBot contiene 21 prefijos IPv4.
Al sumar el espacio completo representado por esos bloques CIDR, el resultado es de 3.472 direcciones IPv4 posibles.
OAI-SearchBot publica actualmente 35 prefijos, equivalentes a un máximo teórico de 2.496 direcciones IPv4 dentro de esos rangos.
| Servicio | Prefijos publicados | Direcciones IPv4 representadas |
|---|---|---|
| GPTBot | 21 | 3.472 |
| OAI-SearchBot | 35 | 2.496 |
| PerplexityBot | 8 | 18 |
Es importante entender qué significa esa segunda columna. Un rango /24, por ejemplo, representa 256 direcciones y un /25, 128. La cifra no indica que todos esos servidores estén necesariamente activos ni que OpenAI esté realizando peticiones simultáneamente desde todos ellos. Expresa simplemente cuántas direcciones abarca la lista publicada.
OpenAI indica además que, para que una web pueda incluirse correctamente en ChatGPT Search, debe permitirse el acceso a OAI-SearchBot y comprobar que el proveedor de alojamiento o la red de distribución de contenidos no está bloqueando sus IP publicadas.
GPTBot y OAI-SearchBot comparten parte de su espacio de direcciones
Comparar ambos ficheros descubre otro detalle interesante.
A fecha de la comprobación, GPTBot y OAI-SearchBot comparten seis prefijos idénticos:
4.227.36.0/25
74.7.175.128/25
74.7.228.0/25
74.7.230.0/25
74.7.241.128/25
74.7.244.0/25
Esto significa que la dirección IP por sí sola tampoco siempre permite distinguir qué función está realizando un sistema de OpenAI. Para clasificar la petición es necesario utilizar conjuntamente la IP y el User-Agent correspondiente.
La dirección sirve para comprobar que la petición procede de un rango publicado por OpenAI; el User-Agent ayuda después a saber con qué identidad se está presentando.
Es un buen ejemplo de por qué la verificación correcta no consiste en sustituir User-Agent por IP, sino en utilizar ambos datos.
PerplexityBot ocupa solo 18 direcciones según su fichero actual
El caso de Perplexity resulta todavía más llamativo.
Su fichero oficial:
https://www.perplexity.ai/perplexitybot.json
contiene actualmente ocho prefijos.
Seis son /32, es decir, representan una única dirección IP cada uno. Los otros dos son un /30 y un /29, que abarcan cuatro y ocho direcciones respectivamente.
El total es:
6 + 4 + 8 = 18 direcciones IPv4
El propio JSON muestra:
creationTime: 2025-02-07T16:56:00.000000
Es decir, el fichero consultado en septiembre de 2026 mantiene como fecha de creación el 7 de febrero de 2025, unos 19 meses antes.
Esto merece una precaución. La documentación actual de Perplexity indica que sus rangos publicados deben utilizarse como fuente para configurar el WAF y recomienda recuperar periódicamente las versiones más recientes. También diferencia PerplexityBot de Perplexity-User, destinado este último a accesos realizados como consecuencia de solicitudes de los usuarios.
Por tanto, el fichero no debería copiarse una vez y convertirse en una lista estática mantenida durante años.
Cómo comprobar los bots de IA en los logs de Linux
Una primera búsqueda puede hacerse directamente sobre los registros del servidor.
Para Perplexity:
grep "PerplexityBot" access.log
Para GPTBot:
grep "GPTBot" access.log
Y para OAI-SearchBot:
grep "OAI-SearchBot" access.log
En un formato habitual de Nginx o Apache, la primera columna suele contener la IP del cliente:
grep "GPTBot" access.log | awk '{print $1}' | sort -u
El resultado podría ser algo como:
74.7.175.142
203.0.113.24
El siguiente paso consiste en descargar el fichero oficial:
curl -s https://openai.com/gptbot.json -o gptbot.json
Pero hay una diferencia importante: no basta con comparar la IP como texto contra el JSON, porque las listas contienen redes CIDR.
Por ejemplo:
74.7.175.128/25
incluye un conjunto completo de direcciones. Hay que comprobar matemáticamente si la IP pertenece a esa red.
Una forma sencilla con Python sería:
import ipaddress
import json
with open("gptbot.json") as f:
data = json.load(f)
networks = [
ipaddress.ip_network(item["ipv4Prefix"])
for item in data["prefixes"]
]
ip = ipaddress.ip_address("74.7.175.142")
print(any(ip in network for network in networks))
Si devuelve:
True
la IP está incluida en uno de los rangos publicados.
Si devuelve:
False
esa petición se ha presentado como GPTBot, pero su IP no pertenece a la lista oficial consultada en ese momento.
Esto no demuestra automáticamente qué hay detrás de la petición, pero sí significa que no debería contabilizarse sin más como un GPTBot verificado.
El problema aparece cuando esos datos llegan al informe SEO
La cuestión deja de ser puramente técnica cuando las visitas terminan convertidas en indicadores empresariales.
Un panel que muestre:
18.000 visitas de bots de inteligencia artificial este mes
puede estar mezclando varias cosas completamente diferentes:
| Tráfico | Qué significa |
|---|---|
| GPTBot | Rastreo asociado a OpenAI |
| OAI-SearchBot | Rastreo vinculado a la búsqueda de OpenAI |
| ChatGPT-User | Acceso relacionado con una petición de usuario |
| Referencia desde ChatGPT | Una persona hace clic y llega a la web |
| User-Agent falsificado | No demuestra relación con OpenAI |
| Scraper propio | Puede adoptar cualquier User-Agent |
OpenAI explica que los editores pueden seguir en sus herramientas de analítica el tráfico de referencia procedente de ChatGPT. Ese tráfico es conceptualmente diferente al rastreo realizado por OAI-SearchBot o GPTBot.
Para un responsable SEO esa separación importa bastante.
Una cosa es que OpenAI rastree 100.000 URLs de una web y otra muy distinta que ChatGPT esté enviando 10.000 visitantes humanos. También es diferente que un usuario solicite una página concreta desde una herramienta de IA.
Agruparlo todo como «tráfico de ChatGPT» hace que el dato sea fácil de presentar, pero mucho menos útil para tomar decisiones.
Bloquear bots únicamente por nombre también tiene sus límites
La misma lógica se aplica en sentido contrario.
Si se crea una regla:
Block if User-Agent = GPTBot
se bloqueará al cliente que utilice ese identificador.
Un scraper que quiera evitar la regla puede sencillamente presentarse como:
Mozilla/5.0
El bloqueo por User-Agent sigue siendo útil para comunicar preferencias a rastreadores que las respetan, especialmente mediante robots.txt, pero no constituye por sí mismo un mecanismo fiable de autenticación.
Para controles de infraestructura más estrictos, el enfoque razonable es combinar:
User-Agent + rango IP oficial + actualización periódica de rangos
y revisar además cómo el CDN o proxy transmite la dirección original.
No existe una etiqueta HTTP que convierta automáticamente una petición en «tráfico de IA legítimo». Pero OpenAI y Perplexity ofrecen suficiente información pública para aplicar una comprobación bastante más sólida que buscar simplemente las palabras GPTBot o PerplexityBot en un registro.
Para equipos SEO que ya están incorporando métricas de AI visibility, GEO y tráfico procedente de asistentes, esta pequeña diferencia técnica puede evitar una grande en el informe: confundir a un crawler que lleva una etiqueta con el crawler que realmente dice ser.
