Docs
Cari dokumen...⌘K

Cloudflare Worker

Cloudflare Worker menjalankan skrip pada setiap permintaan yang mengirim data ke Ahrefs. Metode ini berfungsi dengan paket Cloudflare apa pun, termasuk Free. Permintaan dari browser juga dikirim; Ahrefs membuang semua yang bukan bot.

Untuk setiap permintaan, worker mengirim URL, kode status, jenis konten, dan untuk pengalihan, header respons Location, sehingga Bot Analytics dapat menampilkan ke mana sebuah pengalihan mengarahkan bot. Worker yang di-deploy sebelum Location ditambahkan akan terus mengirim data lama sampai Anda menyambungkannya lagi atau men-deploy ulang.

Prasyarat

  • Akun Cloudflare dengan domain situs web Anda yang sudah ditambahkan sebagai zona.
  • Token API Cloudflare dengan izin berikut:
    • Akun → Skrip Workers → Edit
    • Zona → Rute Workers → Edit
    • Zona → Zona → Baca
    • Zona → DNS → Baca (opsional, memungkinkan Ahrefs memverifikasi bahwa record DNS Anda diproksikan)

info

Worker hanya dijalankan untuk permintaan yang melewati Cloudflare. Record DNS yang disetel ke DNS saja (awan abu-abu) mengarahkan pengunjung langsung ke origin Anda, jadi Bot Analytics tidak menerima data apa pun untuk record tersebut. Pastikan record untuk domain Anda disetel ke Diproksikan (awan oranye), lihat status proxy.

Kuota permintaan Workers

warning

Worker berjalan pada setiap permintaan ke situs Anda, jadi setiap permintaan akan dihitung ke dalam kuota permintaan Cloudflare Workers Anda. Paket Gratis mengizinkan 100.000 permintaan per hari, yang dibagi oleh semua worker dalam akun tersebut. Situs dengan lalu lintas tinggi bisa menghabiskannya.

Ahrefs membuat rute dengan request_limit_fail_open disetel ke true. Saat kuota habis, Cloudflare melewati worker dan tetap menyajikan situs Anda seperti biasa. Bot Analytics tidak menerima data apa pun sampai kuota direset. Lihat batasan Workers untuk kuota di setiap paket.

Jika situs Anda mendapatkan trafik lebih banyak daripada yang diizinkan kuota, upgrade ke Workers Paid atau gunakan Cloudflare Logpush pada paket Enterprise.

Mendapatkan token API Cloudflare

Pastikan Anda masuk ke Dashboard Cloudflare dengan akun yang benar. Lalu buka halaman https://dash.cloudflare.com/profile/api-tokens, temukan dan klik tombol Create Token di kanan atas:

Buat Token

Sekarang lanjutkan dengan alur Buat Token Kustom:

Buat Token Kustom

Isi informasi berikut:

  • Nama token API: ahrefs-bot-analytics
  • Berikan izin berikut:
    • Account / Workers Script / Edit agar kami dapat mengunggah skrip worker untuk melacak kunjungan bot
    • Zone / Workers Routes / Edit agar kami dapat menetapkan skrip worker untuk dijalankan pada permintaan
    • Zone / Zone / Read agar kami dapat menemukan zone yang akan dikonfigurasi
    • Zona / DNS / Baca (opsional) agar kami dapat memverifikasi bahwa catatan DNS Anda diproksikan melalui Cloudflare
  • Account Resources dapat diatur ke Include / All Accounts; sebagai alternatif, batasi cakupannya ke akun yang meng-host situs web tersebut.
  • Zone Resources dapat diatur ke Include / All Zones; sebagai alternatif, pilih Zone yang sesuai dengan domain situs web Anda.

Formulir yang sudah diisi seharusnya terlihat seperti ini:

Konfigurasi Token

Sekarang klik tombol Continue to summary; ringkasannya seharusnya terlihat seperti ini:

Ringkasan Token

Sekarang klik tombol Create Token dan salin token yang dihasilkan ke clipboard untuk digunakan pada langkah-langkah berikutnya.

Lihat dokumentasi Cloudflare tentang cara membuat token API untuk informasi tambahan.

Penyiapan otomatis

  1. Di Ahrefs, buka Pengaturan Proyek → Bot Analytics.
  2. Pilih Cloudflare Worker sebagai metode.
  3. Tempel Token API Cloudflare Anda lalu klik Connect.

Ahrefs akan menggunakan token Anda untuk:

  1. Menemukan zona yang sesuai dengan domain Proyek Anda.
  2. Memeriksa apakah catatan DNS Anda diproksikan melalui Cloudflare, dan memperingatkan Anda jika tidak (memerlukan izin opsional Zona → DNS → Baca).
  3. Tempatkan worker analytics Ahrefs.
  4. Siapkan rute untuk dijalankan pada semua permintaan.

info

Token Anda digunakan sekali dan tidak disimpan.

Penyiapan manual

Jika Anda memilih untuk tidak memberikan token API, Anda dapat men-deploy worker secara manual menggunakan API Cloudflare.

Langkah 1 — Dapatkan Account ID, Zone ID, dan Token API Anda

  1. Buka Dashboard Cloudflare Anda dan pilih domain situs web Anda.

  2. Temukan $ACCOUNT_ID dan $ZONE_ID Anda di Dashboard.

  3. Klik "Dapatkan token API Anda" dan buat token baru dengan izin berikut:

    • Akun → Skrip Workers → Edit
    • Zona → Rute Workers → Edit
    • Zona → Zona → Baca

    Lihat Mendapatkan token API untuk petunjuk terperinci.

Langkah 2 — Deploy worker

Anda dapat menemukan perintah yang sudah diisi dengan detail Proyek Anda di Pengaturan Proyek → Bot Analytics → Siapkan secara manual.

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

Ganti yourwebsite.com dengan domain Anda.

warning

WA_CF_DATA_KEY dan pola rute bersifat unik untuk Proyek Anda. Salin perintah yang tepat dari halaman Pengaturan Proyek → Bot Analytics untuk memastikan nilainya benar.

Langkah 3 — Verifikasi koneksi

Setelah men-deploy worker dan membuat rute, kembali ke Pengaturan Proyek → Bot Analytics di Ahrefs dan klik Periksa status untuk memverifikasi bahwa data sudah diterima. Jika tidak ada data yang masuk, periksa apakah catatan DNS Anda diproksikan.