Cloudflare Logpush
Cloudflare Logpush envoie automatiquement les journaux des requêtes HTTP à Ahrefs. C’est la méthode recommandée pour les sites à fort trafic, mais elle nécessite un forfait Cloudflare Entreprise.
Prérequis
- Un forfait Cloudflare Entreprise sur la zone que vous souhaitez surveiller.
- Un jeton d'API Cloudflare avec les autorisations suivantes :
- Zone → Zone → Lire
- Zone → Logs → Edit
- Pour la configuration manuelle uniquement :
jqinstallé localement, que les commandes de configuration utilisent pour lire et mettre à jour votre configuration Cloudflare.
Obtention du jeton d’API Cloudflare
Assurez-vous d’être connecté au Dashboard Cloudflare avec le bon compte. Accédez ensuite à la page https://dash.cloudflare.com/profile/api-tokens, repérez et cliquez sur le bouton Create Token en haut à droite :
Passez maintenant au flux Créer un jeton personnalisé :
Renseignez les informations suivantes :
- Nom du jeton API : ahrefs-bot-analytics
- Accordez les autorisations suivantes :
- Zone / Journaux / Modifier afin que nous puissions configurer une tâche Logpush pour envoyer les journaux vers Ahrefs Bot Analytics
- Zone / Zone / Lire afin que nous puissions localiser la zone à configurer
- Les ressources de zone peuvent être définies sur Inclure / Toutes les zones ; sinon, sélectionnez la zone qui correspond au domaine de votre site web.
Cliquez maintenant sur le bouton Continuer vers le récapitulatif ; le récapitulatif devrait ressembler à ceci :
Cliquez maintenant sur le bouton Créer un jeton et copiez le jeton généré dans le presse-papiers pour l’utiliser lors des étapes suivantes.
Consultez la documentation Cloudflare sur la création d’un jeton API pour plus d’informations.
Configuration automatique
- Dans Ahrefs, allez dans Paramètres du projet → Bot Analytics.
- Sélectionnez Cloudflare Logpush comme méthode.
- Collez votre jeton d'API Cloudflare et cliquez sur Connecter.
Ahrefs utilisera votre jeton pour :
- Trouver la zone correspondant au domaine de votre projet.
- Vérifier l’existence de tâches Logpush.
- Créer une nouvelle tâche qui envoie des journaux à Ahrefs.
- Ajoutez une règle de champ de journal personnalisé à la zone, afin que les en-têtes de vérification des bots (
signature,signature-inputetsignature-agent) soient inclus dans les journaux. Les règles existantes de votre zone sont conservées.
info
Votre jeton est utilisé une seule fois et n’est pas stocké.
Configuration manuelle
Si vous préférez ne pas fournir de jeton d’API, vous pouvez configurer la tâche Logpush manuellement à l’aide de l’API Cloudflare.
Étape 1 — Obtenez votre jeton API
-
Accédez à votre Dashboard Cloudflare et sélectionnez le domaine de votre site web.
-
Cliquez sur « Obtenir votre jeton API » et créez un jeton avec les autorisations suivantes :
- Zone → Zone → Lire
- Zone → Logs → Edit
Voir Obtention d'un jeton API pour obtenir des instructions détaillées.
info
Vous n’avez pas besoin de rechercher votre ID de zone. Les commandes trouvent la zone à partir de votre domaine à l’aide de l’autorisation Zone → Zone → Lecture.
Étape 2 — Créez la tâche Logpush
Renseignez votre jeton d’API dans le premier bloc, puis exécutez chaque bloc ci-dessous, un par un, dans votre terminal, en vérifiant que chacun se termine sans erreur. Ensemble, ils trouvent votre zone, créent la tâche Logpush et ajoutent la règle de champ de journal personnalisé décrite dans Configuration automatique. Vous pouvez trouver les commandes exactes, préremplies avec les détails de votre projet, dans Paramètres du projet → Bot Analytics → Configurer manuellement.
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
Les champs BotScore, BotScoreSrc et BotTags ne sont disponibles qu’avec un abonnement à Cloudflare Bot Management. Bot Analytics fonctionne toutefois sans eux, mais les inclure améliore la classification des bots. Si votre zone ne dispose pas de Bot Management, supprimez ces trois champs de field_names avant de créer la tâche.
warning
L’URL destination_conf et la clé de propriété sont propres à votre projet. Copiez les commandes exactes depuis votre page Paramètres du projet → Bot Analytics pour vous assurer d'utiliser les bonnes valeurs.
Étape 3 — Vérifier la connexion
Après avoir créé la tâche, retournez dans Paramètres du projet → Bot Analytics dans Ahrefs et cliquez sur Vérifier l’état pour vérifier que les données sont bien reçues.