NeCr00/Waybackdown

GitHub: NeCr00/Waybackdown

一款采用主机优先策略的多源历史网页快照批量下载工具,支持 Wayback、archive.ph、Common Crawl 等存档源,能高效获取指定 URL 的历史版本。

Stars: 0 | Forks: 0

# waybackdown 使用 **主机优先策略** 从多个公共存档下载历史网页快照,从而最大限度地减少 CDX 请求。 该工具不是每个 URL 查询一次存档,而是从输入列表中提取所有唯一主机名,**每个主机仅查询一次** 每个存档以检索其完整 URL 清单,然后将该清单与用户列表进行匹配 —— 当许多输入 URL 共享同一域名时,这能显著减少 API 调用。 ## 安装 **从源码安装** (需要 Go 1.21+): ``` go install github.com/NeCr00/Waybackdown@latest ``` ## 使用方法 ``` waybackdown -u [-u ...] [options] waybackdown -l [options] cat urls.txt | waybackdown [options] ``` | 标志 | 默认值 | 描述 | |------|---------|-------------| | `-u` | | 要下载的 URL (可重复: `-u url1 -u url2`) | | `-l` | | 每行一个 URL 的文件 | | `-mode` | `newest` | `oldest` · `newest` · `all` | | `-o` | `waybackdown_output` | 输出目录 | | `-c` | `10` | 每个提供者并发处理的主机数 | | `-max` | `0` (无限制) | `all` 模式下每个 URL 的最大快照数 | | `-status` | `` (所有) | 根据捕获时的 HTTP 状态过滤 (例如 `200`) | | `-providers` | `wayback,archiveph,commoncrawl,arquivo` | 提供者优先级顺序 | | `-rps` | `5.0` | 下载 + 非 CC CDX 的请求/秒 (0 = 无限制) | | `-burst` | `20` | 速率限制器突发大小 | | `-cc-rps` | `5.0` | Common Crawl CDX 请求/秒 (独立于 `-rps`) | | `-cc-burst` | `20` | CC CDX 速率限制器突发大小 | | `-cc-max` | `3` | 每个主机查询的最大 Common Crawl 索引集合数 | | `-host-limit` | `100000` | 每个主机清单查询的最大 CDX 记录数 (0 = 无限制) | | `-dl-workers` | `4` | `all` 模式下每个 URL 的并行下载工作线程数 | | `-timeout` | `30s` | 单次请求 HTTP 超时时间 | | `-retries` | `3` | 临时失败的重试次数 | | `-v` | | 详细输出 | ## 示例 ``` # 单个 URL 的最新快照 waybackdown -u https://target.com # URL 的所有历史版本,详细模式 waybackdown -u https://target.com -mode all -v # 仅成功的 (200 OK) 捕获 waybackdown -u https://target.com/login.php -mode all -status 200 # 通过重复 -u 标志指定多个 URL (单个 host → 1 次 CDX 查询) waybackdown -u https://target.com -u https://target.com/login -u https://target.com/admin -mode newest # 批量列表:一次 host 级查询覆盖来自同一域名的所有 URL waybackdown -l urls.txt -mode newest -o ./archives # 来自其他工具的管道输入 cat urls.txt | waybackdown -mode all -status 200 # 仅 Wayback + Common Crawl waybackdown -l urls.txt -providers wayback,commoncrawl -rps 10 -burst 40 ``` ## 工作原理 ``` Input URLs → extract unique hosts → deduplicate │ ┌──────────▼──────────┐ │ Provider 1 (Wayback)│ │ query: host/* │ ← one CDX request per host │ match user URLs │ │ download matches │ └──────────┬──────────┘ │ unresolved URLs only ┌──────────▼──────────┐ │ Provider 2 (archiveph) │ │ per-URL fallback │ ← no host query support └──────────┬──────────┘ │ unresolved URLs only ┌──────────▼──────────┐ │ Provider 3 (CC) │ ← host/* across all collections └──────────┬──────────┘ │ still not found "not found in any archive" ``` **请求节省示例:** `example.com` 的 500 个 URL → 仅需 1 次 CDX 请求,而不是 500 次。 ## 输出结构 ``` waybackdown_output/ └── target.com/ └── path/to/page/ ├── 20230101120000_200.html └── 20210615093012_200.html ``` 文件以原子方式写入。重新运行时会跳过已下载的快照(支持断点续传)。 ## 提供者 | 提供者 | 来源 | 主机级查询 | |----------|--------|-----------------| | `wayback` | web.archive.org CDX API | ✓ (`url=host/*`) | | `archiveph` | archive.ph Memento timemap | ✗ (按 URL 回退) | | `commoncrawl` | index.commoncrawl.org CDX + WARC 字节范围 | ✓ (每个集合 `url=host/*`) | | `arquivo` | arquivo.pt CDX API | ✓ (`url=host/*`) | 提供者按优先级顺序尝试。每个提供者仅接收未被先前提供者解析的 URL。对于不支持主机级查询的提供者,将使用单独的 URL 查询作为回退。
标签:API请求优化, Archive.today, CDX接口, CLI, ESC4, Go, Golang, OSINT, Ruby工具, Wayback Machine, WiFi技术, 主机优先策略, 历史快照, 反汇编, 安全编程, 归档数据提取, 批量下载, 数字取证, 日志审计, 网站备份, 网络归档, 自动化脚本