@ datafast/ ai- crawl (帮助)
服务器侧AI爬行器为DataFast进行跟踪.
使用此软件包查看已知的 AI 助手, AI 搜索系统, 或者训练爬行者在您的网站上请求页面 。 它不是DataFast网络分析的替代,也不跟踪人类访问者、会话、转换、归属或浏览器页面视图.
完整的设置指南 : 数据快件流量跟踪
爬行器目录 : 看到Data Fast追踪到的所有爬行者
安装
npm install @datafast/ai-crawl
如何运作
软件包运行在您的服务器、 中间软件、 边缘功能或工人上 。 对于每个收到的请求,它都会检查本地用户代理和路径. 如果请求不是AI/搜索爬行器文档请求,则任何请求都无法发送到DataFast.
当一个可能的爬行者请求一个文档页面时,包会向DataFast的AI爬行端点发送一个小事件. 在支持背景任务的运行时,例如Vercel和Cloudflare,它使用 waitUntil 所以您的页面响应不会等待 Data Fast .
在已知爬行者提出要求时,跟踪Crawler-facing发现文件. 这包括: robots.txt, (中文(简体) ), llms.txt, (中文(简体) ), llms-full.txt,和站点映射 XML 文件.
该套件只是成本和安全预过滤器. DataFast的服务器是提供商分类,分类,IP验证,信心,和爬行者列表更新的真相来源. 这意味着DataFast可以更新爬行器用户代理和IP范围,而不需要您为每次爬行器更改更新此软件包.
状态代码是可选的 。 最重要的信号是AI试图爬行的一页. 状态代码只有在后端曝光时才被俘获,而不增加潜伏.
重要:当您通过 Vercel、 Cloudflare 或 Worker 语境 trackAICrawlerRequest,不这样做 await 这个 软件包以 waitUntil 立刻回来.
教学
Next.js / Vercel 代理服务器
创建或更新 proxy.ts (以前称为 middleware.ts 编号 : middleware.js 在旧的 Next.js 版本中:
// proxy.ts
import {
NextResponse,
type NextFetchEvent,
type NextRequest,
} from "next/server";
import { trackAICrawlerRequest } from "@datafast/ai-crawl";
export function proxy(request: NextRequest, event: NextFetchEvent) {
trackAICrawlerRequest(request, event, {
websiteId: "dfid_your_tracking_id",
});
return NextResponse.next();
}
export const config = {
matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"],
};
这是非阻塞的。 软件包将 Data Fast 请求以 event.waitUntil,然后您的应用程序继续返回页面.
Next.js 代理服务器在最后页面回复前运行,所以状态代码通常未知,并将被存储为 0。 。 。 .
云旗页
安装软件包,然后创建 Pages 函数中间软件文件 :
// functions/_middleware.ts
import { trackAICrawlerRequest } from "@datafast/ai-crawl";
export async function onRequest(context) {
trackAICrawlerRequest(context.request, context, {
websiteId: "dfid_your_tracking_id",
});
return context.next();
}
云花板页面提供 context.waitUntil,因此,数据快速请求在背景中运行,同时 context.next() 继续到您的页面或静态资产.
别 await trackAICrawlerRequest(...) 在这里。 叫它,然后马上回来 context.next()。 。 。 .
为了更好的Cloudflare计费/性能卫生,当您的框架不能自动生成时,也将明显的静态资产排除在函数引用之外。 添加 _routes.json 到您的构建输出 :
{
"version": 1,
"include": ["/*"],
"exclude": [
"/assets/*",
"/static/*",
"/_next/*",
"/favicon.ico",
"/*.css",
"/*.js",
"/*.png",
"/*.jpg",
"/*.svg",
"/*.ico",
"/*.woff2"
]
}
软件包仍在本地过滤静态资产, 但是 _routes.json 防止 Cloudflare 对最明显的资产请求引用您的函数 。 不排除爬行文件, 如 /robots.txt, (中文(简体) ), /llms.txt, (中文(简体) ), /llms-full.txt,或 /sitemap.xml 如果你想在这些文件上看到爬行者的活动.
Cloudflare 文档 : 页面中间软件, (中文(简体) ), 页面函数 API, (中文(简体) ), 路线和 _routes.json。 。 。 .
云花岗工人
包装你的工人 fetch 处理器 :
import { withAICrawlerTracking } from "@datafast/ai-crawl";
export default {
fetch: withAICrawlerTracking(
async (request: Request, env: Env, ctx: ExecutionContext) => {
return fetch(request);
},
{
websiteId: "dfid_your_tracking_id",
},
),
};
这捕捉状态代码,因为包装器看到 Response 您的处理器已经创建 。 还在用 ctx.waitUntil 因此,追踪请求是最佳的和无阻的.
自定义多克、 云跑或倒置代理
大多数框架自动曝光公开请求 URL. 如果你的运行时间建起来 request.url 具有内部主机名, 如 localhost 或者说 0.0.0.0设置 publicOrigin 一次:
trackAICrawlerRequest(request, context, {
websiteId: "dfid_your_tracking_id",
publicOrigin: "https://example.com",
});
DataFast保留了原始路径和查询字符串,仅替换了内部来源,并仍然以您的网站配置来验证由此产生的公共主机名.
快递
import express from "express";
import { createExpressAICrawlerMiddleware } from "@datafast/ai-crawl";
const app = express();
app.use(
createExpressAICrawlerMiddleware({
websiteId: "dfid_your_tracking_id",
}),
);
中快件附带一个 finish 在回复已经发送到爬行者之后, 监听器并发送状态代码 。 它召唤 next() 并且不等待 Data Fast 在您的应用程序继续前.
浩诺
import { Hono } from "hono";
import { trackAICrawlerResponse } from "@datafast/ai-crawl";
const app = new Hono();
app.use("*", async (c, next) => {
await next();
trackAICrawlerResponse(c.req.raw, c.res, c.executionCtx, {
websiteId: "dfid_your_tracking_id",
});
});
这对Cloudflare Workers或其他Hono运行时间很有用,您可以在其中访问最后的响应和执行上下文.
一般请求/ 处理器
如果你的后端给你一个标准 Request 财务报告和审定财务报表 Response,使用:
import { trackAICrawlerResponse } from "@datafast/ai-crawl";
export async function handleRequest(request, context) {
const response = await yourAppHandler(request);
trackAICrawlerResponse(request, response, context, {
websiteId: "dfid_your_tracking_id",
});
return response;
}
如果您的后端仅在应用程序响应存在前给出请求, 请使用仅请求的跟踪 :
import { trackAICrawlerRequest } from "@datafast/ai-crawl";
export function middleware(request, context) {
trackAICrawlerRequest(request, context, {
websiteId: "dfid_your_tracking_id",
});
return next();
}
只要求跟踪就足以知道AI试图爬行的哪一页. 反应-意识跟踪只在容易获取时添加状态代码.
可选请求认证
在您的网站的 Bot 流量设置中创建 Bot 流量符, 然后添加到相同的服务器侧配置 :
trackAICrawlerRequest(request, event, {
websiteId: "dfid_your_tracking_id",
authToken: process.env.DATAFAST_BOT_TOKEN,
});
在您的服务器上保留此符号, 并删除浏览器代码 。 Token 验证只影响您启用后的请求接受 拒绝未经认证的请求 在瓶装交通环境。 旋转一个令牌会立即使上一个令牌失效,并删除它会自动关闭请求认证.
过滤
默认情况下,包会跟踪它所识别的每一个相关的爬行者类别,包括AI接取者,搜索/索引爬行者,训练爬行者,以及其他AI爬行者流量.
您可以选择退出特定类别 :
trackAICrawlerRequest(request, event, {
websiteId: "dfid_your_tracking_id",
// Optional category opt-outs. All default to false.
disableAnswerFetch: true,
disableSearchCrawlers: true,
disableTrainingCrawlers: true,
disableOtherCrawlers: true,
});
对于后向兼容, includeSearchCrawlers: false 也禁用搜索/索引爬行器。 偏爱 disableSearchCrawlers: true 用于新安装.
追踪到什么
追踪器只向 Data Fast 发送可能的 AI/ 搜索爬行文档请求 。 正常人行道,API路线,框架内部,以及CSS,JavaScript等通用静态资产,图像,字体,地图,PDF,以及媒体文件在提出任何网络请求之前都会被忽略.
Crawler-facing文件被故意不作为通用静态资产处理. 已知的爬行者对文件的要求, 如 /robots.txt, (中文(简体) ), /llms.txt, (中文(简体) ), /llms-full.txt,和 sitemap XML 文件,因为这些文件经常被搜索bots,AI助手和AI基础设施特别要求.
它存储提供者,代理,类别,页面,主机名,可用时的状态代码,来源,以及信心.
OpenAI / ChatGPT-User -> answer_fetch
OpenAI / OAI-SearchBot -> search_index
OpenAI / GPTBot -> training
Googlebot -> search_index
Google-NotebookLM -> answer_fetch
Google-Extended -> training
Google-CloudVertexBot -> training
PerplexityBot -> search_index
ClaudeBot -> training
Bingbot -> search_index
Applebot -> training
Bytespider -> training
CCBot -> training
xAI-SearchBot -> answer_fetch
Grok-DeepSearch -> answer_fetch
GrokBot / xAI-Bot -> ai_crawler
许可证
麻省理工学院
