Cloudflare Logpush
Cloudflare Logpush, HTTP istek günlüklerini Ahrefs'e otomatik olarak gönderir. Yüksek trafikli siteler için önerilen yöntemdir, ancak Cloudflare Kurumsal planı gerektirir.
Ön koşullar
- İzlemek istediğiniz zone için bir Cloudflare Kurumsal planı.
- Aşağıdaki izinlere sahip bir Cloudflare API Belirteci:
- Bölge → Bölge → Oku
- Zone → Logs → Edit
- Yalnızca manuel kurulum için: kurulum komutlarının Cloudflare yapılandırmanızı okumak ve güncellemek için kullandığı, yerel olarak yüklenmiş
jq.
Cloudflare API belirteci alınıyor
Cloudflare Dashboard’da doğru hesapla oturum açtığınızdan emin olun. Ardından https://dash.cloudflare.com/profile/api-tokens sayfasına gidin, sağ üst köşedeki Belirteç Oluştur düğmesini bulun ve tıklayın:
Şimdi Özel belirteç oluştur akışıyla devam edin:
Aşağıdaki bilgileri girin:
- API belirteci adı: ahrefs-bot-analytics
- Aşağıdaki izinleri verin:
- Ahrefs Bot Analytics'e günlük göndermek üzere bir Logpush işi yapılandırabilmemiz için Zone / Logs / Edit
- Yapılandırılacak bölgeyi bulabilmemiz adına Bölge / Bölge / Oku
- Bölge Kaynakları Dahil Et / Tüm Bölgeler olarak ayarlanabilir; alternatif olarak web sitenizin alan adıyla eşleşen bölgeyi seçin.
Şimdi Continue to summary düğmesine tıklayın; özet şu şekilde görünmelidir:
Şimdi Belirteç oluştur düğmesine tıklayın ve sonraki adımlarda kullanmak üzere oluşturulan belirteci panoya kopyalayın.
Ek bilgi için API belirteci oluşturma hakkında Cloudflare dokümantasyonuna göz atın.
Otomatik kurulum
- Ahrefs'te Proje Ayarları → Bot Analytics bölümüne gidin.
- Yöntem olarak Cloudflare Logpush'ı seçin.
- Cloudflare API belirtecinizi yapıştırın ve Bağlan'a tıklayın.
Ahrefs, belirtecinizi şu amaçlarla kullanır:
- Projenizin alan adıyla eşleşen zone'u bulun.
- Mevcut Logpush işlerini kontrol edin.
- Ahrefs'e günlük gönderen yeni bir iş oluşturun.
- Bot doğrulama başlıklarının (
signature,signature-inputvesignature-agent) günlüklerde yer alması için bölgeye özel bir günlük alanı kuralı ekleyin. Bölgenizdeki mevcut kurallar korunur.
info
Belirteciniz bir kez kullanılır ve saklanmaz.
Manuel kurulum
Bir API belirteci paylaşmak istemiyorsanız, Logpush işini Cloudflare API'sini kullanarak manuel olarak kurabilirsiniz.
Adım 1 — API belirtecinizi alın
-
Cloudflare Dashboard'unuza gidin ve web sitenizin alan adını seçin.
-
"API belirtecinizi alın" seçeneğine tıklayın ve şu izinlerle yeni bir belirteç oluşturun:
- Bölge → Bölge → Oku
- Zone → Logs → Edit
Ayrıntılı talimatlar için API belirteci edinme bölümüne bakın.
info
Bölge kimliğinizi bulmanız gerekmez. Komutlar, Bölge → Bölge → Okuma iznini kullanarak alan adınızdan bölgeyi bulur.
2. Adım — Logpush işini oluşturun
İlk bloğa API belirtecinizi girin, ardından aşağıdaki her bloğu terminalinizde teker teker çalıştırın ve her birinin hatasız tamamlandığını kontrol edin. Birlikte bölgenizi bulur, Logpush görevini oluşturur ve Otomatik kurulum bölümünde açıklanan özel günlük kaydı alanı kuralını ekler. Projenizin ayrıntılarıyla önceden doldurulmuş komutları Proje Ayarları → Bot Analytics → Manuel olarak ayarla bölümünde bulabilirsiniz.
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
BotScore, BotScoreSrc ve BotTags alanları yalnızca bir Cloudflare Bot Management aboneliğiyle kullanılabilir. Yine de Bot Analytics bunlar olmadan da çalışır; ancak bunları dahil etmek bot sınıflandırmasını iyileştirir. Zonunuzda Bot Management yoksa, işi oluşturmadan önce field_names içinden bu üç alanı kaldırın.
warning
destination_conf URL'si ve özellik anahtarı projenize özeldir. Doğru değerleri kullandığınızdan emin olmak için, komutların aynısını Proje Ayarları → Bot Analytics sayfanızdan kopyalayın.
Adım 3 — Bağlantıyı doğrulayın
İşi oluşturduktan sonra Ahrefs'te Proje Ayarları → Bot Analizleri bölümüne geri dönün ve verilerin alındığını doğrulamak için Durumu kontrol et seçeneğine tıklayın.