Cloudflare Logpush
Cloudflare Logpush invia automaticamente ad Ahrefs i log delle richieste HTTP. È il metodo consigliato per i siti ad alto traffico, ma richiede un piano Cloudflare Impresa.
Prerequisiti
- Un piano Cloudflare Impresa sulla zona che vuoi monitorare.
- Un Token API di Cloudflare con le seguenti autorizzazioni:
- Zona → Zona → Lettura
- Zone → Logs → Edit
- Solo per la configurazione manuale:
jqinstallato localmente, che i comandi di configurazione usano per leggere e aggiornare la configurazione di Cloudflare.
Ottenimento del token API di Cloudflare
Assicurati di aver effettuato l’accesso alla Dashboard di Cloudflare con l’account corretto. Quindi vai alla pagina https://dash.cloudflare.com/profile/api-tokens, individua e fai clic sul pulsante Crea token in alto a destra:
Ora procedi con il flusso Crea token personalizzato:
Inserisci le seguenti informazioni:
- Nome del token API: ahrefs-bot-analytics
- Concedi le seguenti autorizzazioni:
- Zona / Log / Modifica in modo da poter configurare un job Logpush per inviare i log ad Ahrefs Bot Analytics
- Zone / Zone / Read per consentirci di individuare la zona da configurare
- Le risorse della zona possono essere impostate su Include / All Zones; in alternativa, seleziona la zona che corrisponde al dominio del tuo sito web.
Ora fai clic sul pulsante Continua al riepilogo; il riepilogo dovrebbe apparire così:
Ora fai clic sul pulsante Crea token e copia il token generato negli appunti per usarlo nei passaggi successivi.
Per ulteriori informazioni, consulta la documentazione di Cloudflare su come creare un token API.
Configurazione automatica
- In Ahrefs, vai su Impostazioni del Progetto → Bot Analytics.
- Seleziona Cloudflare Logpush come metodo.
- Incolla il tuo Token API di Cloudflare e fai clic su Connetti.
Ahrefs userà il tuo Token per:
- Trovare la zona corrispondente al dominio del tuo Progetto.
- Controlla se esistono job Logpush.
- Crea un nuovo job che invia i log ad Ahrefs.
- Aggiungi una regola di campo di log personalizzato alla zona, in modo che le intestazioni di verifica dei bot (
signature,signature-inputesignature-agent) siano incluse nei log. Le regole esistenti nella tua zona vengono mantenute.
info
Il tuo token viene usato una sola volta e non viene memorizzato.
Configurazione manuale
Se preferisci non fornire un Token API, puoi configurare manualmente il job Logpush usando l'API di Cloudflare.
Passaggio 1 — Ottieni il tuo token API
-
Vai alla tua Dashboard di Cloudflare (https://dash.cloudflare.com/) e seleziona il dominio del tuo sito web.
-
Fai clic su "Ottieni token API" e crea un nuovo token con le seguenti autorizzazioni:
- Zona → Zona → Lettura
- Zone → Logs → Edit
Consulta Ottenere un token API per istruzioni dettagliate.
info
Non è necessario cercare l’ID della zona. I comandi individuano la zona a partire dal tuo dominio utilizzando l’autorizzazione Zona → Zona → Lettura.
Passaggio 2 — Crea il job Logpush
Inserisci il tuo token API nel primo blocco, quindi esegui ciascun blocco qui sotto uno alla volta nel terminale, verificando che ciascuno venga completato senza errori. Insieme, individuano la tua zona, creano il job Logpush e aggiungono la regola del campo di log personalizzato descritta in Configurazione automatica. Puoi trovare i comandi esatti precompilati con i dettagli del tuo progetto in Impostazioni del Progetto → Bot Analytics → Configura 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
I campi BotScore, BotScoreSrc e BotTags sono disponibili solo con un abbonamento a Cloudflare Bot Management. Bot Analytics funziona anche senza, ma includerli migliora la classificazione dei bot. Se la tua zona non dispone di Bot Management, rimuovi questi tre campi da field_names prima di creare il job.
warning
L'URL destination_conf e la chiave della proprietà sono unici per il tuo Progetto. Copia i comandi esatti dalla pagina Impostazioni del Progetto → Bot Analytics per assicurarti che i valori siano corretti.
Passaggio 3 — Verifica la connessione
Dopo aver creato il job, torna in Impostazioni del progetto → Bot Analytics in Ahrefs e fai clic su Controlla stato per verificare che i dati vengano ricevuti.