Cloudflare Çalışanı
Bir Cloudflare Worker, Ahrefs'e veri gönderen her istekte bir betik çalıştırır. Bu yöntem, Ücretsiz dahil her Cloudflare planıyla çalışır. Tarayıcılardan gelen istekler de gönderilir; Ahrefs bot olmayan her şeyi eler.
Worker, her istek için URL’yi, durum kodunu, içerik türünü ve yönlendirmeler için Location yanıt başlığını gönderir; böylece Bot Analytics, bir yönlendirmenin botu nereye gönderdiğini gösterebilir. Location eklenmeden önce dağıtılan bir worker, siz yeniden bağlanana veya onu yeniden dağıtana kadar eski verileri göndermeye devam eder.
Ön koşullar
- Web sitenizin alan adının bir zone olarak eklendiği bir Cloudflare hesabı.
- Aşağıdaki izinlere sahip bir Cloudflare API Belirteci:
- Hesap → Workers Komut Dosyaları → Düzenle
- Bölge → Workers Rotaları → Düzenle
- Bölge → Bölge → Oku
- Bölge → DNS → Okuma (isteğe bağlı; Ahrefs’in DNS kayıtlarınızın proxy üzerinden geçirildiğini doğrulamasına olanak tanır)
info
Worker yalnızca Cloudflare üzerinden geçen isteklerde çalışır. Yalnızca DNS (gri bulut) olarak ayarlanan DNS kayıtları ziyaretçileri doğrudan origin’inize gönderir; bu nedenle Bot Analytics bunlar için veri almaz. Alan adınızın kayıtlarının Proxy’li (turuncu bulut) olduğundan emin olun; proxy durumuna bakın.
Workers istek kotası
warning
Worker, sitenize gelen her istekte çalışır; bu nedenle her istek Cloudflare Workers istek kotanıza dahil edilir. Ücretsiz plan, hesapta bulunan tüm worker’lar tarafından paylaşılan, günde 100.000 isteğe izin verir. Yüksek trafikli bir site, bunu tüketebilir.
Ahrefs, request_limit_fail_open değeri true olarak ayarlanmış bir rota oluşturur. Kota dolduğunda Cloudflare worker’ı atlar ve sitenizi her zamanki gibi sunar. Kota sıfırlanana kadar Bot Analytics hiçbir veri almaz. Her plandaki kota bilgisi için Workers sınırları bölümüne bakın.
Siteniz kotanın izin verdiğinden daha fazla trafik alıyorsa Workers Paid’e yükseltin veya Enterprise planında Cloudflare Logpush kullanın.
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:
- Bot ziyaretlerini izlemek için worker script'ini yükleyebilmemiz adına Hesap / Workers Script / Düzenle
- Worker script'ini isteklerde çalışacak şekilde atayabilmemiz adına Bölge / Workers Routes / Düzenle
- Yapılandırılacak bölgeyi bulabilmemiz adına Bölge / Bölge / Oku
- DNS kayıtlarınızın Cloudflare üzerinden proxy’lendiğini doğrulayabilmemiz için Zone / DNS / Read (isteğe bağlı)
- Hesap Kaynakları Dahil Et / Tüm Hesaplar olarak ayarlanabilir; alternatif olarak, web sitesini barındıran hesapla sınırlandırın.
- 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.
Doldurulmuş form şöyle görünmelidir:
Ş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 Worker 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.
- DNS kayıtlarınızın Cloudflare üzerinden proxy’lendiğini kontrol eder ve değilse sizi uyarır (isteğe bağlı Zone → DNS → Read izni gerekir).
- Ahrefs analiz çalışanını yayınlayın.
- Tüm isteklerde çalışacak bir rota ayarlayın.
info
Belirteciniz bir kez kullanılır ve saklanmaz.
Manuel kurulum
Bir API Belirteci sağlamayı tercih etmiyorsanız, worker'ı Cloudflare API'sini kullanarak manuel olarak dağıtabilirsiniz.
Adım 1 — Hesap Kimliğinizi, Bölge Kimliğinizi ve API Belirtecinizi alın
-
Cloudflare Dashboard'unuza gidin ve web sitenizin alan adını seçin.
-
Dashboard'da
$ACCOUNT_IDve$ZONE_IDdeğerlerinizi bulun. -
"API belirtecinizi alın" seçeneğine tıklayın ve şu izinlerle yeni bir belirteç oluşturun:
- Hesap → Workers Komut Dosyaları → Düzenle
- Bölge → Workers Rotaları → Düzenle
- Bölge → Bölge → Oku
Ayrıntılı talimatlar için API belirteci edinme bölümüne bakın.
Adım 2 — Worker'ı dağıtın
Projenizin ayrıntılarıyla önceden doldurulmuş komutları Proje Ayarları → Bot Analytics → Manuel olarak ayarla bölümünde bulabilirsiniz.
Upload the Worker script
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/workers/scripts/ahrefs--bot-analytics--YOUR_SCRIPT_ID" \
-X PUT \
-H "Authorization: Bearer $CF_TOKEN" \
-H "Content-Type: application/javascript" \
--data-binary '
const WA_ENDPOINT = "https://analytics.ahrefs.com/api/cf_worker";
const WA_SCRIPT = "https://analytics.ahrefs.com/analytics.js";
const WA_CF_DATA_KEY = "YOUR_DATA_KEY";
const WA_DATA_KEY = "";
async function handleBotAnalytics(event, response) {
let request = event.request;
event.waitUntil(sendAnalytics(request, response));
return response;
}
async function sendAnalytics(request, response) {
try {
let referer = request.headers.get("referer") || "";
let userAgent = request.headers.get("user-agent") || "";
let ip = request.headers.get("cf-connecting-ip") || "";
let contentType = response.headers.get("content-type") || "";
let payload = {
n: "serverpageview",
u: request.url,
ip: ip,
ua: userAgent,
ct: contentType,
m: request.method,
s: response.status,
k: WA_CF_DATA_KEY,
r: referer,
}
let hs = {};
for (let name of ["signature", "signature-input", "signature-agent"]) {
let value = request.headers.get(name);
if (value) hs[name] = value;
}
if (Object.keys(hs).length > 0) payload.hs = hs;
let rhs = {};
for (let name of ["location"]) {
let value = response.headers.get(name);
if (value) rhs[name] = value;
}
if (Object.keys(rhs).length > 0) payload.rhs = rhs;
let analyticsResponse = await fetch(WA_ENDPOINT, {
method: "POST",
body: JSON.stringify(payload)
})
if (!analyticsResponse.ok) {
console.error("ahrefs bot analytics error:", analyticsResponse.status, analyticsResponse.statusText)
}
} catch (error) {
console.error("ahrefs bot analytics error:", error.message)
}
}
addEventListener("fetch", event => {
event.respondWith((async () => {
let response = await fetch(event.request);
response = await handleBotAnalytics(event, response);
return response;
})());
});
'
Create the route
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \
-X POST \
-H "Authorization: Bearer $CF_TOKEN" \
-H "Content-Type: application/json" \
--data-binary '{"pattern":"*youwebsite.com/*","script":"ahrefs--bot-analytics--YOUR_SCRIPT_ID","request_limit_fail_open":true}'
yourwebsite.com ifadesini alan adınızla değiştirin.
warning
WA_CF_DATA_KEY ve rota deseni 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
Worker'ı dağıttıktan ve rotayı oluşturduktan sonra, Ahrefs'te Proje Ayarları → Bot Analytics 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. Veri gelmiyorsa DNS kayıtlarınızın proxy’lendiğini kontrol edin.