Docs
Szukaj w dokumentacji...⌘K

Cloudflare Worker

Cloudflare Worker uruchamia przy każdym żądaniu skrypt, który wysyła dane do Ahrefs. Ta metoda działa w każdym planie Cloudflare, w tym Free. Żądania z przeglądarek też są wysyłane; Ahrefs odrzuca wszystko, co nie jest botem.

W przypadku każdego żądania worker wysyła URL, kod statusu, typ zawartości oraz — w przypadku przekierowań — nagłówek odpowiedzi Location, dzięki czemu Bot Analytics może pokazać, dokąd przekierowanie wysłało bota. Worker wdrożony przed dodaniem Location nadal wysyła stare dane, dopóki nie połączysz się ponownie lub nie wdrożysz go ponownie.

Wymagania wstępne

  • Konto Cloudflare z domeną Twojej witryny dodaną jako strefa.
  • Token API Cloudflare z następującymi uprawnieniami:
    • Konto → Skrypty Worker → Edytuj
    • Strefa → Trasy skryptów Worker → Edytuj
    • Strefa → Strefa → Odczyt
    • Strefa → DNS → Odczyt (opcjonalnie, umożliwia Ahrefsowi sprawdzenie, czy twoje rekordy DNS są obsługiwane przez proxy)

info

Worker działa tylko w przypadku żądań przechodzących 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.

Limit żądań Cloudflare Workers

warning

Worker uruchamia się przy każdym żądaniu do twojej witryny, więc każde żądanie wlicza się do limitu żądań Cloudflare Workers. Plan Free pozwala na 100 000 żądań dziennie, współdzielonych przez wszystkie workery na koncie. Witryna o dużym ruchu może szybko wyczerpać ten limit.

Ahrefs tworzy trasę z parametrem request_limit_fail_open ustawionym na true. Gdy limit zostanie wyczerpany, Cloudflare pomija workera i wyświetla Twoją witrynę jak zwykle. Bot Analytics nie otrzymuje żadnych danych do momentu zresetowania limitu. Zobacz limity Workers, aby sprawdzić limit dla każdego planu.

Jeśli Twoja witryna generuje więcej ruchu, niż pozwala limit, dokonaj aktualizacji do Workers Paid lub użyj Cloudflare Logpush w planie Enterprise.

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:

Utwórz token

Teraz przejdź do procesu Create Custom Token:

Utwórz niestandardowy Token

Wypełnij poniższe informacje:

  • Nazwa tokena API: ahrefs-bot-analytics
  • Przyznaj następujące uprawnienia:
    • Account / Workers Script / Edit — abyśmy mogli przesłać skrypt workera do śledzenia wizyt botów
    • Zone / Workers Routes / Edit — abyśmy mogli przypisać skrypt workera do uruchamiania dla żądań
    • 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 Account Resources możesz ustawić Include / All Accounts; ewentualnie zawęź zakres do konta, na którym hostowana jest witryna.
  • W polu Zone Resources możesz ustawić Include / All Zones; ewentualnie wybierz strefę odpowiadającą domenie Twojej witryny.

Wypełniony formularz powinien wyglądać tak:

Konfiguracja tokena

Teraz kliknij przycisk Continue to summary; podsumowanie powinno wyglądać tak:

Podsumowanie tokena

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

  1. W Ahrefs przejdź do Ustawienia Projektu → Bot Analytics.
  2. Wybierz Cloudflare Worker jako metodę.
  3. Wklej Token API Cloudflare i kliknij Połącz.

Ahrefs użyje Tokena, aby:

  1. Znaleźć strefę pasującą do domeny Twojego projektu.
  2. 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).
  3. Wdróż skrypt Worker w ramach analityki Ahrefs.
  4. Skonfiguruj trasę, aby uruchamiała się przy każdym żądaniu.

info

Twój token zostanie użyty tylko raz i nie będzie przechowywany.

Konfiguracja ręczna

Jeśli wolisz nie podawać tokenu API, możesz wdrożyć workera ręcznie za pomocą Cloudflare API.

Krok 1 — Uzyskaj Account ID, Zone ID i Token API

  1. Przejdź do swojego Dashboard w Cloudflare i wybierz domenę swojej witryny.

  2. Znajdź swoje $ACCOUNT_ID i $ZONE_ID w Dashboard.

  3. Kliknij opcję „Uzyskaj swój token API” i utwórz nowy token z następującymi uprawnieniami:

    • Konto → Skrypty Worker → Edytuj
    • Strefa → Trasy skryptów Worker → Edytuj
    • Strefa → Strefa → Odczyt

    Szczegółowe instrukcje znajdziesz w sekcji Obtaining API token.

Krok 2 — Wdróż workera

Dokładne polecenia, wstępnie uzupełnione danymi Twojego projektu, znajdziesz w Ustawienia projektu → Bot Analytics → Skonfiguruj ręcznie.

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}'

Zastąp yourwebsite.com swoją domeną.

warning

WA_CF_DATA_KEY i wzorzec trasy 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 wdrożeniu workera i utworzeniu trasy wróć do Ustawienia projektu → Bot Analytics w Ahrefs i kliknij Sprawdź status, aby potwierdzić, że dane są odbierane. Jeśli nie pojawią się żadne dane, sprawdź, czy dla Twoich rekordów DNS włączono proxy.