Cloudflare Logpush
Cloudflare Logpush автоматично надсилає журнали HTTP-запитів до Ahrefs. Це рекомендований метод для сайтів із великим трафіком, але він потребує плану Cloudflare Enterprise.
Передумови
- План Cloudflare Enterprise для зони, яку ви хочете відстежувати.
- Токен Cloudflare API з такими дозволами:
- Зона → Zone → Read
- Zone → Logs → Edit
- Лише для ручного налаштування: локально встановлений
jq, який команди налаштування використовують для читання й оновлення конфігурації Cloudflare.
Отримання 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 — щоб ми могли знайти зону для налаштування
- Zone Resources можна встановити як Include / All Zones або вибрати Zone, що відповідає домену вашого сайту.
Тепер натисніть кнопку Continue to summary, підсумок має виглядати так:
Тепер натисніть кнопку Create Token і скопіюйте згенерований токен у буфер обміну, щоб використати його на наступних кроках.
Додаткову інформацію дивіться в документації Cloudflare: як створити API-токен.
Автоматичне налаштування
- В Ahrefs перейдіть до Налаштування проєкту → Bot Analytics.
- Виберіть Cloudflare Logpush як метод.
- Вставте свій токен Cloudflare API і натисніть Підключити.
Ahrefs використає ваш токен, щоб:
- Знайти зону, що відповідає домену вашого проєкту.
- Перевірити наявні завдання Logpush.
- Створити нове завдання з надсилання журналів до Ahrefs.
- Додайте до зони правило для користувацького поля журналу, щоб заголовки перевірки ботів (
signature,signature-inputіsignature-agent) включалися до журналів. Наявні правила у вашій зоні буде збережено.
info
Токен використовується один раз і не зберігається.
Ручне налаштування
Якщо ви не хочете надавати токен API, ви можете налаштувати завдання Logpush вручну через Cloudflare API.
Крок 1 — отримайте свій API-токен
-
Перейдіть до Cloudflare Dashboard і виберіть домен вашого вебсайту.
-
Клацніть на «Отримати API-токен» і створіть токен із такими дозволами:
- Зона → Zone → Read
- Zone → Logs → Edit
Детальні інструкції див. у розділі Отримання API-токена.
info
Вам не потрібно шукати ідентифікатор своєї зони. Ці команди знаходять зону за вашим доменом, використовуючи дозвіл Zone → Zone → Read.
Крок 2 — Створіть завдання Logpush
Вставте свій API-токен у перший блок, а потім запускайте в терміналі кожен блок нижче по черзі, перевіряючи, щоб кожен завершувався без помилки. Разом вони знаходять вашу зону, створюють завдання Logpush і додають правило для користувацького поля журналу, описане в розділі Автоматичне налаштування. Точні команди, уже заповнені даними вашого проєкту, можна знайти в розділі Налаштування проєкту → Аналітика ботів → Налаштувати вручну.
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"],"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"}]}}])}')
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 і ключ властивості унікальні для вашого проєкту. Скопіюйте точні команди зі сторінки Налаштування проєкту → Аналітика ботів, щоб використати правильні значення.
Крок 3 — Перевірте підключення
Після створення завдання поверніться в Ahrefs до Налаштування проєкту → Аналітика ботів і натисніть Перевірити статус, щоб переконатися, що дані надходять.