qbittorrent程序化管理需通过其web api实现,包括登录认证、添加种子(磁力/文件/url)、查询筛选任务、批量控制及轮询sync接口实现近实时同步。

如果您希望对qBittorrent进行程序化管理,例如自动添加种子、批量暂停任务或实时获取下载状态,则需通过其内置的Web API接口实现。以下是调用qBittorrent Web API完成自动化控制的具体方法:
一、获取并验证API访问权限
qBittorrent Web API采用基于会话的认证机制,首次调用前必须完成登录以获取有效Cookie。该过程不依赖API密钥,而是通过标准HTTP表单提交凭据并维持会话状态。
1、向 /api/v2/auth/login 端点发送POST请求,携带 username 和 password 参数(明文传输,建议启用HTTPS)。
2、检查响应HTTP状态码是否为 200 OK,且响应体为字符串 Ok.;若返回 Fails.,说明凭据错误或Web UI未启用。
3、后续所有API请求必须在Headers中携带上一步响应所设置的 Set-Cookie 中的 SID 值,格式为 Cookie: SID=xxx。
二、添加新种子任务
支持三种主流方式将种子注入qBittorrent:磁力链接、Torrent文件上传、URL种子地址。每种方式对应不同的请求构造逻辑和Content-Type处理。
1、使用磁力链接添加:向 /api/v2/torrents/add 发送POST请求,Body中包含 urls=magnet:?xt=...(支持多个磁力链接,用换行符分隔)。
2、上传本地.torrent文件:构造multipart/form-data请求,字段名为 torrents,值为文件二进制流;可同时附加 category、savepath 等参数。
3、从远程URL下载种子:在POST Body中指定 urls=https://example.com/file.torrent,qBittorrent将主动抓取并解析该URL指向的种子文件。
三、查询与筛选种子列表
获取当前所有任务的状态快照是实现监控与决策的基础。/api/v2/torrents/info端点返回结构化JSON数据,包含哈希值、名称、进度、速度、标签、分类等全部元信息,支持多维过滤。
1、基础查询:GET请求访问 /api/v2/torrents/info,默认返回全部种子。
2、按状态筛选:在URL中添加查询参数 filter=downloading(可选值包括all、downloading、completed、paused、error、checking、queued等)。
3、按标签或分类筛选:使用 tag=video 或 category=linux 进行精确匹配;支持组合条件,如 filter=completed&tag=backup。
四、执行批量控制操作
qBittorrent原生Web API不提供单一批量端点,但可通过循环调用单任务接口,或借助其底层支持的哈希数组参数实现高效批量管理。所有支持多目标的操作均接受逗号分隔的哈希字符串作为参数值。
1、暂停多个任务:向 /api/v2/torrents/pause 发送POST请求,Body中包含 hashes=aaabbbccc,dddeeefff。
2、删除并清空文件:向 /api/v2/torrents/delete 发送POST请求,Body中同时传递 hashes=... 和 deleteFiles=true。
3、统一设置限速:向 /api/v2/torrents/setDownloadLimit 提交 hashes=... 与 limit=5242880(单位字节/秒)。
五、监听实时状态变化(SSE替代方案)
原生qBittorrent Web API不原生支持SSE或WebSocket,但可通过轮询 /api/v2/sync/maindata 端点模拟近实时同步。该接口返回增量更新数据包,含全局状态、Torrent列表变更哈希、以及各任务的diff摘要,显著降低带宽消耗。
1、首次调用 /api/v2/sync/maindata 获取完整快照,并记录响应中的 full_update 时间戳与 rid(request ID)。
2、后续请求携带 rid=xxx 查询参数,服务端仅返回自该rid以来发生变化的任务子集。
3、当响应中出现 new_rid 字段时,更新本地rid值,并继续下一轮增量拉取。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











