CrawlForge MCP
监控高级3 credits

track_changes

保存页面快照,随后可随时将实时页面与其对比。返回结果包括:是否发生变更、变更幅度、新增或删除了哪些文本行,以及一个用于判断标记本身是否被重构的结构相似度评分。

使用场景

在抓取器失效前发现问题

structural_similarity 偏低意味着页面标记已被重构,而这正是选择器失效的真正原因——在提取管道开始返回空结果之前就能发现。

监控竞争对手的定价页面

用 selector 将范围限定到定价表格,按自己的节奏对比,并通过新增和删除的文本行查看具体变动。

追踪法律与政策文档

对比服务条款、隐私政策或监管页面,并保留一份可审计的记录,精确说明哪些行发生了变化。

捕捉 API 文档中的破坏性变更

为供应商的参考文档或更新日志页面建立基线,在每次发版前进行对比。

验证部署只改动了预期内容

发布前建立基线,发布后进行对比,确认差异与预期改动一致。

Endpoint

POST/api/v1/tools/track_changes
Auth Required
Free 方案 1 次请求/秒
3 credits

Parameters

该端点接受四个参数。早期示例会传入 trackingOptions、monitoringOptions 和 storageOptions 对象——托管 REST API 会接受这些键但忽略它们,因此传入不会产生任何效果。对应的控制项存在于 CrawlForge MCP 服务器。
NameTypeRequiredDefaultDescription
url
stringRequired-
要捕获或对比的页面。
Example: https://competitor.com/pricing
operation
stringOptionalcompare
取值为 `"create_baseline"` 或 `"compare"`。传入 `"monitor"` 会返回 501——定时监控是 MCP 服务器的功能。其他任何取值都会以 400 拒绝。
Example: compare
selector
stringOptional-
用于将追踪范围限定到页面局部的 CSS 选择器,例如 `.pricing-table`。基线按 (url, selector) 组合分别存储,因此同一个 URL 可以在多个范围上独立追踪。若选择器未匹配到任何元素,返回 422。
Example: .pricing-table
update_baseline
booleanOptionalfalse
仅用于 `compare`。对比完成后,用刚刚抓取到的内容覆盖已存储的基线。适用于滚动对比场景:每次调用报告的是自上次调用以来的变更,而非自最初捕获以来的变更。
Example: false
respect_robots
booleanOptionaltrue
遵守目标站点的 robots.txt。保持 `true` 时,robots.txt 对 `CrawlForge` 禁止的路径会在抓取之前以 403 拒绝,且不扣除 credits。仅在你与目标站点另有约定时才设为 `false`——此时响应会带上一条 `warnings`,并且该覆盖会记录到你的 API key 上。
Example: true

操作

创建一次基线,之后可随意多次对比。

create_baseline
抓取页面,将其归约为规范化的可见文本,并连同内容哈希和结构签名一起存储。基线按 API 账户保留 90 天。请先执行该操作——没有基线直接对比会返回 404。
compare
重新抓取页面,并与已存储的基线逐行比对。返回变更百分比、结构相似度、计数,以及新增和删除文本行的样本。这是默认操作。

如何解读对比结果

两个评分回答的是不同问题,结合起来比单看任何一个都更有价值。

change_percent:文本变动了多少
新增行加删除行占较大文档的比例,范围 0-100。任何真实的内容更新都会使其升高;带时间戳、访问计数或轮播推荐语的页面同样会偏高,因此动态页面会有一个较高的噪声基准。
structural_similarity:标记是否仍然一致
0-1 的评分,比较标签词汇与嵌套深度。change_percent 高而 structural_similarity 也高,说明是同一套布局配上了新文案。评分偏低则说明页面被重构了,而这正是选择器失效的原因。
检测基于文本:页面通过 HTTP 抓取且从不执行 JavaScript,因此客户端渲染的内容对该端点不可见。如需浏览器渲染的追踪、定时监控、webhook、变更历史与统计,请使用 CrawlForge MCP 服务器。
当已存储的基线早于该字段引入时,structural_similarity 为 null 而非 0。零是一个真实评分,表示结构上没有任何内容留存,因此未测量的对比会返回 null。重新执行 create_baseline,或传入一次 update_baseline,即可开始为其评分。

请求示例

terminalBash
# Step 1: capture the baseline (once per url + selector, kept 90 days)
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://competitor.com/pricing",
    "operation": "create_baseline",
    "selector": ".pricing-table"
  }'

# Step 2: compare against it, as often as you like
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://competitor.com/pricing",
    "operation": "compare",
    "selector": ".pricing-table"
  }'

# Rolling comparison: diff against the previous call, not the original capture
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://competitor.com/pricing",
    "operation": "compare",
    "selector": ".pricing-table",
    "update_baseline": true
  }'

响应示例

