Cloudflare Logpush
Cloudflare Logpush automatycznie wysyła logi żądań HTTP do Ahrefs. To zalecana metoda dla witryn o dużym ruchu, ale wymaga planu Cloudflare Enterprise.
Wymagania wstępne
- Plan Cloudflare Enterprise dla strefy, którą chcesz monitorować.
- Token API Cloudflare z następującymi uprawnieniami:
- Strefa → Strefa → Odczyt
- Zone → Logs → Edit
- Strefa → DNS → Odczyt (opcjonalnie, umożliwia Ahrefsowi sprawdzenie, czy twoje rekordy DNS są obsługiwane przez proxy)
- Tylko w przypadku konfiguracji ręcznej: lokalnie zainstalowane narzędzie
jq, którego polecenia konfiguracyjne używają do odczytywania i aktualizowania konfiguracji Cloudflare.
info
Logpush rejestruje tylko żądania, które przechodzą przez Cloudflare. Rekordy DNS ustawione na Tylko DNS (szara chmurka) kierują odwiedzających bezpośrednio do twojego serwera źródłowego, więc Bot Analytics nie otrzymuje dla nich żadnych danych. Upewnij się, że rekordy twojej domeny są ustawione jako Obsługiwane przez proxy (pomarańczowa chmurka); zobacz status proxy.
Limity i koszty
Zadanie Logpush wysyła wiersz logu dla każdego żądania skierowanego do twojej domeny i jej subdomen. Żądania z przeglądarek też są wysyłane; Ahrefs odrzuca wszystko, co nie jest botem.
warning
Cloudflare zezwala na maksymalnie 4 zadania Logpush na strefę. Jeśli w twojej strefie są już 4 takie zadania, konfiguracja nie powiedzie się, dopóki nie usuniesz jednego z nich.
Cloudflare mierzy użycie Logpush w nieskompresowanych bajtach dostarczonych danych. Sprawdź w swojej umowie Enterprise, jak jest to rozliczane, a szczegółowe informacje znajdziesz w Logpush.
Uzyskiwanie tokenu API Cloudflare
Upewnij się, że jesteś zalogowany(-a) do panelu Cloudflare Dashboard na właściwym koncie. Następnie przejdź na stronę https://dash.cloudflare.com/profile/api-tokens, znajdź i kliknij przycisk Utwórz token w prawym górnym rogu:
Teraz przejdź do procesu Create Custom Token:
Wypełnij poniższe informacje:
- Nazwa tokena API: ahrefs-bot-analytics
- Przyznaj następujące uprawnienia:
- Strefa / Dzienniki / Edytuj, abyśmy mogli skonfigurować zadanie Logpush wysyłające dzienniki do Ahrefs Bot Analytics
- Zone / Zone / Read — abyśmy mogli odnaleźć strefę do skonfigurowania
- Strefa / DNS / Odczyt (opcjonalnie), abyśmy mogli zweryfikować, czy dla Twoich rekordów DNS włączono proxy Cloudflare
- W polu Zone Resources możesz ustawić Include / All Zones; ewentualnie wybierz strefę odpowiadającą domenie Twojej witryny.
Teraz kliknij przycisk Continue to summary; podsumowanie powinno wyglądać tak:
Teraz kliknij przycisk Create Token i skopiuj wygenerowany token do schowka, aby użyć go w kolejnych krokach.
Więcej informacji znajdziesz w dokumentacji Cloudflare: jak utworzyć token API.
Automatyczna konfiguracja
- W Ahrefs przejdź do Ustawienia Projektu → Bot Analytics.
- Wybierz Cloudflare Logpush jako metodę.
- Wklej Token API Cloudflare i kliknij Połącz.
Ahrefs użyje Tokena, aby:
- Znaleźć strefę pasującą do domeny Twojego projektu.
- Sprawdzimy, czy dla Twoich rekordów DNS włączono proxy Cloudflare, i ostrzeżemy Cię, jeśli tak nie jest (wymaga opcjonalnego uprawnienia Strefa → DNS → Odczyt).
- Sprawdź istniejące zadania Logpush.
- Utworzyć nowe zadanie przesyłania logów do Ahrefs.
- Dodaj w strefie regułę niestandardowego pola dziennika, aby logi zawierały nagłówki żądania weryfikacji bota (
signature,signature-inputisignature-agent) oraz nagłówek odpowiedziLocation, który pokazuje, dokąd przekierowanie wysłało bota. Zadanie żąda pólRequestHeadersiResponseHeaders, aby je otrzymać. Istniejące reguły w twojej strefie zostaną zachowane.
info
Zadanie utworzone przed dodaniem nagłówka Location nie wysyła go. Połącz ponownie lub uruchom ponownie konfigurację ręczną, aby zastąpić zadanie i regułę.
info
Twój token zostanie użyty tylko raz i nie będzie przechowywany.
Konfiguracja ręczna
Jeśli wolisz nie podawać tokena, możesz skonfigurować zadanie Logpush ręcznie za pomocą API Cloudflare.
Krok 1 — uzyskaj swój token API
-
Przejdź do swojego Dashboard w Cloudflare i wybierz domenę swojej witryny.
-
Kliknij opcję „Uzyskaj swój token API” i utwórz nowy token z następującymi uprawnieniami:
- Strefa → Strefa → Odczyt
- Zone → Logs → Edit
Szczegółowe instrukcje znajdziesz w sekcji Obtaining API token.
info
Nie musisz sprawdzać swojego identyfikatora strefy. Polecenia znajdują strefę na podstawie twojej domeny przy użyciu uprawnienia Zone → Zone → Read.
Krok 2 — Utwórz zadanie Logpush
Wklej swój token API do pierwszego bloku, a następnie uruchamiaj w terminalu każdy z poniższych bloków po kolei, sprawdzając, czy każdy z nich kończy się bez błędu. Razem znajdują twoją strefę, tworzą zadanie Logpush i dodają regułę niestandardowego pola dziennika opisaną w sekcji Automatyczna konfiguracja. Dokładne polecenia, wstępnie uzupełnione danymi Twojego projektu, znajdziesz w Ustawienia projektu → Bot Analytics → Skonfiguruj ręcznie.
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
Pola BotScore, BotScoreSrc i BotTags są dostępne tylko w ramach subskrypcji Cloudflare Bot Management. Bot Analytics działa jednak bez nich, choć ich uwzględnienie poprawia klasyfikację botów. Jeśli w Twojej strefie nie ma usługi Bot Management, usuń te trzy pola z field_names przed utworzeniem zadania.
warning
Adres URL destination_conf oraz klucz właściwości są unikalne dla Twojego projektu. Aby mieć pewność, że wartości są poprawne, skopiuj dokładne polecenia ze strony Ustawienia projektu → Bot Analytics.
Krok 3 — Sprawdź połączenie
Po utworzeniu zadania wróć do Ustawienia projektu → Analityka bota w Ahrefs i kliknij Sprawdź status, aby upewnić się, że dane są odbierane. Jeśli nie pojawią się żadne dane, sprawdź, czy dla Twoich rekordów DNS włączono proxy.