Análisis de logs para crawlers de IA: quién vino de verdad

El análisis de logs lee el agente de usuario y la IP que el servidor ya guarda, y verifica la identidad antes de contar. Incluye el comando, la tabla de campos, la lista de tokens y los límites de lo que un registro puede probar.

Rastreo e indexación6 min de lectura2788 visitas
Análisis de logs para crawlers de IA: quién vino de verdad

El análisis de logs consiste en leer dos campos que tu servidor ya guarda, el agente de usuario y la dirección IP, y separar las peticiones de un crawler de IA real de las que solo dicen serlo. Responde a una pregunta que una prueba de accesibilidad no puede resolver: no «¿podía GPTBot llegar a esta página?», sino «¿lo hizo, qué día y cuántas veces?». Un 200 demuestra que la puerta se abre. El registro muestra quién entró.

Qué puede decirte el análisis de logs y qué no

Puede decirte qué agentes pidieron qué rutas, a qué hora, con qué código de estado y desde qué IP. No puede decirte si el contenido se usó después en una respuesta o en un entrenamiento. Tampoco confirma la identidad por sí solo: el agente de usuario es una declaración y cualquiera puede copiarlo. Solo una IP coincidente convierte «una petición que dice GPTBot» en «GPTBot».

Por eso el tema necesita un método y no un truco de una línea. Una línea de registro tiene dos mitades. La mitad que todos leen es el agente. La mitad que decide si la línea es cierta es la dirección IP.

Antes de empezar necesitas acceso de lectura al registro del servidor y un terminal. Si tu proveedor no entrega registros, este método no tiene sustituto: ninguna herramienta externa puede ver peticiones que nunca llegaron a tu servidor.

Por qué el registro supera a la comprobación de agente

Una prueba de accesibilidad envía una petición con un agente imitado y observa la respuesta. Un registro guarda lo que hicieron clientes reales, sin provocación. Los dos pueden contradecirse: ser accesible no es lo mismo que ser visitado, y una prueba puede fallar aunque un crawler pase por otra ruta.

El registro aporta además el campo que una prueba nunca produce: el tiempo. Una prueba da sí o no en un instante. Un registro da un conteo por día y por robot, la única forma de distinguir un crawler semanal del que vino una vez y se fue.

Hazlo en este orden

Cinco pasos. Cada uno tiene una comprobación antes de pasar al siguiente.

  1. Encuentra el registro y confirma el formato. En nginx el formato por defecto es combined; en Apache, el formato extendido/NCSA combined documenta los campos %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i". Terminado cuando sabes nombrar cada campo sobre una línea real.
  2. Cuenta por agente antes de filtrar. En una línea combined, el sexto campo entre comillas es el agente. Terminado cuando tienes una lista de los treinta agentes más frecuentes, no solo los que esperabas.
  3. Extrae los tokens de los crawlers de IA. Las cadenas exactas están en la tabla de abajo. Terminado cuando cada token tiene un número de peticiones y una primera fecha de aparición.
  4. Verifica las IP que piensas creer. DNS inverso y directo para Google, archivos JSON publicados para OpenAI. Terminado cuando cada línea citada está verificada o marcada como «no verificada».
  5. Anota la ventana, no solo el total. Un conteo sin número de días no significa nada. Terminado cuando tu nota se parece a «412 peticiones, del 1 al 31 de agosto de 2026, 5 sitios».

El entregable: un comando y dos tablas

Este comando convierte un registro en formato combined en un conteo por agente. Supone que no hay comillas escapadas dentro del campo agente, lo cual vale para los crawlers de abajo y no para algunos scrapers.

awk -F'"' '{print $6}' access.log \
  | sed 's/;.*compatible;//' \
  | sort | uniq -c | sort -rn | head -30

El paso sed existe porque los navegadores esconden el token real detrás de un prefijo de compatibilidad. Guarda también el campo sin tocar, para poder volver cuando un conteo parezca raro.

