Docs
Пошук документації...⌘K

Cloudflare Logpush

Cloudflare Logpush автоматично надсилає журнали HTTP-запитів до Ahrefs. Це рекомендований метод для сайтів із великим трафіком, але він потребує плану Cloudflare Enterprise.

Передумови

  • План Cloudflare Enterprise для зони, яку ви хочете відстежувати.
  • Токен Cloudflare API з такими дозволами:
    • Зона → Zone → Read
    • Zone → Logs → Edit
    • Зона → DNS → Читання (необов’язково; дає змогу Ahrefs перевірити, що ваші DNS-записи проксійовані)
  • Лише для ручного налаштування: локально встановлений jq, який команди налаштування використовують для читання й оновлення конфігурації Cloudflare.

info

Logpush записує лише запити, що проходять через Cloudflare. DNS-записи, для яких установлено лише DNS (сіра хмара), спрямовують відвідувачів безпосередньо на ваш вихідний сервер, тож Bot Analytics не отримує для них даних. Переконайтеся, що записи для вашого домену мають статус Проксійовано (помаранчева хмара). Див. статус проксі.

Обмеження та вартість

Завдання Logpush надсилає рядок журналу для кожного запиту до вашого домену та його піддоменів. Запити від браузерів також надсилаються; Ahrefs відкидає все, що не є ботом.

warning

Cloudflare дозволяє максимум 4 завдання Logpush на одну зону. Якщо у вашій зоні вже є 4 такі завдання, налаштування завершиться невдало, доки ви не видалите одне з них.

Cloudflare вимірює використання Logpush у доставлених нестиснених байтах. Перевірте у своєму контракті Enterprise, як це тарифікується, а докладніше див. у Logpush.

Отримання API-токена Cloudflare

Переконайтеся, що ви ввійшли до Cloudflare Dashboard з правильним обліковим записом. Потім перейдіть на сторінку https://dash.cloudflare.com/profile/api-tokens, знайдіть і натисніть кнопку Create Token у верхньому правому куті:

Створити токен

Тепер перейдіть до процесу Створення власного токена:

Створити власний токен

Заповніть таку інформацію:

  • Назва API-токена: ahrefs-bot-analytics
  • Надайте такі дозволи:
    • Zone / Logs / Edit, щоб ми могли налаштувати завдання Logpush для надсилання журналів до Ahrefs Bot Analytics
    • Zone / Zone / Read — щоб ми могли знайти зону для налаштування
    • Зона / DNS / Читання (необов’язково), щоб ми могли перевірити, чи ваші записи DNS проксійовані через Cloudflare
  • Zone Resources можна встановити як Include / All Zones або вибрати Zone, що відповідає домену вашого сайту.
Налаштування токена

Тепер натисніть кнопку Continue to summary, підсумок має виглядати так:

Підсумок токена

Тепер натисніть кнопку Create Token і скопіюйте згенерований токен у буфер обміну, щоб використати його на наступних кроках.

Додаткову інформацію дивіться в документації Cloudflare: як створити API-токен.

Автоматичне налаштування

  1. В Ahrefs перейдіть до Налаштування проєкту → Bot Analytics.
  2. Виберіть Cloudflare Logpush як метод.
  3. Вставте свій токен Cloudflare API і натисніть Підключити.

Ahrefs використає ваш токен, щоб:

  1. Знайти зону, що відповідає домену вашого проєкту.
  2. Перевіряти, чи ваші записи DNS проксійовані через Cloudflare, і попереджати вас, якщо це не так (потрібен необов’язковий дозвіл Зона → DNS → Читання).
  3. Перевірити наявні завдання Logpush.
  4. Створити нове завдання з надсилання журналів до Ahrefs.
  5. Додайте до зони правило для користувацького поля журналу, щоб журнали містили заголовки запиту перевірки бота (signature, signature-input і signature-agent) і заголовок відповіді Location, який показує, куди перенаправлення відправило бота. Для отримання цих даних завдання запитує поля RequestHeaders і ResponseHeaders. Наявні правила у вашій зоні буде збережено.

info

Завдання, створене до додавання заголовка Location, не надсилає його. Підключіться знову або ще раз виконайте ручне налаштування, щоб замінити завдання та правило.

info

Токен використовується один раз і не зберігається.

Ручне налаштування

Якщо ви не хочете надавати токен API, ви можете налаштувати завдання Logpush вручну через Cloudflare API.

Крок 1 — отримайте свій API-токен

  1. Перейдіть до Cloudflare Dashboard і виберіть домен вашого вебсайту.

  2. Клацніть на «Отримати API-токен» і створіть токен із такими дозволами:

    • Зона → Zone → Read
    • Zone → Logs → Edit

    Детальні інструкції див. у розділі Отримання API-токена.

