跳转到正文
报告库
用途分类 / 其他用途

Firecrawl Monitor Skill 安全审计

作者说它能做什么(原文)

|

第三方安全检查结论

发现安全风险

已检查文件
3
发现的风险
5
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 2 项风险
中风险

网页内容和历史快照会交由 Firecrawl 处理并保存

原文依据:4 处
发现了什么

监控、差异比较和判断均在 Firecrawl 服务器端执行,快照会按保留期存储;该功能明确不适用于零数据保留团队。

为什么需要注意

若目标是私有、带令牌的或包含个人/商业敏感信息的页面,页面内容、抽取字段及历史变化可能离开用户环境并在第三方系统中保留。

该 Skill 明确称抓取、差异判断和通知在 Firecrawl 服务端完成,并说明会保留用于比较的快照,且零数据保留团队不能使用。因此,被监控页面内容会离开本地环境并可能被保存。用户应在启用前确认页面是否含敏感或受限信息,并向服务方确认保留期、访问控制和删除方式。

SKILL.md:12来自说明文档打开原文件
Detect when content on a website changes and get notified by webhook or email. Firecrawl handles fetching, diffing, judging, and notifying server-side. Each page in a check is labeled `same`, `new`, `changed`, `removed`, or `error`.
查看另外 3 个位置
SKILL.md:67来自说明文档打开原文件
- Each check uses credits for its underlying scrape, crawl, or search, plus optional judging. See [Monitoring pricing](https://docs.firecrawl.dev/features/monitoring#pricing).- Minimum schedule interval is **5 minutes**. Monitoring is **not available for zero-data-retention teams**.- **Prefer one monitor over repeated one-off scrapes** whenever the user wants the same URL checked more than once.
SKILL.md:72来自说明文档打开原文件
- **`firecrawl monitor run <id>`** triggers a check immediately — useful for smoke-testing a monitor right after creating it.- **`--retention-days`** controls how long snapshots are kept for diffing. Lower it for high-frequency monitors to save storage.- **External email recipients must opt in.** First time they're added, Firecrawl sends a confirmation email and they only receive alerts after they confirm. Team-owned addresses are auto-confirmed. Once a recipient unsubscribes, they must be re-added by the owner for a fresh confirmation email.
json-tracking.md:46来自说明文档打开原文件
Each changed page in the check response then carries a per-field diff plus a snapshot of the current full extraction:
中风险

变更内容可能被发送到错误或不受信任的 webhook/邮箱

原文依据:3 处
发现了什么

监控支持向指定邮箱或 webhook 通知;邮箱有确认机制,但提供的 webhook 流程未说明接收方验证、内容过滤或发送前确认。

为什么需要注意

配置错误、被替换或由他人控制的 webhook 可能收到页面变化、抽取字段以及与监控目标有关的信息。

这段证据能说明什么

源码确实支持把通知发送到用户指定的 webhook 或邮箱;外部邮箱必须确认订阅。不过,示例地址是明显的占位符,源码没有指示绕过确认、自动选择陌生接收方,或说明通知载荷包含哪些内容。误发或泄露风险取决于实际配置。用户可要求在创建前显示并确认最终接收方、webhook 域名和发送字段,并限制为其控制的端点。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:41来自说明文档打开原文件
# Webhook notificationsfirecrawl monitor create --name "Docs webhook" --schedule "every 30 minutes" \  --goal "Alert when docs content changes." \  --page https://example.com/docs \  --webhook-url https://example.com/hook \  --webhook-events monitor.page,monitor.check.completed
查看另外 2 个位置
SKILL.md:73来自说明文档打开原文件
- **`--retention-days`** controls how long snapshots are kept for diffing. Lower it for high-frequency monitors to save storage.- **External email recipients must opt in.** First time they're added, Firecrawl sends a confirmation email and they only receive alerts after they confirm. Team-owned addresses are auto-confirmed. Once a recipient unsubscribes, they must be re-added by the owner for a fresh confirmation email.- **On HTTP 429 / rate-limit errors, back off once**: wait ~30s and retry once. If it persists, stop, report the rate limit as the blocking reason, and delete any monitors created for this task. Never retry in a loop.
json-tracking.md:5来自说明文档打开原文件
By default monitors diff each page's markdown and return a unified text diff. JSON-mode change tracking returns keyed per-field diffs instead — e.g. `plans[0].price: "$19/mo" → "$24/mo"` — which drop straight into a Slack message, CI step, or internal tool. The CLI flags don't cover this — pass a JSON body via positional file or piped stdin:
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
低风险

安装命令没有固定依赖版本

原文依据:2 处
发现了什么

安装命令没有指定依赖版本。同样的命令以后可能下载不同代码,你实际安装的内容可能与这次检查时不同。

为什么需要注意

即使命令和报告没变,以后安装时也可能下载到另一份代码。

这段代码的正常用途

第 7 行只是声明该 Skill 可以调用 `npx firecrawl-cli` 命令,不是安装命令,也没有出现 `install`、包下载或依赖解析。仅凭这一行无法认定用户会安装未锁定版本;用户仍可要求作者明确支持的 CLI 版本。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:7来自说明文档打开原文件
  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)---
