Docs
Buscar documentación...⌘K

Cloudflare Logpush

Cloudflare Logpush envía automáticamente los registros de solicitudes HTTP a Ahrefs. Es el método recomendado para sitios con mucho tráfico, pero requiere un plan Enterprise de Cloudflare.

Requisitos previos

  • Un plan Enterprise de Cloudflare en la zona que quieras monitorizar.
  • Un Token de API de Cloudflare con los siguientes permisos:
    • Zona → Zona → Leer
    • Zona → Registros → Editar
    • Zona → DNS → Lectura (opcional, permite que Ahrefs verifique que tus registros DNS tienen el proxy activado)
  • Solo para la configuración manual: jq instalado localmente, que usan los comandos de configuración para leer y actualizar tu configuración de Cloudflare.

info

Logpush solo registra las solicitudes que pasan a través de Cloudflare. Los registros DNS configurados como solo DNS (nube gris) envían a los visitantes directamente a tu origen, por lo que Bot Analytics no recibe ningún dato de ellos. Asegúrate de que los registros de tu dominio estén con proxy (nube naranja); consulta el estado del proxy.

Límites y costes

La tarea de Logpush envía una línea de registro por cada solicitud dirigida a tu dominio y sus subdominios. También se envían solicitudes desde navegadores; Ahrefs descarta todo lo que no sea un bot.

warning

Cloudflare permite un máximo de 4 tareas de Logpush por zona. Si tu zona ya tiene 4, la configuración falla hasta que elimines una.

Cloudflare mide el uso de Logpush en bytes entregados sin comprimir. Consulta tu contrato Enterprise para saber cómo se factura y revisa Logpush para obtener más información.

Obtención del token de la API de Cloudflare

Asegúrate de haber iniciado sesión en el Dashboard de Cloudflare con la cuenta correcta. Luego, navega a la página https://dash.cloudflare.com/profile/api-tokens, localiza y haz clic en el botón Crear token en la esquina superior derecha:

Crear token

Ahora continúa con el flujo de Crear token personalizado:

Crear token personalizado

Rellena la siguiente información:

  • Nombre del token de la API: ahrefs-bot-analytics
  • Concede los siguientes permisos:
    • Zona / Registros / Editar para que podamos configurar un trabajo de Logpush y enviar registros a Ahrefs Bot Analytics
    • Zona / Zona / Lectura para que podamos localizar la zona que hay que configurar
    • Zona / DNS / Lectura (opcional), para que podamos verificar que tus registros DNS pasan por el proxy de Cloudflare
  • Los recursos de zona se pueden configurar como Incluir / Todas las zonas; como alternativa, selecciona la zona que corresponde al dominio de tu sitio web.
Configuración del token

Ahora haz clic en el botón Continue to summary; el resumen debería verse así:

Resumen del token

Ahora haz clic en el botón Crear token y copia el token generado en el portapapeles para usarlo en los siguientes pasos.

Consulta la documentación de Cloudflare sobre cómo crear un token de API para obtener más información.

Configuración automática

  1. En Ahrefs, ve a Configuración del proyecto → Bot Analytics.
  2. Selecciona Cloudflare Logpush como método.
  3. Pega tu token de API de Cloudflare y haz clic en Conectar.

Ahrefs usará tu token para:

  1. Encontrar la zona que coincida con el dominio de tu proyecto.
  2. Comprueba que tus registros DNS pasan por el proxy de Cloudflare y te avisa si no es así (requiere el permiso opcional Zona → DNS → Lectura).
  3. Comprueba si existen trabajos de Logpush.
  4. Crear un nuevo trabajo que envíe registros a Ahrefs.
  5. Añade una regla de campo de registro personalizada a la zona para que los registros incluyan las cabeceras de solicitud de verificación del bot (signature, signature-input y signature-agent) y la cabecera de respuesta Location, que muestra a dónde redirigió al bot. El trabajo solicita los campos RequestHeaders y ResponseHeaders para recibirlos. Las reglas existentes en tu zona se conservan.

info

Un trabajo creado antes de que se añadiera la cabecera Location no la envía. Vuelve a conectar o vuelve a ejecutar la configuración manual para reemplazar el trabajo y la regla.

info

Tu token se usa una vez y no se almacena.

Configuración manual

Si prefieres no proporcionar un token de API, puedes configurar el trabajo de Logpush manualmente mediante la API de Cloudflare.

Paso 1 — Obtén tu token de la API

  1. Ve a tu Dashboard de Cloudflare y selecciona el dominio de tu sitio web.

  2. Haz clic en "Consigue tu token de API" y crea un nuevo token con los siguientes permisos:

    • Zona → Zona → Leer
    • Zona → Registros → Editar

    Consulta Obtaining API token para ver instrucciones detalladas.

