Cloudflare worker
Cloudflare Worker 会在每次请求时运行脚本,并将数据发送到 Ahrefs。 此方法适用于任何 Cloudflare 套餐,包括免费版。
前提条件
- 一个 Cloudflare 账户,并已将您网站的域名添加为一个区域。
- 一个具有以下权限的 Cloudflare API 令牌:
- 账户 → Worker 脚本 → 编辑
- 区域 → Worker 路由 → 编辑
- 区域 → 区域 → 读取
获取 Cloudflare API 令牌
请确保您已使用正确的账户登录 Cloudflare Dashboard。 然后前往 https://dash.cloudflare.com/profile/api-tokens 页面,找到并点击右上角的 Create Token 按钮:
现在继续进行 创建自定义令牌 流程:
填写以下信息:
- API 令牌名称:ahrefs-bot-analytics
- 授予以下权限:
- 账户 / Workers 脚本 / 编辑,以便我们上传用于跟踪机器人访问的 Worker 脚本
- 区域 / Workers 路由 / 编辑,以便我们将 Worker 脚本分配到请求上运行
- 区域 / 区域 / 读取,以便我们找到要配置的区域
- 账户资源可以设置为 包含 / 所有账户;或者将范围限定为托管该网站的那个账户。
- 区域资源可以设置为 包含 / 所有区域;或者选择与你的网站域名对应的区域。
填写完成的表单应如下所示:
现在点击 继续到摘要 按钮,摘要应如下所示:
现在点击 创建令牌 按钮,并将生成的令牌复制到剪贴板,以便在接下来的步骤中使用。
更多信息请参阅 Cloudflare 文档:如何创建 API 令牌。
自动设置
- 在 Ahrefs 中,前往项目设置 → Bot Analytics。
- 选择 Cloudflare Worker 作为方法。
- 粘贴您的 Cloudflare API 令牌,然后点击 连接。
Ahrefs 将使用您的令牌来:
- 查找与您项目域名匹配的 zone。
- 部署 Ahrefs analytics worker.
- 设置一个路由,使其在所有请求上运行.
info
您的令牌仅使用一次,不会被存储。
手动设置
如果您不想提供 API 令牌,可以使用 Cloudflare API 手动部署该 Worker。
步骤 1 — 获取您的账户 ID、区域 ID 和 API 令牌
-
前往您的 Cloudflare Dashboard,并选择您网站的域名。
-
在 Dashboard 中找到您的
$ACCOUNT_ID和$ZONE_ID。 -
点击“获取您的 API 令牌”,并使用以下权限创建一个新令牌:
- 账户 → Worker 脚本 → 编辑
- 区域 → Worker 路由 → 编辑
- 区域 → 区域 → 读取
详细说明请参阅获取 API 令牌。
步骤 2 — 部署 Worker
您可以在 项目设置 → 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 步 — 验证连接
部署 Worker 并创建路由后,返回 Ahrefs 的 项目设置 → Bot Analytics,然后点击 检查状态,以验证是否正在接收数据。