Anexo de método · Noviembre 2026
Anexo del Journal

Cómo hemos medido los bots en los logs de griddo.io

Este anexo acompaña al artículo Qué parte de tu web visitan ya los bots de IA: lo que muestran nuestros logs. Explica de dónde salen las cifras, qué cuenta en cada grupo y qué no pueden decir. Así puedes repetir la medición en tu propia web y comparar.

Bots declarados por User-Agent
46,1%
66.255 de 143.567 páginas servidas
+ tráfico no declarado desde datacenters
55,6%
79.829 páginas
Bots de IA declarados
11,3%
16.202 páginas
Las cifras

Del 6 de septiembre al 8 de noviembre de 2026

En ese periodo, griddo.io sirvió 143.567 páginas.

GrupoPáginas% del total
Bots declarados por User-Agent66.25546,1 %
Bots declarados + tráfico no declarado desde datacenters79.82955,6 %
Bots de IA declarados16.20211,3 %
Resto, sin clasificar63.738—

Los grupos se solapan. Los bots de IA declarados son una parte de los bots declarados. El resto es lo que no entra en ninguno de los otros grupos.

Metodología

Fuente y periodo

Fuente: los logs de acceso de CloudFront, la CDN que sirve griddo.io.

Periodo: del 6 de septiembre al 8 de noviembre de 2026, 64 días. Empieza el 6 de septiembre porque es el primer día con logs disponibles en nuestro histórico.

Fecha de la consulta: 9 de noviembre de 2026. Los logs de CloudFront pueden llegar con retraso, así que si repites la consulta más adelante sobre el mismo periodo las cifras pueden variar ligeramente.

Alcance

Qué contamos como página servida

Una petición GET con respuesta 200 y tipo de contenido text/html, sin las rutas /api/. Así quedan fuera las imágenes, los scripts, las hojas de estilo y las llamadas internas. Contamos páginas, no visitas ni personas.

Criterios

Cómo clasificamos cada petición

Bot declarado. El User-Agent contiene alguno de estos textos: bot, crawl, spider, slurp, gptbot, claude, perplexity, bytespider, amazonbot, applebot, facebookexternalhit, meta-external, python, curl, wget, go-http, httpclient, headless, scrapy, axios, node-fetch, okhttp, java/, libwww, monitor, uptime, preview, ahrefs, semrush, mj12, dotbot, petalbot, yandex, bingpreview.

Tráfico no declarado desde datacenters. No es un bot declarado, pero llega desde la red de un proveedor de nube o hosting. Lo identificamos por el número de sistema autónomo (ASN): 15169 (Google Cloud), 8075 (Azure), 16509 y 14618 (AWS), 24940 (Hetzner), 16276 (OVH), 14061 (DigitalOcean) y 20473 (Vultr).

Bot de IA declarado. El User-Agent contiene alguno de estos textos: gptbot, oai-searchbot, chatgpt, claudebot, claude-, anthropic, perplexity, google-extended, ccbot, bytespider, meta-external, amazonbot, applebot-extended, cohere, diffbot, youbot, mistral. Son los rastreadores y agentes de OpenAI, Anthropic, Perplexity, ByteDance, Meta y similares.

Resto. Todo lo demás. No lo llamamos humano: no tenemos forma de saberlo solo con los logs.

Hasta dónde llega el método

Límites

  1. «Bot declarado» no es lo mismo que IA. Incluye herramientas que no son de IA, como librerías de programación (python, curl), monitores de disponibilidad, generadores de vistas previas y herramientas SEO. Por eso la cifra que importa para hablar de IA es el 11,3 %, y el 46,1 % sirve de contexto.
  2. Solo vemos a quien se identifica. Un bot que se hace pasar por un navegador no aparece como declarado. Si además no llega desde uno de los datacenters de la lista, queda en el resto.
  3. El resto no se puede clasificar. Las 63.738 páginas del resto mezclan personas con bots no identificados. No las sumamos ni a un grupo ni a otro.
  4. El ASN es una aproximación. Que una petición llegue desde un datacenter hace pensar en tráfico automatizado, pero no lo demuestra. Y la lista solo recoge los proveedores principales.
  5. google-extended no captura nada. Está en la lista de IA, pero según la documentación de Google ese token no aparece como User-Agent en las peticiones. El rastreo de Google para IA no se puede separar en los logs con este método.
  6. Es una sola web, y una web de empresa. griddo.io no es una web universitaria. Las proporciones de tu web pueden ser muy distintas.
Repítelo en tu web

La consulta SQL

Si tu web está detrás de CloudFront y tienes los logs estándar en S3, puedes consultarlos con Amazon Athena. Esta consulta usa la tabla cloudfront_standard_logs que propone la documentación de Athena para los logs estándar. Si tu tabla tiene otro nombre, cámbialo, y ajusta el periodo a tu caso.

SELECT
  CASE
    WHEN regexp_like(lower(cs_user_agent),
      'gptbot|oai-searchbot|chatgpt|claudebot|claude-|anthropic|perplexity|ccbot|bytespider|meta-external|amazonbot|applebot-extended|cohere|diffbot|youbot|mistral')
      THEN 'bot_ia_declarado'
    WHEN regexp_like(lower(cs_user_agent),
      'bot|crawl|spider|slurp|gptbot|claude|perplexity|bytespider|amazonbot|applebot|facebookexternalhit|meta-external|python|curl|wget|go-http|httpclient|headless|scrapy|axios|node-fetch|okhttp|java/|libwww|monitor|uptime|preview|ahrefs|semrush|mj12|dotbot|petalbot|yandex|bingpreview')
      THEN 'otro_bot_declarado'
    ELSE 'resto'
  END AS grupo,
  count(*) AS paginas
FROM cloudfront_standard_logs
WHERE cs_method = 'GET'
  AND sc_status = 200
  AND sc_content_type LIKE 'text/html%'
  AND cs_uri_stem NOT LIKE '/api/%'
  AND "date" BETWEEN DATE '2026-09-06' AND DATE '2026-11-08'
GROUP BY 1
ORDER BY 2 DESC;

Tres detalles que no dan error, pero sí cifras equivocadas:

  • El tipo de las columnas. En la tabla de la documentación, sc_status es un número y date una fecha. Si tu tabla guarda todo como texto, como la nuestra, compara con sc_status = '200' y con fechas entre comillas, sin DATE. Comparar un texto con un número devuelve cero filas.
  • El User-Agent viene codificado. CloudFront escribe los espacios como %20. La búsqueda por patrón funciona igual, pero una comparación exacta con un User-Agent completo no encuentra nada.
  • El coste. Athena cobra por lo que lee. Si tu tabla está particionada por fecha, filtra también por las particiones para no recorrer todo el histórico.
Nota
La consulta usa las mismas listas que este anexo, salvo google-extended (ver el límite 5). Como el primer grupo se evalúa antes, los bots de IA declarados no se cuentan dos veces: para el total de bots declarados, suma los dos primeros grupos. Los logs estándar de CloudFront no traen el ASN. Para separar el tráfico desde datacenters tienes que cruzar la IP de cada petición con una base de datos de ASN.