Cloudflare 워커
Cloudflare Worker는 각 요청마다 스크립트를 실행하여 데이터를 Ahrefs로 전송합니다. 이 방법은 Free를 포함한 모든 Cloudflare 요금제에서 작동합니다.
사전 준비 사항
- 웹사이트 도메인이 영역으로 추가된 Cloudflare 계정.
- 다음 권한이 있는 Cloudflare API 토큰:
- 계정 → 워커 스크립트 → 편집
- 영역 → 워커 경로 → 편집
- 영역 → 영역 → 읽기
Cloudflare API 토큰 가져오기
올바른 계정으로 Cloudflare 대시보드에 로그인되어 있는지 확인하세요. 그런 다음 https://dash.cloudflare.com/profile/api-tokens 페이지로 이동해 오른쪽 상단의 토큰 만들기 버튼을 찾아 클릭하세요:
이제 사용자 지정 토큰 생성 흐름을 진행하세요:
다음 정보를 입력하세요:
- API 토큰 이름: ahrefs-bot-analytics
- 다음 권한을 부여하세요:
- 봇 방문을 추적하기 위한 워커 스크립트를 업로드할 수 있도록 Account / Workers Script / Edit
- 요청 시 워커 스크립트를 실행하도록 할당할 수 있도록 Zone / Workers Routes / Edit
- 구성할 영역을 찾을 수 있도록 Zone / Zone / Read
- Account Resources는 Include / All Accounts로 설정할 수 있으며, 또는 웹사이트를 호스팅하는 계정으로 범위를 제한할 수도 있습니다.
- Zone Resources는 Include / All Zones로 설정할 수 있으며, 또는 웹사이트 도메인에 해당하는 영역을 선택할 수도 있습니다.
입력을 완료한 폼은 다음과 같이 표시됩니다:
이제 Continue to summary 버튼을 클릭하세요. 요약은 다음과 같이 표시됩니다:
이제 Create Token 버튼을 클릭하고, 생성된 토큰을 다음 단계에서 사용할 수 있도록 클립보드에 복사하세요.
추가 정보는 Cloudflare 문서의 API 토큰 생성 방법을 참고하세요.
자동 설정
- Ahrefs에서 프로젝트 설정 → Bot Analytics로 이동합니다.
- 방법으로 Cloudflare Worker를 선택합니다.
- Cloudflare API 토큰을 붙여넣고 Connect를 클릭합니다.
Ahrefs는 토큰을 사용하여 다음 작업을 수행합니다:
- 프로젝트의 도메인과 일치하는 Zone을 찾습니다.
- Ahrefs 애널리틱스 워커 배포.
- 모든 요청에서 실행될 경로를 설정하세요.
info
토큰은 한 번만 사용되며 저장되지 않습니다.
수동 설정
API 토큰을 제공하지 않으려면 Cloudflare API를 사용해 워커를 수동으로 배포할 수 있습니다.
1단계 — Account ID, Zone ID 및 API 토큰 가져오기
-
Cloudflare 대시보드로 이동하여 웹사이트의 도메인을 선택합니다.
-
대시보드에서
$ACCOUNT_ID및$ZONE_ID를 찾습니다. -
"API 토큰 받기"를 클릭한 다음, 다음 권한으로 새 토큰을 생성합니다.
- 계정 → 워커 스크립트 → 편집
- 영역 → 워커 경로 → 편집
- 영역 → 영역 → 읽기
자세한 안내는 API 토큰 얻기를 참고하세요.
2단계 — 워커 배포
프로젝트 세부 정보가 미리 입력된 정확한 명령어는 프로젝트 설정 → Bot Analytics → 수동으로 설정에서 확인할 수 있습니다.
Step 1: Upload the worker script
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/workers/scripts/ahrefs--bot-analytics" \
-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 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;
})());
});
'
Step 2: 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"}'
yourwebsite.com을 사용 중인 도메인으로 바꾸세요.
warning
WA_CF_DATA_KEY와 경로 패턴은 프로젝트마다 고유합니다. 올바른 값이 적용되도록 프로젝트 설정 → Bot Analytics 페이지에서 정확한 명령어를 복사하세요.
3단계 — 연결 확인
워커를 배포하고 경로를 만든 다음 Ahrefs에서 프로젝트 설정 → Bot Analytics로 돌아가 상태 확인을 클릭하여 데이터가 수신되는지 확인하세요.