info

No necesitas buscar tu ID de zona. Los comandos encuentran la zona a partir de tu dominio usando el permiso Zone → Zone → Read.

Paso 2 — Crea el trabajo de Logpush

Introduce tu token de API en el primer bloque y, después, ejecuta cada uno de los bloques siguientes de uno en uno en tu terminal, comprobando que cada uno se complete sin errores. En conjunto, encuentran tu zona, crean el trabajo de Logpush y añaden la regla de campo de registro personalizado descrita en Configuración automática. Puedes encontrar los comandos exactos rellenados previamente con los detalles de tu Proyecto en Configuración del Proyecto → Bot Analytics → Configurar manualmente.

export CF_TOKEN="<your Cloudflare API token>"
BASE="https://api.cloudflare.com/client/v4"

Find the Cloudflare zone for yourwebsite.com

ZONE_ID=$(curl -s --fail-with-body "$BASE/zones?name=yourwebsite.com&status=active&match=all" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -r '.result[0].id // error("no active Cloudflare zone found for yourwebsite.com")')

echo "ZONE_ID=$ZONE_ID"

Remove the existing Logpush job if present

OLD_JOB_ID=$(curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -r '([(.result // [])[] | select(.name == "ahrefs-web-analytics-http-requests")])[0].id // ""')

echo "OLD_JOB_ID=$OLD_JOB_ID"
if [ -n "$OLD_JOB_ID" ]; then
  curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs/$OLD_JOB_ID" -X DELETE \
    -H "Authorization: Bearer $CF_TOKEN"
fi

Create the Logpush job

curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs" -X POST \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary '{"name":"ahrefs-web-analytics-http-requests","destination_conf":"https://analytics.ahrefs.com/api/cf_logpush/http_requests?header_x-ahrefs-web-analytics-property=YOUR_PROPERTY_KEY","dataset":"http_requests","frequency":"high","filter":"{\"where\":{\"or\":[{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"yourwebsite.com\"},{\"key\":\"ClientRequestHost\",\"operator\":\"endsWith\",\"value\":\".yourwebsite.com\"}]}}","output_options":{"field_names":["ClientIP","ClientRequestMethod","ClientRequestHost","ClientRequestProtocol","ClientRequestScheme","ClientRequestURI","ClientRequestPath","ClientRequestUserAgent","ClientRequestReferer","EdgeStartTimestamp","EdgeEndTimestamp","EdgeResponseStatus","EdgeResponseBytes","EdgeResponseContentType","EdgeTimeToFirstByteMs","ClientCountry","ClientCity","ClientASN","ClientDeviceType","ClientRegionCode","BotScore","BotScoreSrc","BotTags","VerifiedBotCategory","RayID","RequestHeaders","ResponseHeaders"],"timestamp_format":"unixnano"},"enabled":true}'

Add the custom log fields rule

RULES=$(curl -s --fail-with-body "$BASE/zones/$ZONE_ID/rulesets/phases/http_log_custom_fields/entrypoint" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -c '.result.rules // []')

echo "RULES=$RULES"
BODY=$(jq -nc --argjson rules "$RULES" \
  '{rules: ([$rules[] | select(.description != "ahrefs-web-analytics-web-bot-auth-signature")] + [{"action":"log_custom_field","expression":"true","description":"ahrefs-web-analytics-web-bot-auth-signature","action_parameters":{"request_fields":[{"name":"signature"},{"name":"signature-input"},{"name":"signature-agent"}],"response_fields":[{"name":"location"}]}}])}')

curl -s --fail-with-body "$BASE/zones/$ZONE_ID/rulesets/phases/http_log_custom_fields/entrypoint" -X PUT \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary "$BODY"

info

Los campos BotScore, BotScoreSrc y BotTags solo están disponibles con una suscripción a Cloudflare Bot Management. Bot Analytics funciona sin ellos, aunque incluirlos mejora la clasificación de bots. Si tu zona no tiene Bot Management, elimina estos tres campos de field_names antes de crear el trabajo.

warning

La URL de destination_conf y la clave de la propiedad son únicas para tu proyecto. Copia los comandos exactos de tu página Configuración del Proyecto → Bot Analytics para asegurarte de que los valores sean correctos.

Paso 3 — Verifica la conexión

Después de crear el trabajo, vuelve a Configuración del proyecto → Bot Analytics en Ahrefs y haz clic en Comprobar estado para verificar que se están recibiendo datos. Si no llega ningún dato, comprueba que tus registros DNS pasan por el proxy.