@datafast/ai-crawl

中文文档
1.0.9发布于 2026/07/15MITTypeScriptESM + CJS零依赖近 30 天下载 13.3万

用于 DataFast 的服务器端 AI 爬行器

中文使用文档
文档目录14 节
  1. 安装
  2. 如何运作
  3. 教学
  4. Next.js / Vercel 代理服务器
  5. 云旗页
  6. 云花岗工人
  7. 自定义多克、 云跑或倒置代理
  8. 快递
  9. 浩诺
  10. 一般请求/ 处理器
  11. 可选请求认证
  12. 过滤
  13. 追踪到什么
  14. 许可证

DataFast logo

@ 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

许可证

麻省理工学院

版本与发布记录

@datafast/ai-crawl 共发布 9 个版本,首次发布于 2026/06/09;过去 12 个月发布了 9 个版本。

版本发布日期距今
1.0.9latest2026/07/153 个月前
1.0.82026/07/153 个月前
1.0.72026/07/064 个月前
1.0.62026/07/024 个月前
1.0.52026/06/184 个月前
1.0.42026/06/184 个月前

关于 @datafast/ai-crawl 的常见问题

@datafast/ai-crawl 是什么?

用于 DataFast 的服务器端 AI 爬行器

如何安装 @datafast/ai-crawl?

在项目目录运行 npm install @datafast/ai-crawl,或使用 pnpm add / yarn add / bun add。

@datafast/ai-crawl 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@datafast/ai-crawl 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@datafast/ai-crawl 可以商用吗?

@datafast/ai-crawl 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@datafast/ai-crawl 的下载量有多少?

根据 npm 官方下载统计,@datafast/ai-crawl 在 2026/10/12 – 2026/11/10 这 30 天内被下载 132,503 次,日均约 4,417 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@datafast/ai-crawl 还在维护吗?

最新版本 1.0.9 发布于 2026/07/15(3 个月前);至今共发布 9 个版本,其中过去 12 个月发布了 9 个;首次发布于 2026/06/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。