El segundo entregable es la tabla de campos. Casi todo el mundo conoce el agente y se detiene ahí, y por eso su primera pasada se pierde las rutas.

CampoEjemploQué dice
Dirección remota66.249.66.1El único campo verificable contra una lista publicada
Línea de peticiónGET /pricing HTTP/1.1El método y la ruta solicitados
Estado200Si el crawler recibió contenido o un bloqueo
Bytes enviados18432Cuánto se devolvió realmente
Referente-Casi siempre vacío para un crawler
Agente... GPTBot/1.4 ...La declaración, falsificable, demasiado creída

Tercer entregable: la lista de tokens que publican los operadores, releída el 22 de septiembre de 2026 en su documentación. No es exhaustiva y aparecen nuevos sin aviso, que es justo por lo que el paso 2 cuenta todo antes de filtrar.

TokenOperadorFunción¿Verificable?
GPTBotOpenAIRastreo de entrenamientoSí, con openai.com/gptbot.json
OAI-SearchBotOpenAIPresencia en búsquedaSí, con openai.com/searchbot.json
ChatGPT-UserOpenAIPetición lanzada por una personaSí, con openai.com/chatgpt-user.json
GooglebotGoogleRastreo de búsquedaDNS inverso y directo, más archivos JSON
Google-ExtendedGoogleToken de controlNo: no envía peticiones propias
ClaudeBotAnthropicRastreoDocumentado, revisa sus rangos en su página
PerplexityBotPerplexityRastreoDocumentado, revisa sus rangos en su página

Dos filas sostienen el razonamiento. Google-Extended es un token de control, no un crawler: la documentación de Google dice que no tiene una cadena de agente propia, así que su ausencia del registro no es un fallo. ChatGPT-User lo activa una persona: sus peticiones no son un rastreo automático.

Qué falla

Confiar en el agente. Es el error por defecto y produce una respuesta segura y falsa. La verificación de Google exige dos consultas DNS: inversa sobre la IP y directa sobre el nombre obtenido, con coincidencia obligatoria. Para OpenAI se compara la IP con el archivo de rangos publicado. Para un crawler que no publica ninguna de las dos cosas, escribe «no verificado» en vez de creer o borrar el conteo.

Contar lecturas de robots.txt como páginas. OpenAI señala que, al leer robots.txt, puede añadir un marcador al agente para distinguir esas peticiones. Si tu formato elimina la ruta, una lectura de robots.txt y una página se parecen. Separa por ruta antes de anunciar un conteo de rastreo.

Leer una ventana demasiado corta. Siete días no responden una pregunta de treinta, y la rotación de registros trunca la ventana sin avisar. Indica la primera y la última marca de tiempo que contaste de verdad.

Preguntas frecuentes

¿Se puede confiar en el agente de usuario del registro?

No. Trátalo como una declaración hasta que la IP coincida con un rango publicado o pase el DNS inverso y directo. Un registro es una prueba documental, no una prueba de identidad.

¿Cómo sé si GPTBot visitó mi sitio?

Busca el token GPTBot y compara cada IP con el archivo openai.com/gptbot.json. Un token sin IP coincidente es otra petición que copió el nombre.

¿Cuántos días de registro necesito?

Los suficientes para cubrir un ciclo completo de rastreo, lo que depende del sitio y no tiene una cifra universal. Treinta días es un valor de partida razonable. Si solo tienes siete, dilo: una ventana corta subestima, nunca sobreestima.

La frontera que conviene escribir sin rodeos: un registro prueba que hubo una petición; no prueba que el contenido se usara, se posicionara o se citara. Cuando quieras convertir ese dato en una acción publicada, ahí entra QueryWin. Para comprobar primero si los crawlers pueden alcanzarte, empieza por comprobar si la IA puede leer tu sitio. Y si la duda es qué robots autorizas, está en robots.txt para rastreadores de IA.

El agente se presenta solo. La IP decide si dice la verdad.

Forma parte de la guía de QueryWin · Nivel 2

Análisis de logs para crawlers de IA: quién vino de verdad