Docs
Cerca nella documentazione...⌘K

Worker Cloudflare

Un Cloudflare Worker esegue uno script su ogni richiesta che invia dati ad Ahrefs. Questo metodo funziona con qualsiasi piano Cloudflare, incluso Free. Vengono inviate anche le richieste dei browser; Ahrefs elimina tutto ciò che non è un bot.

Per ogni richiesta, il worker invia l’URL, il codice di stato, il tipo di contenuto e, in caso di reindirizzamenti, l’header di risposta Location, così Bot Analytics può mostrare dove il reindirizzamento ha inviato il bot. Un worker distribuito prima che venisse aggiunto l’header Location continua a inviare i dati precedenti finché non ti riconnetti o lo ridistribuisci.

Prerequisiti

  • Un account Cloudflare con il dominio del tuo sito web aggiunto come zona.
  • Un Token API di Cloudflare con le seguenti autorizzazioni:
    • Account → Script worker → Modifica
    • Zona → Percorsi worker → Modifica
    • Zona → Zona → Lettura
    • Zona → DNS → Lettura (facoltativo, consente ad Ahrefs di verificare che i tuoi record DNS siano configurati con proxy)

info

Il worker viene eseguito solo per le richieste che passano attraverso Cloudflare. I record DNS impostati su Solo DNS (nuvola grigia) inviano i visitatori direttamente all’origine, quindi Bot Analytics non riceve alcun dato per quei record. Assicurati che i record del tuo dominio siano Con proxy (nuvola arancione); vedi lo stato del proxy.

Quota di richieste dei worker

warning

Il worker viene eseguito a ogni richiesta al tuo sito, quindi ogni richiesta conta ai fini della quota di richieste di Cloudflare Workers. Il piano Free consente 100.000 richieste al giorno, condivise da tutti i worker dell’account. Un sito con traffico elevato può esaurirla.

Ahrefs crea la route con request_limit_fail_open impostato su true. Quando la quota si esaurisce, Cloudflare ignora il worker e serve il tuo sito come di consueto. Bot Analytics non riceve alcun dato finché la quota non viene reimpostata. Consulta Limiti di Workers per la quota prevista per ciascun piano.

Se il tuo sito riceve più traffico di quanto consentito dalla quota, effettua l’aggiornamento a Workers Paid oppure utilizza Cloudflare Logpush con un piano Enterprise.

Ottenimento del token API di Cloudflare

Assicurati di aver effettuato l’accesso alla Dashboard di Cloudflare con l’account corretto. Quindi vai alla pagina https://dash.cloudflare.com/profile/api-tokens, individua e fai clic sul pulsante Crea token in alto a destra:

Crea token

Ora procedi con il flusso Crea token personalizzato:

Crea token personalizzato

Inserisci le seguenti informazioni:

  • Nome del token API: ahrefs-bot-analytics
  • Concedi le seguenti autorizzazioni:
    • Account / Workers Script / Edit per consentirci di caricare lo script Worker per tracciare le visite dei bot
    • Zone / Workers Routes / Edit per consentirci di assegnare lo script Worker in modo che venga eseguito sulle richieste
    • Zone / Zone / Read per consentirci di individuare la zona da configurare
    • Zona / DNS / Lettura (facoltativo) in modo da poter verificare che i tuoi record DNS abbiano il proxy attivato tramite Cloudflare
  • Le risorse dell’account possono essere impostate su Include / All Accounts; in alternativa, limita l’ambito a quello che ospita il sito web.
  • Le risorse della zona possono essere impostate su Include / All Zones; in alternativa, seleziona la zona che corrisponde al dominio del tuo sito web.

Il modulo compilato dovrebbe apparire così:

Configurazione token

Ora fai clic sul pulsante Continua al riepilogo; il riepilogo dovrebbe apparire così:

Riepilogo token

Ora fai clic sul pulsante Crea token e copia il token generato negli appunti per usarlo nei passaggi successivi.

Per ulteriori informazioni, consulta la documentazione di Cloudflare su come creare un token API.

Configurazione automatica

  1. In Ahrefs, vai su Impostazioni del Progetto → Bot Analytics.
  2. Seleziona Cloudflare Worker come metodo.
  3. Incolla il tuo Token API di Cloudflare e fai clic su Connetti.

Ahrefs userà il tuo Token per:

  1. Trovare la zona corrispondente al dominio del tuo Progetto.
  2. Controllare che i tuoi record DNS abbiano il proxy attivato tramite Cloudflare e avvisarti se non lo hanno (richiede l’autorizzazione opzionale Zona → DNS → Lettura).
  3. Distribuisci il worker di analisi di Ahrefs.
  4. Imposta un percorso (rotta) da eseguire su tutte le richieste.

info

Il tuo token viene usato una sola volta e non viene memorizzato.

Configurazione manuale

Se preferisci non fornire un Token API, puoi distribuire il worker manualmente usando l'API di Cloudflare.

Passaggio 1 — Ottieni il tuo ID account, ID zona e Token API

  1. Vai alla tua Dashboard di Cloudflare (https://dash.cloudflare.com/) e seleziona il dominio del tuo sito web.

  2. Trova il tuo $ACCOUNT_ID e $ZONE_ID nella Dashboard.

  3. Fai clic su "Ottieni token API" e crea un nuovo token con le seguenti autorizzazioni:

    • Account → Script worker → Modifica
    • Zona → Percorsi worker → Modifica
    • Zona → Zona → Lettura

    Consulta Ottenere un token API per istruzioni dettagliate.

Passaggio 2 — Distribuisci il worker

Puoi trovare i comandi esatti precompilati con i dettagli del tuo progetto in Impostazioni del Progetto → Bot Analytics → Configura manualmente.

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

Sostituisci yourwebsite.com con il tuo dominio.

warning

Il WA_CF_DATA_KEY e il pattern della route sono univoci per il tuo progetto. Copia i comandi esatti dalla pagina Impostazioni del Progetto → Bot Analytics per assicurarti che i valori siano corretti.

Passaggio 3 — Verifica la connessione

Dopo aver distribuito il worker e creato la route, torna in Impostazioni del Progetto → Bot Analytics in Ahrefs e fai clic su Controlla stato per verificare che i dati vengano ricevuti. Se non arrivano dati, verifica che i tuoi record DNS abbiano il proxy attivato.