Docs
Dokümanlarda ara...⌘K

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:

Belirteç oluştur

Şimdi Özel belirteç oluştur akışıyla devam edin:

Özel belirteç oluştur

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:

Belirteç yapılandırması

Şimdi Continue to summary düğmesine tıklayın; özet şu şekilde görünmelidir:

Belirteç özeti

Ş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

  1. Ahrefs'te Proje Ayarları → Bot Analytics bölümüne gidin.
  2. Yöntem olarak Cloudflare Worker seçin.
  3. Cloudflare API belirtecinizi yapıştırın ve Bağlan'a tıklayın.

Ahrefs, belirtecinizi şu amaçlarla kullanır:

  1. Projenizin alan adıyla eşleşen zone'u bulun.
  2. 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).
  3. Ahrefs analiz çalışanını yayınlayın.
  4. 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

  1. Cloudflare Dashboard'unuza gidin ve web sitenizin alan adını seçin.

  2. Dashboard'da $ACCOUNT_ID ve $ZONE_ID değerlerinizi bulun.

  3. "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.