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
  • 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.

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
  • 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 si existen trabajos de Logpush.
  3. Crear un nuevo trabajo que envíe registros a Ahrefs.
  4. Añade una regla de campo de registro personalizado a la zona para que los encabezados de verificación de bots (signature, signature-input y signature-agent) se incluyan en los registros. Las reglas existentes en tu zona se conservan.

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"],"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"}]}}])}')

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.