info

Вам не потрібно шукати ідентифікатор своєї зони. Ці команди знаходять зону за вашим доменом, використовуючи дозвіл Zone → Zone → Read.

Крок 2 — Створіть завдання Logpush

Вставте свій API-токен у перший блок, а потім запускайте в терміналі кожен блок нижче по черзі, перевіряючи, щоб кожен завершувався без помилки. Разом вони знаходять вашу зону, створюють завдання Logpush і додають правило для користувацького поля журналу, описане в розділі Автоматичне налаштування. Точні команди, уже заповнені даними вашого проєкту, можна знайти в розділі Налаштування проєкту → Bot Analytics → Налаштувати вручну.

export CF_TOKEN="<your Cloudflare API token>"
BASE="https://api.cloudflare.com/client/v4"

Find the Cloudflare zone for yourwebsite.com

ZONE_ID=$(curl -s --fail-with-body "$BASE/zones?name=yourwebsite.com&status=active&match=all" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -r '.result[0].id // error("no active Cloudflare zone found for yourwebsite.com")')

echo "ZONE_ID=$ZONE_ID"

Remove the existing Logpush job if present

OLD_JOB_ID=$(curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -r '([(.result // [])[] | select(.name == "ahrefs-web-analytics-http-requests")])[0].id // ""')

echo "OLD_JOB_ID=$OLD_JOB_ID"
if [ -n "$OLD_JOB_ID" ]; then
  curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs/$OLD_JOB_ID" -X DELETE \
    -H "Authorization: Bearer $CF_TOKEN"
fi

Create the Logpush job

curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs" -X POST \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary '{"name":"ahrefs-web-analytics-http-requests","destination_conf":"https://analytics.ahrefs.com/api/cf_logpush/http_requests?header_x-ahrefs-web-analytics-property=YOUR_PROPERTY_KEY","dataset":"http_requests","frequency":"high","filter":"{\"where\":{\"or\":[{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"yourwebsite.com\"},{\"key\":\"ClientRequestHost\",\"operator\":\"endsWith\",\"value\":\".yourwebsite.com\"}]}}","output_options":{"field_names":["ClientIP","ClientRequestMethod","ClientRequestHost","ClientRequestProtocol","ClientRequestScheme","ClientRequestURI","ClientRequestPath","ClientRequestUserAgent","ClientRequestReferer","EdgeStartTimestamp","EdgeEndTimestamp","EdgeResponseStatus","EdgeResponseBytes","EdgeResponseContentType","EdgeTimeToFirstByteMs","ClientCountry","ClientCity","ClientASN","ClientDeviceType","ClientRegionCode","BotScore","BotScoreSrc","BotTags","VerifiedBotCategory","RayID","RequestHeaders","ResponseHeaders"],"timestamp_format":"unixnano"},"enabled":true}'

Add the custom log fields rule

RULES=$(curl -s --fail-with-body "$BASE/zones/$ZONE_ID/rulesets/phases/http_log_custom_fields/entrypoint" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -c '.result.rules // []')

echo "RULES=$RULES"
BODY=$(jq -nc --argjson rules "$RULES" \
  '{rules: ([$rules[] | select(.description != "ahrefs-web-analytics-web-bot-auth-signature")] + [{"action":"log_custom_field","expression":"true","description":"ahrefs-web-analytics-web-bot-auth-signature","action_parameters":{"request_fields":[{"name":"signature"},{"name":"signature-input"},{"name":"signature-agent"}],"response_fields":[{"name":"location"}]}}])}')

curl -s --fail-with-body "$BASE/zones/$ZONE_ID/rulesets/phases/http_log_custom_fields/entrypoint" -X PUT \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary "$BODY"

info

Поля BotScore, BotScoreSrc і BotTags доступні лише за наявності підписки на Cloudflare Bot Management. Однак Bot Analytics працює і без них, хоча їх додавання покращує класифікацію ботів. Якщо для вашої зони не підключено Bot Management, вилучіть ці три поля з field_names перед створенням завдання.

warning

URL destination_conf і ключ властивості унікальні для вашого проєкту. Скопіюйте точні команди зі сторінки Налаштування проєкту → Bot Analytics, щоб використати правильні значення.

Крок 3 — Перевірте підключення

Після створення завдання поверніться в Ahrefs до Налаштування проєкту → Bot Analytics і натисніть Перевірити статус, щоб переконатися, що дані надходять. Якщо дані не надходять, перевірте, чи ваші записи DNS проксійовані.