200 OK1,180ms
{
"success": true,
"data": {
"operation": "compare",
"url": "https://competitor.com/pricing",
"selector": ".pricing-table",
"changed": true,
"change_percent": 12.5,
"structural_similarity": 0.9713,
"added_count": 4,
"removed_count": 2,
"added_samples": [
"Pro $79 / month",
"Includes 50,000 credits",
"Enterprise",
"Contact sales"
],
"removed_samples": [
"Pro $99 / month",
"Includes 25,000 credits"
],
"baseline_captured_at": "2026-08-01T12:00:00.000Z",
"compared_at": "2026-08-26T14:30:00.000Z",
"baseline_updated": false
},
"credits_used": 3,
"credits_remaining": 997,
"processing_time": 1180
}
Field Descriptions
data.changed当内容哈希与基线不同时为 true——如果只需要是或否的判断,这是最快的检查方式。
data.change_percent新增行加删除行占较大文档的百分比,范围 0-100。
data.structural_similarity0-1 的标记相似度。当基线早于该字段引入时为 null。
data.added_samples最多 20 条新增行,每条截断至 500 个字符。这不是完整差异——真实总数请看 added_count。
data.removed_samples最多 20 条删除行,限制与 added_samples 相同。
data.baseline_updated本次调用是否覆盖了基线,与 update_baseline 参数对应。
credits_used3 credits,按成功调用计费。失败的调用不计费。

错误处理

未找到基线 (404 BASELINE_NOT_FOUND)

您在存储基线之前调用了 compare,或 90 天的基线已过期。请先针对完全相同的 (url, selector) 组合执行 create_baseline。

选择器未匹配到内容 (422 SELECTOR_NOT_FOUND)

该 CSS 选择器没有返回任何元素。请对照实时标记检查——在 JavaScript 执行后于开发者工具中有效的选择器,未必存在于该端点抓取到的原始 HTML 中。

目标不可达 (502 FETCH_FAILED)

页面返回了非 2xx 状态。有反爬保护的站点通常会落到这里——请改用 stealth_mode 抓取。

定时监控不可用 (501 OPERATION_NOT_AVAILABLE)

托管 REST API 未实现 operation: "monitor"。请按自己的节奏调用 compare,或使用 CrawlForge MCP 服务器。

参数无效 (400 VALIDATION_ERROR)

URL 格式错误,或 operation 不在 create_baseline、compare 和 monitor 之内。响应中的 details 数组会指出出错的字段。

存储不可用 (503 STORAGE_UNAVAILABLE)

无法访问基线存储。请重试——失败的调用不会扣除 credits。

被 robots.txt 拦截(403 Forbidden)

目标站点的 robots.txt 对 CrawlForge 禁止了该路径。若你与目标站点另有约定,可设置 respect_robots: false 予以覆盖——该覆盖会记录到你的 API key 上。该覆盖不适用于列入 CrawlForge 永久排除名单的主机——无论 respect_robots 取何值,这类主机一律被拒绝。

减少误报: 请用 selector 限定范围,而不是追踪整个页面。整页基线会把导航栏、页脚、Cookie 横幅和轮播内容都纳入其中,而这通常正是每次对比都出现变更的原因。

credits 消耗

3 credits
每次调用 3 credits
create_baseline 和 compare 均消耗 3 credits。失败的调用不计费。REST API 没有调度器,因此对比频率——以及由此产生的成本——完全由您掌控。

成本明细:

create_baseline:3 credits,每个 (url, selector) 组合一次,有效期 90 天

compare:每次调用 3 credits

轮询成本示例(每个 URL):

每小时: 24 次调用/天 = 72 credits/天

每 6 小时: 4 次调用/天 = 12 credits/天

每天: 1 次调用/天 = 3 credits/天

方案建议:

Free 方案: 1,000 个一次性试用 credits = 约 5 个 URL 每 6 小时对比一次,可用一个月

Hobby 方案: 5,000 credits/月 = 约 13 个 URL 每 6 小时对比一次($19/月)

Professional 方案: 50,000 credits/月 = 约 138 个 URL 每 6 小时对比一次($99/月)

相关工具

fetch_url
需要自行比对内容时使用的原始 HTTP 抓取(1 credit)
extract_content
对比前先提取正文,适合噪声较多的页面(2 credits)
stealth_mode
访问在此处返回 502 的反爬保护页面(5 credits)
batch_scrape
一次调用抓取多个 URL(每个 URL 5 credits)
准备好试用 track_changes 了吗?免费注册,获得 1,000 credits,为您的第一批页面建立基线。

页脚

CrawlForge MCP

面向 AI Agent 的企业级网页抓取。29 个专业 MCP 工具,专为构建智能系统的现代开发者而设计。

产品

  • 功能
  • Playground
  • 价格
  • 应用场景
  • 集成
  • 替代方案
  • 更新日志

资源

  • 快速上手
  • API 参考
  • 模板
  • 指南
  • 博客
  • 术语表
  • 常见问题
  • 网站地图

开发者

  • MCP 协议
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

公司

  • 关于我们
  • 联系我们
  • 隐私政策
  • 服务条款
  • 可接受使用政策
  • Cookie

保持更新

获取新工具和新功能的最新动态。

基于 Next.js 和 MCP 协议构建

© 2025-2026 CrawlForge。保留所有权利。