SelenaProxy 是一个带 WebUI 的 HTTP CONNECT 代理池。调用方只需连接 SelenaProxy,它会在需要时向供应商提取短效代理,并处理节点过期、失败切换和并发分配。
机器人 / 脚本 → SelenaProxy → 短效代理节点 → 目标接口
账号鉴权
自动轮换
独立统计
- 按需提取:没有请求时不消耗代理,节点不足时自动补充。
- 多上游分组:可为多个上游 API 命名,账号只使用所选分组对应的代理节点。
- 多账号管理:不同使用方使用独立账号,可分别启用、停用并随时调整上游分组。
- 自动轮换:节点连接失败、过期或不可用时自动切换。
- 访问限制:通过目标域名与端口白名单控制代理用途。
- 用量统计:查看整体及单账号的请求、流量、成功率和耗时。
- WebUI 管理:在网页中配置供应商、账号、代理策略和访问范围。
- 用户用量中心:代理账号可登录独立的
/portal页面,只查看自己的请求成功率、流量和耗时。 - 多种部署方式:支持 Docker、Linux 源码部署和 Windows 源码运行。
管理员在 WebUI 创建并启用代理账号后,用户可以直接使用同一组代理用户名和密码登录:
http://<WebUI 地址>/portal
用户端只返回当前登录账号的今日及累计请求数、成功率、上传/下载流量和平均耗时,不提供账号列表、代理密码、节点、供应商配置、日志或管理员功能。管理员登录与用户登录使用相互独立的 Cookie 和会话,不能互相取得权限。
用户会话保存在内存中,进程重启后需要重新登录。账号被删除、禁用或重新启用,以及用户名、密码或上游分组发生变化时,原用户会话会失效;仅修改显示名称不会中断会话。用户端不会展示代理密码或包含凭据的完整代理 URL。
机器人插件或其他本地工具可只使用原有代理连接链接查询当前账号用量,无需知道 WebUI 端口。例如配置:
http://username:password@proxy.example.com:17891
客户端连接代理端口后发送 GET /selena/usage,并通过 Proxy-Authorization: Basic ... 使用与 HTTP CONNECT 相同的代理账号鉴权。响应只包含该账号自己的今日和累计请求、成功率、上传、下载、总流量与平均耗时。
管理员可在 WebUI 的“设置 → 上游 API”添加多个命名上游。每个上游使用不会随显示名称变化的稳定分组 ID,并可单独填写提取 API 地址;提取间隔、单次数量、超时等策略仍由所有分组共享。
创建账号或编辑已有账号时必须选择一个上游分组。代理认证成功后,SelenaProxy 只会从该账号所属分组提取和分配节点,不会把其他分组的节点混用。删除仍被账号引用的分组会被拒绝,需先在账号管理中调整对应账号。
旧配置中的 provider.api_url 和未设置分组的旧账号会自动迁移到 default 分组。PROXY_PROVIDER_API_URL 仍可作为 default 分组地址为空时的兼容回退。
管理员可在 WebUI 的“设置 → 程序更新”检查当前分支配置的 Git 上游。发现新提交后,页面会显示当前提交、精确目标提交和提交摘要,并要求再次确认目标 SHA 后才开始更新。
更新器有以下安全限制:
- 工作区包含已跟踪或未跟踪的修改时拒绝更新,不会自动
stash、reset、clean、rebase或删除本地文件。 - 只接受当前
HEAD到已确认远程目标的 fast-forward 更新;本地领先、历史分叉、detached HEAD、无上游或确认后目标变化都会停止。 - 先在临时 detached worktree 和独立 Cargo 目录构建精确目标提交;构建失败不会移动当前分支或替换运行程序。
- 通过
scripts/install-source.sh安装的 systemd 部署会使用独立的selena-proxy-update.service完成构建、安装和自动重启。旧安装需要重新运行一次安装脚本来部署更新单元。 - 其他源码运行方式会安装新程序,但必须使用原来的启动命令或进程管理器手动重启。
- Docker、复制出来的独立二进制和非 Git 部署不会在 WebUI 中执行 Git 更新,应更新宿主机源码或容器镜像。
服务重启会清除内存中的管理员和用户会话,需要重新登录。systemd 更新故障可通过以下命令诊断:
systemctl status selena-proxy-update.service
journalctl -u selena-proxy-update.service -n 100 --no-pagerSelenaProxy 可以配合多米代理使用,也可以接入 XutheringWavesUID 或其他支持 HTTP 代理的程序。
安装、配置、WebUI 和使用教程请查看:
本项目使用 GPL-3.0 开源协议。