查看另外 1 个位置
SKILL.md:5来自说明文档打开原文件
  Alert by webhook/email on web changes — use for "monitor/watch/track/alert me when": recurring checks on known URLs (prefer over repeated one-off scrapes) or web-wide watches for new results (queries + goal).allowed-tools:  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)---
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。发现 1 项风险
中风险

网页中的对抗性文字可能影响 AI 变更判断

原文依据:3 处
发现了什么

页面内容交给 AI 判断器决定 `changed` 或 `same`,但提供的指令没有说明把网页文字视为不可信数据,也没有描述针对网页内提示注入的隔离措施。

为什么需要注意

受攻击者控制的页面可尝试诱导判断器忽略真实变化或制造错误警报,从而误导用户的运营、价格、库存或竞争情报决策。

这段证据能说明什么

源码说明 AI 判断器会依据目标判断页面是否变化,因此网页内容确实进入模型判断流程。但没有可见证据表明网页文字会被当作可执行指令,也没有脚本、工具调用或账户操作受该判断器控制;现有影响仅表现为 `changed`/`same` 分类和告警准确性。用户可询问服务方是否隔离页面提示,并将结果仅用于通知而非自动执行高影响操作。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
goals.md:7来自说明文档打开原文件
The goal is what the AI change judge uses to decide whether a page is `changed` vs `same`. Convert the user's intent into a concise 2-3 sentence goal:
查看另外 2 个位置
SKILL.md:12来自说明文档打开原文件
Detect when content on a website changes and get notified by webhook or email. Firecrawl handles fetching, diffing, judging, and notifying server-side. Each page in a check is labeled `same`, `new`, `changed`, `removed`, or `error`.
goals.md:11来自说明文档打开原文件
- Restate any scope they mentioned: top N, price, role type, region, company, topic, status, or a specific entity.- Add an `Ignore ...` sentence **only** for intent-specific exclusions (e.g. points/comments for rankings, marketing copy for pricing, general company-page updates for job listings). The judge already handles generic noise — whitespace, casing, punctuation, encoding, formatting-only changes, request/session IDs, cache busters, tracking params, generic metadata, and unrelated page chrome — so leave those out.- Include only page-specific sections, entities, thresholds, exclusions, or business rules the user actually mentioned.- If the user is vague or asks for "any change", keep the goal broad with no exclusions. If the user mentions noise they do not care about, include that explicitly.
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 1 项风险
中风险

持久化监控会持续消耗付费额度

原文依据:5 处
发现了什么

每次计划检查都会使用底层抓取、爬取或搜索额度,并可能增加 AI 判断费用;默认还会强制进行新抓取。创建后任务会持续运行,除非暂停或删除。

为什么需要注意

高频计划、整站爬取、多个查询或长期遗忘的监控可能产生持续且超出预期的费用。创建后的冒烟测试也会立即执行一次检查。

这是按计划重复运行的持久监控;每次检查都会消耗抓取、爬取或搜索额度,并可能产生判断费用。默认每次都进行新抓取,只有暂停或删除才会停止后续运行。因此,忘记停用或设置过密计划可能持续产生费用。用户可要求设置最低必要频率、费用上限或告警,并确认结束时暂停或删除。

