> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 威胁防护

> 通过由您的组织控制的策略，在所有端点上封禁对高风险域名的请求，并在服务端强制执行。

威胁防护可让您的组织阻止 Firecrawl 访问高风险域名。启用后，请求将要访问的每个 URL——无论是抓取目标、搜索结果、爬取过程中发现的链接，还是代理导航到的页面——都会在获取任何内容之前，先根据您组织的策略进行检查。未通过策略的域名会被拒绝访问。

该策略只需在组织级别定义一次，便会自动应用到所有端点。您也可以允许按请求进行调整，或锁定该策略，使任何请求都无法削弱它。

<Note>
  威胁防护是一项企业版功能，按组织开通。如需为您的账户启用此功能，请联系您的 Firecrawl 账户团队。
</Note>

<div id="modes">
  ## 模式
</div>

威胁防护 提供两种模式，可在组织级别设置：

* **关闭** (默认值) — 不进行任何域名检查。
* **正常** — 域名会与 [Google Web Risk](https://cloud.google.com/web-risk) 进行比对；该服务会标记与恶意软件、社会工程攻击 (网络钓鱼) 和有害软件相关的域名。**每扫描一个域名需消耗 +2 额度。**

域名信誉检查旨在保护你的数据：对于绝大多数请求，检查都会基于定期同步的威胁列表在本地完成，因此你抓取的 URL 绝不会发送给分类器，Firecrawl 也不会存储关于你流量的任何判定结果。

<div id="policy-controls">
  ## 策略控制
</div>

除了分类器外，策略还可以包含：

* **自定义黑名单** —— 始终封禁的精确域名或 glob (例如 `*.example.com`) ，无需调用分类器。
* **自定义白名单** —— 始终允许的精确域名或 glob。白名单优先于所有其他规则，因此你信任的域名绝不会被封禁。
* **封禁的 TLD** —— 直接封禁的顶级域名 (例如 `zip`) ，按标签边界匹配。
* **风险评分阈值** —— 归一化分数 (0–100) ；达到或高于该分数时，分类器的判定会被视为封禁。数值越低，策略越严格。默认值为 `75`。
* **失败策略** —— 当无法访问分类器时的处理方式：**封禁** (`closed`，默认值，也是安全控制场景下的推荐设置) 或 **允许** (`open`) 。

你加入黑名单或白名单的自定义域名，会使用与分类器相同的主机规范化方式进行匹配，因此无法通过地址的其他编码形式 (例如整数形式的 IP) 绕过列表规则。

<div id="configuring-the-policy">
  ## 配置策略
</div>

团队管理员可在 Dashboard 的[组织设置](https://www.firecrawl.dev/app/settings?tab=threat-protection)中配置威胁防护：

1. 打开 **Settings → Threat Protection**。
2. 选择一种模式，设置风险评分阈值，并添加黑名单、白名单或已封禁 TLD 条目。
3. 选择是否允许按请求覆盖，并设置失败策略。
4. 保存。更改会立即生效——下一个请求将按新策略进行评估。

只有团队管理员可以查看或修改此策略。其他人只能看到只读视图。

<div id="per-request-overrides">
  ## 单次请求覆盖
</div>

所有接受 URL 的端点也都支持可选的 `threatProtection` 对象，因此你可以针对单次请求收紧该次调用的策略 (或者，如果你的组织允许，也可以进行调整) ：

```json theme={null}
{
  "url": "https://example.com",
  "threatProtection": {
    "mode": "normal",
    "riskScoreThreshold": 50,
    "blacklist": ["*.risky.example"]
  }
}
```

覆盖项会按字段逐一合并到组织策略中。如果你的组织**已禁用请求覆盖**，任何包含 `threatProtection` 对象的请求都会被拒绝，并返回 `403`——这样管理员就能确保组织策略是每个请求都必须遵守的最低基线。

如果你的团队已**强制执行**威胁防护，覆盖项仍然可以收紧策略，但不能包含 `"mode": "off"`——任何试图这样做的请求都会被拒绝，并返回 `403`。

<div id="when-a-domain-is-blocked">
  ## 当域名被封禁时
</div>

被封禁的请求会以 `403` 失败，并返回一个固定的错误代码：

```json theme={null}
{
  "success": false,
  "code": "unsafe_domain_blocked",
  "error": "This domain (risky.example) is blocked by your organization's threat protection policy (rule: blacklist). If you believe this is a mistake, contact your organization administrator to adjust the policy (e.g. whitelist the domain)."
}
```

不同端点的行为略有差异，会采用最实用的处理方式：

* **Scrape, batch scrape, extract, agent** — 被封禁的目标会针对该 URL 返回 `unsafe_domain_blocked` 错误。
* **Crawl** — 被封禁的种子 URL 会导致请求失败；在爬取过程中发现的被封禁链接会被跳过，爬取会继续。
* **Search, map** — 被封禁的域名会从返回结果中移除，而不是返回后再拒绝。

如果请求被重定向到其他域名，系统会在抓取其内容前再次检查目标域名，因此无法通过重定向访问被封禁的域名。

<div id="billing">
  ## 计费
</div>

在 正常 模式下，域名扫描会在请求的基础成本之外，按**每个扫描域名额外收取 +2 额度**。补充说明如下：

* 如果判定完全基于你自己的策略 (黑名单、白名单或 blocked-TLD 匹配) ，则不会调用分类器，因此**不会**收取扫描费用。
* 即使请求被封禁，生成该判定结果的扫描仍会照常收费。
* 在单次抓取中，扫描会去重：同一域名上的重定向复检会复用原始扫描，而落到不同域名的重定向则算作第二次扫描。
* **抓取和批量抓取会独立检查每个页面。**判定结果绝不会在页面之间复用——不会存储任何与你的流量有关的信息 (见上文) ——因此在 正常 模式下，即使这些页面属于同一域名，也预计会按**每个抓取页面额外 +2 额度**收费。
* **搜索和 map**会在每次请求中对结果集里的每个唯一域名扫描一次，因此它们的扫描费用会随返回的不同域名数量增加。

<div id="error-reference">
  ## 错误参考
</div>

| 状态    | 何时出现                                                |
| ----- | --------------------------------------------------- |
| `403` | 请求的目标域名被策略封禁 (`code: unsafe_domain_blocked`) 。      |
| `403` | 请求包含 `threatProtection` 覆盖设置，但该组织已禁用覆盖设置。           |
| `403` | 团队强制启用威胁防护时，`threatProtection` 覆盖设置将 `mode: "off"`。 |
| `403` | 在未启用该功能的团队中使用了威胁防护选项。                               |

<div id="notes">
  ## 说明
</div>

* 该策略在整个组织范围内生效：会自动应用于每个 API 密钥和每个端点。
* 白名单始终优先生效，因此被明确设为受信任的域名绝不会被分类器或 TLD 规则封禁。
* 当失败策略设为 `closed` (默认值) 时，如果分类器发生故障，受影响的请求会被拦截，而不会被默认放行。
