Docs
Pesquisar na documentação...⌘K

Worker da Cloudflare

Um Cloudflare Worker executa um script em cada solicitação que envia dados para a Ahrefs. Este método funciona com qualquer plano da Cloudflare, inclusive o Free. As solicitações de navegadores também são enviadas; a Ahrefs descarta tudo o que não é bot.

Para cada solicitação, o worker envia a URL, o código de status, o tipo de conteúdo e, para redirecionamentos, o cabeçalho de resposta Location, para que o Bot Analytics possa mostrar para onde um redirecionamento enviou o bot. Um worker implantado antes de o Location ser adicionado continua enviando os dados antigos até você se conectar novamente ou reimplantá-lo.

Pré-requisitos

  • Uma conta da Cloudflare com o domínio do seu site adicionado como uma zona.
  • Um Token de API da Cloudflare com as seguintes permissões:
    • Conta → Scripts dos Workers → Editar
    • Zona → Rotas dos Workers → Editar
    • Zona → Zona → Leitura
    • Zona → DNS → Leitura (opcional; permite que a Ahrefs verifique se seus registros DNS estão com proxy)

info

O worker é executado apenas nas requisições que passam pela Cloudflare. Registros DNS definidos como Somente DNS (nuvem cinza) enviam os visitantes diretamente para sua origem, então o Bot Analytics não recebe dados desses registros. Garanta que os registros do seu domínio estejam Com proxy (nuvem laranja); consulte o status do proxy.

Cota de solicitações do Workers

warning

O worker é executado a cada solicitação ao seu site; portanto, cada solicitação conta para a sua cota de solicitações do Cloudflare Workers. O plano gratuito permite 100.000 solicitações por dia, compartilhadas por todos os workers da conta. Um site com muito tráfego pode consumir essa cota rapidamente.

A Ahrefs cria a rota com request_limit_fail_open definido como true. Quando a cota se esgota, o Cloudflare ignora o worker e entrega seu site normalmente. O Bot Analytics não recebe dados até que a cota seja redefinida. Consulte Limites do Workers para ver a cota de cada plano.

Se seu site receber mais tráfego do que a cota permite, faça uma atualização para o Workers Paid ou use o Cloudflare Logpush em um plano Enterprise.

Obtendo token de API do Cloudflare

Verifique se você está conectado ao Dashboard do Cloudflare com a conta correta. Em seguida, navegue até a página https://dash.cloudflare.com/profile/api-tokens, localize e clique no botão Criar Token no canto superior direito:

Criar token

Agora prossiga com o fluxo de Criar token personalizado:

Criar token personalizado

Preencha as seguintes informações:

  • Nome do token de API: ahrefs-bot-analytics
  • Conceda as seguintes permissões:
    • Conta / Script do Workers / Editar para que possamos enviar o script do worker para rastrear visitas de bots
    • Zona / Rotas do Workers / Editar para que possamos atribuir o script do worker para ser executado nas solicitações
    • Zona / Zona / Ler para que possamos localizar a zona a ser configurada
    • Zona / DNS / Leitura (opcional) para que possamos verificar se seus registros de DNS estão com proxy pela Cloudflare
  • Os recursos da conta podem ser definidos como Incluir / Todas as contas; como alternativa, restrinja ao que hospeda o site.
  • Os recursos da zona podem ser definidos como Incluir / Todas as zonas; como alternativa, selecione a zona que corresponde ao domínio do seu site.

O formulário preenchido deve ficar assim:

Configuração do token

Agora clique no botão Continue to summary; o resumo deve ficar assim:

Resumo do token

Agora clique no botão Criar token e copie o token gerado para a área de transferência para usar nas próximas etapas.

Consulte a documentação da Cloudflare sobre como criar um token de API para obter informações adicionais.

Configuração automática

  1. No Ahrefs, vá para Configurações do Projeto → Bot Analytics.
  2. Selecione Cloudflare Worker como o método.
  3. Cole seu Token de API do Cloudflare e clique em Conectar.

O Ahrefs vai usar seu token para:

  1. Encontrar a zona que corresponde ao domínio do seu projeto.
  2. Verificar se seus registros de DNS estão com proxy pela Cloudflare e avisar você caso não estejam (requer a permissão opcional Zona → DNS → Leitura).
  3. Implantar o worker do Ahrefs analytics.
  4. Configure uma rota para executar em todas as solicitações.

info

Seu token é usado uma vez e não é armazenado.

Configuração manual

Se você preferir não fornecer um Token de API, poderá implantar o worker manualmente usando a API da Cloudflare.

Etapa 1 — Obtenha seu ID da conta, ID da zona e Token de API

  1. Acesse seu Dashboard do Cloudflare e selecione o domínio do seu site.

  2. Encontre seu $ACCOUNT_ID e $ZONE_ID no Dashboard.

  3. Clique em "Obtenha seu token de API" e crie um novo token com as seguintes permissões:

    • Conta → Scripts dos Workers → Editar
    • Zona → Rotas dos Workers → Editar
    • Zona → Zona → Leitura

    Consulte Como obter token de API para instruções detalhadas.

Etapa 2 — Implante o worker

Você pode encontrar os comandos exatos, já preenchidos com os detalhes do seu projeto, em Configurações do Projeto → Bot Analytics → Configurar 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}'

Substitua yourwebsite.com pelo seu domínio.

warning

O WA_CF_DATA_KEY e o padrão de rota são exclusivos do seu Projeto. Copie os comandos exatos da sua página Configurações do Projeto → Bot Analytics para garantir os valores corretos.

Etapa 3 — Verificar a conexão

Depois de implantar o worker e criar a rota, volte para Configurações do Projeto → Bot Analytics na Ahrefs e clique em Verificar status para confirmar que os dados estão sendo recebidos. Se não chegarem dados, verifique se seus registros de DNS estão com proxy.