Skip to content

feat: support proxy_url in CPA auth files#51

Merged
cnlimiter merged 1 commit intocnlimiter:masterfrom
starsalwaysineyes:feat/cpa-auth-file-proxy-url
Mar 20, 2026
Merged

feat: support proxy_url in CPA auth files#51
cnlimiter merged 1 commit intocnlimiter:masterfrom
starsalwaysineyes:feat/cpa-auth-file-proxy-url

Conversation

@starsalwaysineyes
Copy link
Contributor

背景

当前项目虽然支持动态代理/代理池参与注册流程,但账号上传到 CPA 时,生成的 auth file 里不会带上任务实际使用的代理信息。

这会导致一个比较常见的问题:

  • 注册阶段用了动态代理拿到账号
  • 后续把账号上传到 CPA / CLI Proxy API 之类的管理端时
  • 下游看不到这条账号对应的 proxy_url
  • 结果就是上号、轮转、复用时没法沿用注册阶段已经验证过的代理链路

这次 PR 的目标就是补上这条能力:

允许按 CPA 服务开关,决定是否把账号实际使用的代理写入上传到 CPA 的 auth file 顶层 proxy_url 字段。

变更内容

1. 为 CPA 服务增加服务级开关

新增 include_proxy_url 配置字段,用来控制该服务在上传 auth file 时是否写入 proxy_url

涉及:

  • src/database/models.py
  • src/database/session.py
  • src/database/crud.py
  • src/web/routes/upload/cpa_services.py

同时补上 SQLite 自动迁移,已有库会自动新增该字段。

2. CPA auth file 生成逻辑支持可选写入 proxy_url

扩展 generate_token_json(...)

  • 默认保持原行为,不写 proxy_url
  • 仅当 include_proxy_url=True 时才写入
  • 优先使用账号本身记录的 account.proxy_used
  • 如果账号上没有记录代理,再回退到显式传入的兜底 proxy_url

涉及:

  • src/core/upload/cpa_upload.py

3. 单个上传 / 批量上传接入这条开关

上传到指定 CPA 服务时,会读取该服务的 include_proxy_url 设置,并决定是否把代理写入 auth file。

涉及:

  • src/web/routes/accounts.py

4. 注册成功后的自动上传也接入

对于“注册完成后自动上传到一个或多个 CPA 服务”的路径,也会按每个服务自己的开关分别生成 auth file。

也就是说:

  • A 服务开启了 include_proxy_url
  • B 服务没开启
  • 同一个账号自动上传时,A 会拿到带 proxy_url 的 auth file,B 仍然保持原格式

涉及:

  • src/web/routes/registration.py

5. 设置页补齐 UI

在 CPA 服务管理页增加:

  • 列表中的“代理写入”状态展示
  • 编辑/新增服务时的复选开关
  • 对应提示文案

涉及:

  • templates/settings.html
  • static/js/settings.js

6. 文档和测试补充

  • README 补充该能力说明
  • 新增测试覆盖 proxy_url 注入逻辑

涉及:

  • README.md
  • tests/test_cpa_upload.py

行为说明

这个 PR 不会让 CPA 上传请求本身走代理

CPA 上传仍然保持现在的行为:

  • 上传请求直连,不走代理
  • 只是按开关把账号记录的代理写入 auth file 的 proxy_url

也就是说,这次变更是“把代理配置带到认证文件里”,不是“改变上传链路本身的网络出口”。

测试

已本地验证:

uv run --with pytest pytest tests/test_cpa_upload.py

结果:6 passed

兼容性

  • 默认关闭,老配置不受影响
  • 未开启 include_proxy_url 的 CPA 服务行为与之前完全一致
  • 对已有数据库通过自动迁移补列,兼容现有部署

备注

这次先只覆盖 上传到 CPA / 注册后自动上传到 CPA 两条链路。

导出 CPA 格式 JSON 目前未与该开关联动,避免把这次 PR 做得过大。如果需要,我可以后续再补一条 PR,把导出逻辑也统一成同一套策略。

@cnlimiter
Copy link
Owner

没问题,感谢贡献!

@cnlimiter cnlimiter merged commit 3ddad7a into cnlimiter:master Mar 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants