☰
为什么copymanga-downloader没有15次请求限制?账号池轮转机制深度剖析
2026/9/28 8:55:08 网站建设 项目流程

为什么copymanga-downloader没有15次请求限制?账号池轮转机制深度剖析

【免费下载链接】copymanga-downloader拷贝漫画 copymanga 的多线程下载器,带图形界面 带收藏夹 支持下载下架的漫画 支持导出cbz和pdf,已打包exe 没有每分钟15次API请求的限制 下载速度飞快项目地址: https://gitcode.com/gh_mirrors/cop/copymanga-downloader

copymanga-downloader 是一款针对拷贝漫画(copymanga / mangacopy.com)的多线程漫画下载器,自带图形界面、收藏夹,支持下载下架漫画,还能把章节导出为 CBZ 和 PDF。很多用户好奇:为什么别的工具频繁触发"每分钟 15 次 API 请求"的风控限制,而它下载速度飞快、几乎不踩坑?答案就藏在它的账号池轮转机制里。本文将带你从零看懂这套机制的设计思路 🧐

一、先搞懂:15 次/分钟的限制到底怎么来的

拷贝漫画的接口对单个账号的 token做了频率风控:同一个 token 在短时间内的请求超过阈值(即每分钟 15 次 API 请求)后,接口会直接返回一个特殊的210状态码,而不是正常的200。

  • 单账号工具:所有请求共用一个 token,批量下载几百话时,很快就会撞上 210,之后只能干等或者换账号。
  • 多账号轮转工具:把请求分散到一批账号上,每个账号的请求频率都被压低,天然绕开了单账号限频。

这也是 copymanga-downloader 能在"章节详情"里一次性勾选大量章节飞速下载的根本原因。

二、账号池轮转:核心机制拆解

整个机制的代码集中在 src-tauri/src/account_pool.rs,可以理解为一个"账号排队系统"。

1. 每个账号自带 60 秒冷却计时器

账号池里的每个账号都记录了一个limited_at(被风控的时间戳)。每次取账号时,程序会检查"当前时间距离该账号上次被风控是否已超过 60 秒",只有冷却结束的账号才会被选中使用(对应 account_pool.rs 中的get_available_account)。

简单说:一个账号被限了,就自动休息 1 分钟,下一轮请求换别的账号上场,请求流永不断档。

2. 账号不够用?自动注册新账号

更巧妙的是,你根本不需要手动准备一堆账号。当账号池里没有处于可用状态的账号时,程序会调用 account_pool.rs 中的注册逻辑:

  • 随机生成一个英文姓名 + 数字组成的用户名;
  • 随机生成一个密码并自动完成注册、登录,拿到 token;
  • 新账号入库,同时持久化保存。

账号列表保存在应用数据目录的account.json中,下次启动直接复用,注册一次、终身轮转。

3. 被风控的账号会被"拉黑"并落盘

当某次请求收到210风控响应时,copy_client.rs 会立刻把该账号的limited_at更新为当前时间,并立即写回account.json。这样即使中途退出程序,下次启动也不会立刻使用一个正在被风控的账号。风控错误本身被单独定义为RiskControlError类型(见 errors.rs),与普通网络错误严格区分。

三、下载流程:遇到风控会"自动等、自动重试"

账号池保证了"总有干净的账号可用",而下载管理器还加了一层保险。在 download_manager.rs 的get_chapter_with_retry中:

  1. 一般性错误:随机等待 1~5 秒后重试,最多 5 次,避免瞬间打满接口。
  2. 注册环节也被风控:直接原地等待 60 秒冷却,期间每 1 秒向前端推送一次倒计时事件。
  3. 倒计时会显示在界面上:前端在 ProgressesPane.vue 监听风控事件后,进度条上会显示"风控中,将在 X 秒后自动重试"——用户无需任何操作,下载会自己续上。

配合可配置的章节并发数(默认 3)和图片并发数(默认 30,见 config.rs),请求在时间上被自然摊平,任何单个账号都很难达到 15 次/分钟的阈值。

四、为什么这套设计比"手动换号"更聪明

方案痛点账号池轮转的解法
单账号硬扛几分钟就被 210 风控请求分散到多账号
手动准备多账号维护成本高、token 会失效自动注册 + 自动登录 + 持久化
遇到风控就报错用户中断、手动重试冷却 60 秒 + 自动重试 + 界面倒计时
无节制并发瞬时请求尖峰触发风控信号量限流 + 章节间隔休眠

一句话总结:"单账号限速"变成了"账号池限频",限制没有消失,只是被分摊到了足够多的账号上,对用户的体感就是"没有 15 次请求限制"。

总结

copymanga-downloader 的账号池轮转机制由三块拼图组成:

  • ⏱️60 秒冷却计时:被风控的账号自动休息,冷却结束再复用;
  • 🤖自动注册补池:账号不足时随机生成新账号,注册、登录、入库全自动;
  • 🔁重试 + 倒计时:风控时等待并自动重试,进度面板实时显示恢复时间。

如果你也想研究实现细节,重点阅读 src-tauri/src/account_pool.rs(账号池与自动注册)和 src-tauri/src/copy_client.rs(210 风控码的处理)这两个文件即可。需要自己编译的话,克隆仓库后安装 Rust、Node、pnpm,依次执行依赖安装与pnpm tauri build即可构建完成 🚀

【免费下载链接】copymanga-downloader拷贝漫画 copymanga 的多线程下载器,带图形界面 带收藏夹 支持下载下架的漫画 支持导出cbz和pdf,已打包exe 没有每分钟15次API请求的限制 下载速度飞快项目地址: https://gitcode.com/gh_mirrors/cop/copymanga-downloader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询