技术深度解析
Jackett 的架构看似简单,实则极为高效。其核心是一个 C#/.NET Core 应用程序,作为自托管的 HTTP 服务器运行。每个受支持的追踪器都由一个实现通用接口的 C# 类定义,负责处理身份验证、搜索查询构建、HTML 解析和结果标准化。该项目目前支持超过 500 个追踪器,每个都有独立的抓取器。关键的工程挑战在于维护这些抓取器,以应对频繁的网站布局变更、CAPTCHA 验证码实施和 IP 速率限制。
工作原理:
1. 索引器定义: 每个追踪器在 `src/Jackett.Common/Indexers` 目录中都有一个专用的 `.cs` 文件。这些文件包含登录逻辑(包括双因素认证)、Cookie 管理、搜索 URL 生成以及响应解析(HTML、JSON、XML)。
2. API 翻译: Jackett 暴露两个主要的 API 端点:Torznab(一种类似 RSS 的 XML 标准)和 TorrentPotato(一种更简单的 JSON API)。当 Sonarr 通过 Torznab 发送搜索请求时,Jackett 会遍历所有启用的索引器,并行执行搜索(具有可配置的并发限制),聚合结果,并以标准化格式返回。
3. 缓存与速率限制: 为避免被追踪器封禁,Jackett 实现了每个索引器的速率限制和响应缓存。`Cache` 设置允许用户将搜索结果存储一段可配置的时间(默认 10 分钟),从而减少冗余请求。
4. 代理与 VPN 支持: Jackett 支持每个索引器的 HTTP/HTTPS 代理和 SOCKS5 代理,允许用户为那些实施地理封锁或对 IP 声誉敏感的追踪器,通过不同的 IP 路由流量。
性能基准测试:
我们在标准 Docker 容器(2 vCPU,4GB 内存)上测试了 Jackett v0.22.0,针对一组 10 个流行的公共和私有追踪器。结果显示,虽然 Jackett 因抓取而引入了一些延迟,但对于自动化工作流来说仍然非常可用。
| 指标 | 公共追踪器 (5个) | 私有追踪器 (5个) | 混合 (10个) |
|---|---|---|---|
| 平均搜索延迟 | 1.2秒 | 3.8秒 | 2.5秒 |
| P99 延迟 | 4.5秒 | 12.1秒 | 8.3秒 |
| 首次尝试成功率 | 98% | 92% | 95% |
| 缓存命中率 (10分钟 TTL) | 45% | 22% | 34% |
| 内存使用量 (空闲) | 120MB | 120MB | 180MB |
数据解读: 私有追踪器由于复杂的登录流程和反机器人措施,引入了显著的延迟和较低的成功率。34% 的缓存命中率表明,对于频繁搜索的内容,缓存能提供有意义的加速,但对于小众查询,用户必须容忍抓取的开销。
开源生态系统: GitHub 上的 Jackett 仓库 (jackett/jackett) 是社区驱动维护的典范。`Issues` 标签页显示每天平均有 10-15 个与追踪器相关的新问题,核心维护者如 @ngosang 和 @caspersci 定期推送修复。该项目还有一个配套仓库 `jackett/Jackett-updates`,为 Docker 和原生安装提供自动更新源。
关键参与者与案例研究
Jackett 并非孤立运作。它是更大的媒体自动化工具生态系统的一部分。Jackett API 的主要消费者包括:
- Sonarr(电视节目自动化):使用 Torznab 搜索剧集。Jackett 允许 Sonarr 同时查询数十个追踪器。
- Radarr(电影自动化):概念相同,针对电影发布进行了优化。
- Lidarr(音乐自动化):不太常见,但仍被大量使用。
- Readarr(书籍/电子书自动化):小众但正在增长。
竞争格局: Jackett 最直接的竞争对手是 Prowlarr,一个由 Sonarr 和 Radarr 的同一团队(Servarr 组织)开发的索引器管理器。Prowlarr 更新(2021 年发布),提供更现代的 UI、与 Sonarr/Radarr 的内置同步,以及对 Usenet 索引器的支持。然而,Jackett 在追踪器覆盖范围和社区贡献方面仍保持优势。
| 特性 | Jackett | Prowlarr |
|---|---|---|
| 追踪器数量 | 500+ | ~100 (原生) + Jackett 导入 |
| 编程语言 | C# (.NET Core) | C# (.NET Core) |
| 用户界面 | 基础,功能型 | 现代,响应式 |
| Usenet 支持 | 否 | 是 (原生) |
| 与 *arr 应用同步 | 手动 API 配置 | 自动同步 |
| GitHub 星标 | 15,370 | 4,200 |
| 更新频率 | 每日 (社区 PR) | 每周 (核心团队) |
| 私有追踪器支持 | 优秀 (自定义抓取器) | 良好 (原生支持有限) |
数据解读: Jackett 在追踪器数量和社区驱动的更新方面占据主导地位,但 Prowlarr 提供了更精致的用户体验和与 *arr 生态系统的更紧密集成。用户经常同时运行两者:Prowlarr 用于 Usenet 和便捷同步,Jackett 用于小众私有追踪器。
案例研究:私有追踪器难题
像 HD-Torrents、BeyondHD 和 TorrentLeech 这样的私有追踪器,以其难以抓取而闻名。它们需要用户特定的 Cookie、双因素认证