SKILL.md:60来自说明文档打开原文件
**Done when:** `create` returns a monitor ID and a smoke-test `run` + `check` confirms the expected target, state, and notification configuration.
查看另外 4 个位置
SKILL.md:66来自说明文档打开原文件
- Each check uses credits for its underlying scrape, crawl, or search, plus optional judging. See [Monitoring pricing](https://docs.firecrawl.dev/features/monitoring#pricing).- Minimum schedule interval is **5 minutes**. Monitoring is **not available for zero-data-retention teams**.- **Prefer one monitor over repeated one-off scrapes** whenever the user wants the same URL checked more than once.
SKILL.md:69来自说明文档打开原文件
- **Prefer one monitor over repeated one-off scrapes** whenever the user wants the same URL checked more than once.- **Silence temporarily with `update --state paused`**; reserve `delete` for monitors that are permanently done. (`--state` is an update flag; `--status` is the global CLI status flag.)- **Filter check pages with `--page-status changed`** (or `new`, `removed`, `error`) to skip the noise from `same` pages.
SKILL.md:75来自说明文档打开原文件
- **On HTTP 429 / rate-limit errors, back off once**: wait ~30s and retry once. If it persists, stop, report the rate limit as the blocking reason, and delete any monitors created for this task. Never retry in a loop.- **Monitor-triggered scrapes default `maxAge` to `0`** — every check performs a fresh scrape unless `scrapeOptions.maxAge` is set explicitly in a JSON payload.
SKILL.md:68来自说明文档打开原文件
- Minimum schedule interval is **5 minutes**. Monitoring is **not available for zero-data-retention teams**.- **Prefer one monitor over repeated one-off scrapes** whenever the user wants the same URL checked more than once.- **Silence temporarily with `update --state paused`**; reserve `delete` for monitors that are permanently done. (`--state` is an update flag; `--status` is the global CLI status flag.)- **Filter check pages with `--page-status changed`** (or `new`, `removed`, `error`) to skip the noise from `same` pages.

Skill 逻辑拆解

3 个说明模块

该 Skill 会在 Firecrawl 服务器端创建持久化监控任务;服务负责抓取、差异比较、AI 判断和通知,而不是仅在本地读取网页。

查看原文
SKILL.md:12来自说明文档打开原文件
Detect when content on a website changes and get notified by webhook or email. Firecrawl handles fetching, diffing, judging, and notifying server-side. Each page in a check is labeled `same`, `new`, `changed`, `removed`, or `error`.

它可监控单页、URL 列表、整站或全网搜索结果,并可通过电子邮件或 webhook 发出通知。全网模式会在每次检查时重新执行查询。

查看原文
SKILL.md:18来自说明文档打开原文件
| ----------- | ------------------------------ | ------------------------------------------------------ || Single page | `--page <url>`                 | one URL, for changes                                   || URL batch   | `--scrape-urls <url,url,...>`  | several URLs, for changes                              || Whole site  | `--crawl-url <root-url>`       | every page a crawl discovers, for changes              || Web search  | `--queries <q,...>` + `--goal` | the **whole web**, for _new_ results matching the goal |
SKILL.md:23来自说明文档打开原文件
The first three watch URLs you already have. **Web search** runs your queries each check and alerts on results it hasn't seen before (labeled `new` once, `same` on later checks); `--goal` is required with `--queries`.

结构化模式会把页面字段抽取为 JSON,保存当前快照并生成逐字段差异;说明明确表示这些结果可进入 Slack、CI 或内部工具。

查看原文
json-tracking.md:5来自说明文档打开原文件
By default monitors diff each page's markdown and return a unified text diff. JSON-mode change tracking returns keyed per-field diffs instead — e.g. `plans[0].price: "$19/mo" → "$24/mo"` — which drop straight into a Slack message, CI step, or internal tool. The CLI flags don't cover this — pass a JSON body via positional file or piped stdin:
json-tracking.md:46来自说明文档打开原文件
Each changed page in the check response then carries a per-field diff plus a snapshot of the current full extraction:

流程要求创建后立即运行一次检查;遇到持续限流时,会删除本次任务创建的监控,而不是保留其暂停状态。

查看原文
SKILL.md:60来自说明文档打开原文件
**Done when:** `create` returns a monitor ID and a smoke-test `run` + `check` confirms the expected target, state, and notification configuration.
SKILL.md:74来自说明文档打开原文件
- **External email recipients must opt in.** First time they're added, Firecrawl sends a confirmation email and they only receive alerts after they confirm. Team-owned addresses are auto-confirmed. Once a recipient unsubscribes, they must be re-added by the owner for a fresh confirmation email.- **On HTTP 429 / rate-limit errors, back off once**: wait ~30s and retry once. If it persists, stop, report the rate limit as the blocking reason, and delete any monitors created for this task. Never retry in a loop.- **Monitor-triggered scrapes default `maxAge` to `0`** — every check performs a fresh scrape unless `scrapeOptions.maxAge` is set explicitly in a JSON payload.
从这里开始 · 工作说明SKILL.md
firecrawl-monitor
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

4 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录3 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • goals.md已纳入全文
  • json-tracking.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • goals.md配套文件
  • json-tracking.md配套文件

代码和说明中提到的操作

运行命令
SKILL.md:6来自说明文档打开原文件
allowed-tools:  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)
SKILL.md:7来自说明文档打开原文件
  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)---
SKILL.md:27来自说明文档打开原文件
```bash# Single page, natural-language schedule, email alert
安装其他软件包
SKILL.md:7来自说明文档打开原文件
  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)---
连接外部网站
SKILL.md:31来自说明文档打开原文件
  --goal "Alert when a new blog post is published." \  --page https://example.com/blog \  --email alerts@example.com
SKILL.md:44来自说明文档打开原文件
  --goal "Alert when docs content changes." \  --page https://example.com/docs \  --webhook-url https://example.com/hook \
SKILL.md:45来自说明文档打开原文件
  --page https://example.com/docs \  --webhook-url https://example.com/hook \  --webhook-events monitor.page,monitor.check.completed
读取文件
json-tracking.md:8来自说明文档打开原文件
```bashcat > pricing-monitor.json <<'EOF'{
json-tracking.md:43来自说明文档打开原文件
firecrawl monitor create pricing-monitor.json# or: cat pricing-monitor.json | firecrawl monitor create```
读取了多少行
199
文件校验值(用于核对版本)
67d27cd4ac37d00d8dda6cc3fbf78a4a12843857a3bfe5952ea13270e44c6984