# Afrog 官方教程(7)：断点续扫 -resume，用一次 Ctrl+C 把长任务“拆成多段”

在真实场景里，漏洞扫描很少是一口气跑完的：

- 目标很多，扫描需要跑很久
- 网络不稳定，代理/VPN 经常断
- 扫描窗口有限（夜间/维护窗口）
- 需要临时降速，避免对业务造成压力

这时候最实用的能力就是：中断后“接着跑”，而不是从头再来。Afrog 的 `-resume` 就是为这个场景准备的。

本文面向第一次用 Afrog 的同学，用最少概念讲清楚 `-resume` 的经典用法与常见误区。

---

## 1. 一句话理解 -resume

`-resume` 用一个“进度文件”记录你已经完成的扫描任务，让你下次启动时只补扫剩余部分。

在新版实现里，断点续扫的粒度提升到 **target×PoC 任务级**：只要某个 target 上某个 PoC 已经跑过，续扫就会跳过它。

本文的“任务级续扫 + 进度从上次直接恢复”的行为，以 afrog 版本 **v3.5.2 以上**为准。

---

## 2. 最常用的标准流程（建议直接背下来）

### 2.1 启动扫描

单目标：

```bash
afrog -t http://example.com
```

批量目标（推荐）：

```bash
afrog -T targets.txt
```

### 2.2 中断保存（Ctrl+C）

当你需要停止扫描（例如要关机、要换网络、要下班），直接按一次 `Ctrl+C`。

Afrog 会提示类似：

```
Scan termination signal received
Scan state archived: afrog-resume-xxx.afg
```

这个 `.afg` 文件就是“进度文件”。

### 2.3 续扫（只补剩余部分）

下次继续：

```bash
afrog -T targets.txt -resume afrog-resume-xxx.afg
```

---

## 3. target×PoC 任务级续扫，到底“强”在哪里

假设你有 1000 个目标、2000 个 PoC，总任务量 200 万。

旧式的“PoC 级”续扫通常会出现这种问题：

- 你在 PoC A 扫到一半时中断
- 续扫只能记住“PoC A 做过了/没做过”
- 于是 PoC A 在续扫时要么全部重扫，要么全部跳过（两头都不理想）

target×PoC 任务级的好处是：

- PoC A 在 target1、target2 已经跑完
- target3 还没跑
- 续扫时只跑 PoC A 的 target3，前面跑过的不会重复请求

这在“目标很多、经常中断”的情况下，能显著减少重复扫描时间与重复流量。

---

## 4. 经典应用场景（照抄即可）

### 场景 A：大规模扫描，随时可中断继续

```bash
afrog -T urls.txt
```

中断后继续：

```bash
afrog -T urls.txt -resume afrog-resume-xxx.afg
```

### 场景 B：扫描窗口受限，分多天跑完

第一天跑到一半 `Ctrl+C` 保存。

第二天：

```bash
afrog -T urls.txt -resume afrog-resume-xxx.afg
```

### 场景 C：网络/代理不稳定，断开后快速续跑

第一次：

```bash
afrog -T urls.txt --proxy socks5://127.0.0.1:7890
```

代理断了就 `Ctrl+C`，修好代理后直接续扫：

```bash
afrog -T urls.txt --proxy socks5://127.0.0.1:7890 -resume afrog-resume-xxx.afg
```

### 场景 D：先稳后快，动态调整并发/限速但不想重扫

先保守跑一段：

```bash
afrog -T urls.txt -c 10 -rl 50
```

中断后改成更快的继续：

```bash
afrog -T urls.txt -resume afrog-resume-xxx.afg -c 50 -rl 200
```

---

## 5. 常见误区与最佳实践

### 误区 1：以为续扫必须“从上次百分比开始显示”

进度显示和“实际是否重扫”是两回事。

新版 `-resume` 会在进度文件里记录已完成任务数/总任务数，续扫时进度条会直接从上次完成度开始，不再出现“看起来从 0% 开始”的假象。

### 误区 2：续扫时随意改参数，结果进度不准

`-resume` 最适合在“扫描目标集合与 PoC 集合基本一致”的情况下使用。

如果你续扫时大幅修改了参数，例如：

- 改了 `-s/-S/-ep/-P` 导致 PoC 集合差异很大
- 改了 `-t/-T` 导致目标集合差异很大

那么进度条的百分比可能会变得不够直观（但扫描本身仍然会按“已完成任务跳过、未完成任务补扫”的原则运行）。

最佳实践：

- 续扫尽量保持目标输入与 PoC 过滤条件一致
- 如果你想做“另一套扫描策略”，建议新开一次扫描并使用新的进度文件

### 误区 3：手动编辑 .afg 文件

不建议手动修改 `.afg` 文件内容。你只需要做到两件事：

- 中断时 `Ctrl+C` 让它自动保存
- 续扫时把 `-resume` 指向它

---

## 6. 你应该把 -resume 当作什么

把 `-resume` 当作“扫描任务的断点存档”，它的价值在于：

- 降低长任务的心理压力：随时停、随时续
- 降低不可控因素的成本：网络/机器/窗口变更都不会让你从头再来
- 降低重复流量：target×PoC 级续扫能跳过已完成任务

如果你经常跑批量目标，`-resume` 属于必用能力。
