使用说明
用于配置阿里云 ECS 节点、创建 Dante SOCKS5 启动模板,并安全地调和代理池规模。
1. 配置
- 在“阿里云设置”中填写专用 RAM 用户的 AccessKey、地域、启动模板、实例标签池名称;资源组和模板版本可选。
- 填写 SOCKS 用户名、密码和代理 API Token。秘密字段留空会保留原值;只有勾选“清除现有密钥”才会清除 AccessKey Secret。
- 也可通过同目录
.env.local或系统环境变量提供配置;优先级为系统环境变量 >.env.local> 已保存设置。没有.env.local时兼容读取.env。.env.local支持的全部变量如下:
# 阿里云凭据与地域(必填) ALIBABA_CLOUD_ACCESS_KEY_ID=LTAI... ALIBABA_CLOUD_ACCESS_KEY_SECRET=... ALIYUN_REGION_ID=cn-hangzhou # 实例标签池名称(必填,默认 proxy-main) ALIYUN_POOL_NAME=proxy-main # SOCKS5 代理配置(必填,否则代理池不可用) SOCKS5_PORT=1080 SOCKS5_USERNAME=myuser SOCKS5_PASSWORD=mypassword SOCKS5_CHECK_HOST=1.1.1.1 SOCKS5_CHECK_PORT=80 SOCKS5_TIMEOUT=5 # 代理 API 认证令牌(必填,用于提取代理和 API 控制) PROXY_API_BEARER_TOKEN=your-secret-token
- 建议使用最小权限 RAM 用户。未完整配置或校验失败时,“立即调和”不可用。
2. 按钮功能说明
工具栏从左到右依次排列以下按钮和控件:
目标节点数 + 应用
输入期望维持的 ECS 节点数量(0–1000 的整数),点“应用”保存。调和时会以此为基准:实际节点少则创建,多则释放。设为 0 表示回收全部受管节点。
立即调和
手动触发一次调和。系统会比较目标数与实际节点数,自动创建或释放 ECS 实例,并对运行中的节点执行 SOCKS5 健康检查。调和执行期间按钮禁用,快捷键 Ctrl+Enter 可等效触发。
代理测试
打开代理测试对话框,选择一个健康节点并指定目标 URL,通过该节点的 SOCKS5 代理向目标发起 HTTP GET 请求,返回状态码、延迟和响应大小,用于验证代理可用性。
负载均衡
打开负载均衡对话框,选择调度策略后获取一个代理地址。支持四种策略:轮询、随机、最少连接、最低延迟。控制台内调用无需 Token,适合快速获取单个代理。
阿里云设置
打开设置对话框,配置 AccessKey、地域、启动模板、池名称、SOCKS 凭据、API Token 及调和参数(批量大小、超时、自动调和间隔、断路器阈值)。修改后点“保存”生效。
创建安全组
打开创建安全组对话框,输入名称和描述,选择目标交换机后创建普通 VPC 安全组。仅创建安全组本身,不创建任何入站规则(创建启动模板时会自动为 TCP 1080 添加规则)。
创建启动模板
打开创建启动模板对话框,选择镜像、实例规格、交换机和安全组后,通过 cloud-init 自动安装并配置 Dante SOCKS5 服务,创建成功后自动回填模板 ID 和版本到设置中。
使用说明
打开本帮助页面。
自动刷新 + 间隔选择
勾选“自动刷新”后,页面会按所选间隔(3/5/10/30 秒)定时拉取最新节点状态。取消勾选则停止自动刷新。
刷新
立即手动刷新节点状态和账单信息,快捷键 F5 等效。
节点列表 — 删除按钮
每行节点右侧的“删除”按钮用于手动下线并释放指定 ECS 实例。点击后会弹出确认对话框,确认后先从代理池下线再永久释放。调和执行期间禁用。
3. Dante 启动模板
先保存 AccessKey、地域和 SOCKS 凭据,再点“创建启动模板”。选择 Ubuntu 镜像、实例规格、交换机及安全组后,控制台通过 cloud-init 安装并配置 Dante,创建成功会自动回填模板 ID 与版本。
- 模板开放 TCP
1080并使用已配置的 SOCKS 用户名和密码;客户端必须使用认证。 - 安全组入口应只允许可信客户端公网 IP,避免向全网开放代理端口。
- 自定义现有模板时,应保证 Ubuntu 可访问软件源、cloud-init 能执行、Dante 监听配置端口且实例具有公网 IP。
5. WarpGate 启动模板与提取
选择 WarpGate 模式后,先填写控制端公网 IP/CIDR 白名单,例如 203.0.113.10/32,再创建启动模板。模板会安装 Docker 和 WarpGate,并开放 API 端口 4433、认证代理端口 10010–10209 及白名单免密代理端口 11010–11209。
- API 白名单只允许控制端访问,不要填写
0.0.0.0/0。 - “提取 IP 类型”选择 IPv4、IPv6 或 IPv4 + IPv6;API 示例:
GET /api/proxies?family=ipv4、family=ipv6或family=both。 - 返回结果包含代理地址、
exit_ip、IP 类型和 ECS 节点信息;控制台会自动优先使用白名单免密代理。 - 每台 ECS 的出口数量越多,启动和初始化所需时间越长。
{"proxy":"socks5://203.0.113.10:10012","proxy_whitelist":"socks5://203.0.113.10:11012","exit_ip":"2001:db8::10","whitelist_mode":true}6. 扩缩容与调和
- 输入 0–1000 的目标节点数并点“应用”。
- 点“立即调和”:少于目标时按候选交换机顺序创建实例;多于目标时先将节点从代理池下线,再释放 ECS。
- 节点通过 SOCKS 健康检查后才进入“健康”状态。执行期间不要重复操作或手工修改带管理标签的实例。
- 新实例创建后需等待约 60 秒让 cloud-init 完成 Dante 安装与配置,再触发一次调和执行 SOCKS5 健康检查;提前检测会因服务未就绪而标记为
error。 - 目标设为
0会在调和时回收全部受管节点,请先确认业务流量已迁移。
5. 提取 SOCKS 代理
节点进入“健康”状态后,即可提取代理地址。系统提供三种提取方式:
方式一:控制台“负载均衡”按钮(快速获取单个代理)
- 点击工具栏“负载均衡”按钮。
- 选择调度策略:轮询(默认)、随机、最少连接、最低延迟。
- 点“获取代理”,结果区显示一个完整的 SOCKS5 代理 URL。
- 控制台内调用无需 Token,适合手动复制使用。
方式二:API 获取全部代理列表
GET /api/proxies 返回当前所有健康代理,必须携带 Bearer Token:
curl -H "Authorization: Bearer <API_TOKEN>" http://127.0.0.1:8765/api/proxies
成功响应形如:
{"proxies":["socks5://user:password@203.0.113.10:1080","socks5://user:password@203.0.113.11:1080"],"count":2}
方式三:API 按策略获取单个代理
GET /api/proxies/balanced?strategy=round-robin 按调度策略返回一个代理,需 Token 认证:
curl "http://127.0.0.1:8765/api/proxies/balanced?strategy=lowest-latency&token=<API_TOKEN>"
成功响应形如 {"proxy":"socks5://user:password@203.0.113.10:1080","strategy":"lowest-latency"}。可选策略:round-robin(轮询)、random(随机)、least-connections(最少连接)、lowest-latency(最低延迟)。
代理 URL 格式
所有方式返回的代理 URL 统一格式为 socks5://用户名:密码@公网IP:端口,默认端口 1080。用户名和密码已做 URL 编码,可直接用于支持 SOCKS5 的客户端。
客户端使用示例
# curl 通过代理访问
curl --socks5 socks5://user:password@203.0.113.10:1080 https://httpbin.org/ip
# Python requests
import requests
proxies = {"http": "socks5://user:password@203.0.113.10:1080",
"https": "socks5://user:password@203.0.113.10:1080"}
r = requests.get("https://httpbin.org/ip", proxies=proxies)
# 浏览器(以 Firefox 为例)
# 设置 → 网络设置 → 手动代理配置 → SOCKS 主机填 IP,端口 1080,选 SOCKS v5,勾选远程 DNS响应包含代理凭据,只应通过受信网络调用。Token 不应写入日志、聊天或前端公开代码。
6. 代理测试与负载均衡
代理测试
点击工具栏“代理测试”按钮,在对话框中选择一个健康节点并输入目标 URL(默认 https://httpbin.org/ip),点“执行测试”后系统会通过该节点的 SOCKS5 代理向目标发起 HTTP GET 请求,返回:
ok— 测试是否成功status_code— HTTP 状态码latency_ms— 端到端延迟(毫秒)response_size— 响应体大小(字节)
负载均衡策略说明
- 轮询 (round-robin) — 按固定顺序依次分配代理,适合均匀分担流量。
- 随机 (random) — 随机选取一个代理,适合无状态场景。
- 最少连接 (least-connections) — 优先分配当前连接数最少的代理,适合长连接场景。
- 最低延迟 (lowest-latency) — 优先分配健康检查延迟最低的代理,适合对速度敏感的场景。
每次通过 API 或负载均衡按钮获取代理时,系统会自动递增该节点的连接计数,供“最少连接”策略参考。
7. 删除节点
节点列表的“删除”只对同时具备控制器双重管理标签的实例生效。确认后会先从代理池下线,再永久释放 ECS,且无法撤销;调和执行期间禁止删除。删除后若目标数未降低,下次调和可能创建替代节点,因此永久缩容应先降低目标数。
8. 费用与安全
- 创建 ECS、公网带宽和流量均可能计费;余额、可用额度和当月花费对应的账单非实时,以阿里云费用中心出账为准。按量实例还可能有最低可用额度要求。
- 定期检查目标节点数、账单与异常实例;不用时将目标降为 0 并调和,确认资源已释放。
- 不要使用主账号 AccessKey。定期轮换 AccessKey、SOCKS 密码和 API Token,并限制控制台监听地址及主机防火墙。
- 写操作仅接受本机请求,但若将服务暴露到公网,读接口和页面仍可能泄露运行信息;默认仅监听
127.0.0.1。
切勿通过截图、工单或聊天发送 AccessKey Secret、SOCKS 密码或 API Token。
9. 故障排查
调和按钮不可用
检查 AccessKey、地域、启动模板、池名称和代理配置是否完整;查看“最近事件”中的初始化错误,并确认 RAM 权限与地域一致。
实例一直“启动中”
检查 ECS 是否取得公网 IP、TCP 1080 安全组规则、cloud-init 日志、Dante 服务状态、SOCKS 凭据及健康检查目标是否可达。
创建或删除失败
确认账户余额/额度、实例库存、交换机可用 IP、配额、资源组及 ecs:RunInstances/ecs:DeleteInstances 权限。删除还要求双重管理标签且当前没有调和任务。
代理 API 返回 401 或 409
401 表示 Bearer Token 缺失或错误;409 通常表示真实代理池尚未配置。修改秘密后重新保存设置再重试。
账单读取失败或延迟
授予 bssapi:QueryAccountBalance 与 bssapi:QueryBillOverview 只读权限;账单延迟时直接到阿里云费用中心核对。
10. 抢占式实例教程
抢占式实例(Spot Instance)利用阿里云空闲计算资源,价格最高可比按量付费便宜 90%,非常适合代理池这类可容忍中断的工作负载。本节介绍如何在本控制台中启用和管理抢占式实例。
10.1 什么是抢占式实例
- 按需获取 — 当有空闲资源时按当前市场价分配实例。
- 可能被回收 — 资源紧张时阿里云会自动回收实例,提前 5 分钟发出中断通知。
- 按秒计费 — 不足 60 秒按 60 秒计算,无最低消费。
- 保护期 — 可选择 1 小时或 6 小时保护期,保护期内不会被回收,但价格略高于无保护期。
10.2 适用场景评估
| 场景 | 是否推荐抢占式 | 原因 |
|---|---|---|
| 代理池(多节点负载均衡) | ✓ 强烈推荐 | 单节点被回收不影响整体可用性,调和会自动补节点 |
| 需要 7×24 不间断单节点 | ✗ 不推荐 | 单点故障无冗余,被回收即服务中断 |
| 大批量短时任务 | ✓ 推荐 | 短时任务可在保护期内完成,成本极低 |
| 有状态服务(数据库等) | ✗ 不推荐 | 被回收导致数据丢失,需额外持久化方案 |
10.3 配置步骤
- 点击工具栏「阿里云设置」按钮打开设置对话框。
- 找到「实例计费方式」下拉框,从「按量付费」切换为「抢占式」。
- 在「抢占式保护期」下拉框中选择保护期时长:
- 无保护期(价格最低) — 随时可能被回收,价格最便宜,适合多节点代理池。
- 1 小时保护期 — 创建后 1 小时内不会被回收,适合需要短期稳定运行的任务。
- 6 小时保护期 — 创建后 6 小时内不会被回收,价格略高,适合需要较长时间运行的任务。
- 点击「保存」。设置立即生效,后续创建的所有新实例均使用抢占式计费。
切换计费方式只影响新创建的实例。已在运行的按量付费实例不会被自动转换,如需替换可手动删除旧节点让调和自动以抢占式重建。
10.4 抢占式实例的生命周期管理
本控制台自动处理抢占式实例的完整生命周期:
- 创建 — 调和时按
SpotAsPriceGo策略出价(跟随市场价),自动创建抢占式实例。 - 健康检查 — 与按量付费实例一样,创建后等待约 60 秒执行 SOCKS5 健康检查,通过后进入「健康」状态并加入代理池。
- 中断预警 — 阿里云在回收前会发出系统事件,控制台在刷新时检测到实例进入
Stopping/Recycling状态会自动将其从代理池下线,避免向即将消失的节点分配流量。 - 自动补节点 — 被回收的实例在下次调和时会被检测为「缺失」,控制台自动创建新的抢占式实例补足目标节点数。如果已开启自动调和(间隔 > 0),整个过程无需人工干预。
- 手动处理 — 也可以在节点列表中手动点击「删除」释放被标记为
error的实例,调和会自动补节点。
10.5 推荐配置
针对代理池场景,推荐以下抢占式配置组合:
- 实例计费方式:抢占式
- 保护期:无保护期(价格最低,代理池有冗余节点可容忍单节点中断)
- 目标节点数:建议 ≥ 3,保证单节点被回收后仍有可用代理
- 自动调和间隔:建议 60–300 秒,确保被回收后能快速自动补节点
- 断路器阈值:建议 3–5,避免库存不足时反复创建失败浪费 API 调用
- 实例规格:选择
t6/s6等入门级规格即可,代理转发对 CPU/内存要求低 - 地域:多地域部署可分散被回收风险;单一地域建议选择库存充足的规格
10.6 成本对比示例
以 ecs.t6-c1m1.large(2 vCPU / 2 GiB)华东1(杭州)为例(价格仅供参考,以阿里云官网为准):
| 计费方式 | 小时单价 | 月费(730h) | 相对按量 |
|---|---|---|---|
| 按量付费 | ¥0.17/h | ¥124 | 100% |
| 抢占式(无保护期) | ~¥0.02/h | ~¥15 | ~12% |
| 抢占式(1h 保护期) | ~¥0.03/h | ~¥22 | ~18% |
5 个节点代理池使用抢占式(无保护期),月费约 ¥75,而按量付费约 ¥620,节省约 88%。
10.7 常见问题
抢占式实例创建失败?
常见原因:当前地域/规格库存不足、账户余额不足、超出抢占式实例配额。建议:选择其他规格或多规格配置、确认账户余额 > ¥100、查看阿里云控制台的配额限制。
节点频繁被回收怎么办?
增加目标节点数(如从 3 调到 5)、缩短自动调和间隔(如 60 秒)、选择库存充足的规格和地域、考虑使用 1 小时保护期减少中断频率。多节点 + 快速自动调和是应对抢占式中断的最佳策略。
保护期内会被收费吗?
会。保护期只是保证不被回收,不是免费期。保护期内的费用按抢占式价格计算,通常仍远低于按量付费。
已有的按量实例能转成抢占式吗?
不能直接转换。切换计费方式后,手动删除旧节点,调和会自动以抢占式创建新节点替代。
11. 费用教程
本节详细说明代理池涉及的阿里云费用构成、控制台费用面板的读取方法、不同计费方式的成本对比、费用估算方法以及节省成本的最佳实践。
11.1 费用构成
运行代理池的阿里云费用由以下几部分组成:
| 费用项 | 说明 | 计费方式 |
|---|---|---|
| ECS 实例 | 代理节点本身的计算资源(vCPU + 内存) | 按秒计费,不足 60 秒按 60 秒算 |
| 公网带宽 | 实例的出/入公网流量带宽 | 按固定带宽 或 按使用流量 |
| 公网流量费 | 选择"按使用流量"时的实际流量费 | ¥0.80/GB(国内),地域不同有差异 |
| 系统盘 | 随实例创建的 ESSD/SSD 系统盘 | 随实例生命周期,释放时自动删除 |
代理池的主要成本是 ECS 实例费和公网流量费。代理转发流量较大时,流量费可能超过实例费本身。
11.2 控制台费用面板
控制台顶部的费用面板实时展示以下 7 个指标(数据来自阿里云 BSS OpenAPI,缓存 60 秒):
| 指标 | 含义 | 数据来源 |
|---|---|---|
| 账户余额(可用现金) | 账户中可用于消费的现金余额 | QueryAccountBalance.available_cash_amount |
| 账户可用额度 | 含信控额度的总可用额度 | QueryAccountBalance.available_amount |
| 当月已花费 | 当前账期(自然月)所有云产品消费汇总 | QueryBillOverview.pretax_amount 求和 |
| 信控额度 | 阿里云授予的信用额度 | QueryAccountBalance.credit_amount |
| 币种 | 账户结算币种(通常为 CNY) | QueryAccountBalance.currency |
| 账期 | 当前账单周期(如 2026-08) | QueryBillOverview.billing_cycle |
| API 更新时间 | 费用数据最近一次刷新的 UTC 时间 | 控制台本地记录 |
费用面板下方有一行状态提示,可能显示以下状态:
- 费用中心数据已更新 — 当月账单已出账,数据为最新。
- 当月账单尚未出账或存在延迟 — 账单数据尚未生成,通常出现在月初或账单系统延迟时。此时余额仍然有效,但"当月已花费"可能为 ¥0 或不完整。
- RAM 用户无 BSS 账单查询权限 — 需要给 RAM 用户授予
bssapi:QueryAccountBalance和bssapi:QueryBillOverview只读权限。 - 费用中心暂时不可用 — BSS API 调用失败,稍后刷新重试。
账单数据非实时,存在数小时延迟。费用面板仅供参考,以阿里云费用中心出账为准。
11.3 计费方式对比
| 计费方式 | 价格 | 适合场景 | 本控制台支持 |
|---|---|---|---|
| 按量付费 (PostPaid) | 基准价 | 需要稳定不被中断的节点 | ✓ 默认 |
| 抢占式 (Spot) | 基准价的 ~10%–30% | 代理池等多节点可容忍中断场景 | ✓ 设置中选择 |
| 包年包月 (PrePaid) | 比按量便宜 ~30%–50% | 长期稳定运行,需提前规划 | ✗ 不支持(本控制台仅创建按量/抢占式) |
详细抢占式配置参见第 10 节 抢占式教程。
11.4 公网带宽计费方式
创建启动模板时需要选择公网带宽计费方式,这直接影响流量费用:
| 带宽计费 | 计费规则 | 适合场景 |
|---|---|---|
| 按使用流量 | ¥0.80/GB(国内地域),用多少算多少 | 代理流量不稳定或量级不大时最划算 |
| 按固定带宽 | 按带宽峰值包月,如 5Mbps 约 ¥25/月 | 流量稳定且大,超过约 31GB/月后更划算 |
临界点估算:按流量 ¥0.80/GB,固定带宽 5Mbps ¥25/月 → 临界点约 31GB/月。月流量 < 31GB 选按流量,> 31GB 选固定带宽。代理池通常流量波动大,建议默认选"按使用流量"。
11.5 费用估算
以下估算以华东 1(杭州)ecs.t6-c1m1.large(2 vCPU / 2 GiB)为例,价格为参考值,实际以阿里云官网为准:
场景一:3 节点代理池,按量付费,月流量 50GB
ECS 实例费:¥0.17/h × 730h × 3 = ¥372.30/月 公网流量费:¥0.80/GB × 50GB = ¥40.00/月 系统盘费:¥0.35/GB × 40GB × 3 = ¥42.00/月(ESSD PL0) ──────────────────────────────── 合计约:¥454/月
场景二:3 节点代理池,抢占式(无保护期),月流量 50GB
ECS 实例费:~¥0.02/h × 730h × 3 = ~¥43.80/月 公网流量费:¥0.80/GB × 50GB = ¥40.00/月 系统盘费:¥0.35/GB × 40GB × 3 = ¥42.00/月 ──────────────────────────────── 合计约:¥126/月(节省 ~72%)
场景三:5 节点代理池,抢占式(无保护期),月流量 200GB
ECS 实例费:~¥0.02/h × 730h × 5 = ~¥73.00/月 公网流量费:¥0.80/GB × 200GB = ¥160.00/月 系统盘费:¥0.35/GB × 40GB × 5 = ¥70.00/月 ──────────────────────────────── 合计约:¥303/月(按量付费同等配置约 ¥793/月,节省 ~62%)
系统盘费用在实例释放时自动停止。抢占式实例被回收后系统盘随之释放,不会产生额外费用。
11.6 费用监控与告警
- 控制台实时监控 — 费用面板每次刷新自动更新,缓存 60 秒。关注"账户余额"和"当月已花费"两个核心指标。
- 阿里云费用告警 — 前往用户中心 → "预算管理"创建预算告警,当月消费超过阈值时发送短信/邮件通知。
- 余额预警 — 阿里云默认在余额低于 100 元时发送预警。建议将预警阈值提高到能覆盖 3 天预估费用的金额。
- 自动调和兜底 — 将目标节点数设为 0 并调和,可立即停止所有 ECS 计费。配合自动调和间隔,即使抢占式实例被回收也能自动控制成本。
11.7 节省费用的最佳实践
- 使用抢占式实例 — 代理池最适合抢占式,成本可降至按量的 10%–30%。详见抢占式教程。
- 按需调整节点数 — 业务低峰期将目标节点数调低(如从 5 降到 2),高峰期再调高。通过 API 可定时自动调节:
# 低峰期降到 2 节点(每天 02:00) curl "http://127.0.0.1:8765/api/target?target=2&token=<API_TOKEN>" # 高峰期恢复 5 节点(每天 08:00) curl "http://127.0.0.1:8765/api/target?target=5&token=<API_TOKEN>"
- 选择入门级规格 — 代理转发是 I/O 密集型而非 CPU 密集型,
t6/s6/e-instance等突发性能实例即可满足需求,价格远低于计算型c6。 - 合理设置公网带宽 — 代理流量波动大时选"按使用流量"计费;流量稳定且大时选"按固定带宽"。
- 及时释放闲置节点 — 不使用时将目标设为 0 并调和,确保所有实例已释放,避免忘记关机持续计费。
- 关注断路器 — 设置合理的断路器阈值(3–5),避免库存不足时反复创建失败浪费 API 调用和时间。
- 多地域分散部署 — 不同地域的抢占式价格和库存不同,多地域部署既能降低被回收风险,也可能获得更低的整体价格。
12. API 控制与代理接口
中控 API 默认地址为 http://127.0.0.1:8765。代理提取、粘性代理和管理操作使用 Authorization: Bearer <API_TOKEN> 请求头认证。管理接口兼容 token 查询参数,但不建议把 Token 放在 URL、日志或浏览器历史中。
代理提取与 SOCKS5 使用
所有代理接口都从全部健康 ECS/WarpGate 节点组成的统一资源池中提取,业务方不需要直接管理某一台 ECS。server_ip:port 是业务连接的 ECS 入口,exit_ip 才是 WARP 对外访问的真实出口;不要用 ECS 原生公网 IPv4 冒充 WARP IPv4。
普通列表
GET /api/proxies?family=ipv4&protocol=socks5— 只返回真实 IPv4 出口的 SOCKS5 代理。GET /api/proxies?family=ipv6&protocol=socks5— 只返回真实 IPv6 出口的 SOCKS5 代理。GET /api/proxies?family=both&protocol=both— 返回两类出口及两种协议,两个参数默认都是both。
family 只能是 ipv4、ipv6、both;protocol 只能是 socks5、http、both。普通列表适合批量导入或自行选择代理,不保证同一业务后续仍使用同一个代理。
# SOCKS5 客户端示例
curl --socks5-hostname warpuser:password@47.238.139.26:10016 https://example.com
# Python requests(需 pip install requests[socks])
import requests
proxy = "socks5h://warpuser:password@47.238.139.26:10016"
requests.get("https://example.com", proxies={"http": proxy, "https": proxy}, timeout=30)优先使用 socks5h 或 --socks5-hostname,让 DNS 也通过代理解析。IPv6 出口要求客户端能访问中控 API,但连接入口仍使用响应中的 server_ip,不能把带冒号的 exit_ip 直接拼成 SOCKS5 地址。
平衡获取
GET /api/proxies/balanced?strategy=round-robin&family=ipv4&protocol=socks5 每次返回一个代理。strategy 支持 round-robin、random、least-connections、lowest-latency;其中“最少连接”按中控分配计数计算,不是实时 TCP 连接数。适合每次任务只需要一个代理且不要求固定会话的场景。
粘性代理规则
粘性绑定键为 session_id + family。同一业务标识可以同时拥有一条 IPv4 和一条 IPv6 绑定;同一家庭类型在默认 10 分钟内重复获取返回原代理,重复请求不会刷新 TTL。session_id 可使用邮箱、手机号、账号等非空业务标识。不同会话不会共享同一代理端口;原代理失效时会自动从全部健康 ECS 节点切换。
# 获取 IPv6 粘性代理 curl -G -H "Authorization: Bearer <API_TOKEN>" --data-urlencode "session_id=user@example.com" --data-urlencode "family=ipv6" http://127.0.0.1:8765/api/proxies/sticky # 主动释放 curl -X DELETE -H "Authorization: Bearer <API_TOKEN>" "http://127.0.0.1:8765/api/proxies/sticky/user%40example.com?family=ipv6"
成功响应包含 proxy、server_ip、port、exit_ip、expires_in 和 reused。释放成功或目标绑定不存在都返回 HTTP 200。
状态与管理接口
GET /api/status— 节点状态、统计和事件GET /api/settings— 配置概览,不返回密钥明文GET /api/billing— 账户余额与账单GET /api/resources— 云资源信息GET /api/reconcile— 立即执行调和GET /api/target?target=5— 设置目标节点数GET /api/nodes/delete?instance_id=i-xxx— 下线并释放实例
常见状态码:200 成功,400 参数错误,401 Token 缺失或无效,409 没有可用代理资源或操作冲突,500 中控内部错误。
WarpGate 模式下,IPv4/IPv6 按 WARP 真实 exit_ip 分类。ECS 原生公网 IPv4 不会被伪装成 WARP IPv4 出口;如果当前节点没有 IPv4 WARP 出口,family=ipv4 会返回 HTTP 409。
13. AI 提示词模板案例
本节提供一套面向 AI 的结构化提示词,用于通过自然语言对话引导 AI 完成安全组、交换机、实例规格等核心参数的确认,最终生成可提交到控制台的完整资源配置模板。将以下提示词复制给 AI 助手即可开始交互式配置。
13.1 使用方法
- 将下方"系统提示词"发送给 AI 助手。
- AI 会逐步询问地域、安全组、交换机、实例规格等参数。
- 通过自然语言回答或调整,AI 会实时更新配置草案。
- 确认无误后,AI 输出完整的 JSON 配置模板。
- 将 JSON 中的参数填入控制台"阿里云设置"和"创建启动模板"对话框。
13.2 系统提示词
你是 ProxyPilot 代理池的资源配置助手。你的任务是通过自然语言对话, 帮助用户完成阿里云 ECS SOCKS5 代理池的资源配置。 你需要引导用户确认以下核心参数,并最终生成完整的资源配置模板。 ## 需要确认的参数 ### 1. 地域与可用区 - region_id:阿里云地域(如 cn-hangzhou、cn-shanghai、cn-beijing) - zone_id:可用区(如 cn-hangzhou-j,可通过 GET /api/resources 查询) ### 2. 安全组 - security_group_id:已有安全组 ID,或通过"创建安全组"新建 - 安全组需开放 TCP 1080 入方向(SOCKS5 代理端口) - 建议:仅允许可信客户端 IP,不向全网开放 ### 3. 交换机(vSwitch) - v_switch_id:交换机 ID,需与所选地域/可用区一致 - 可通过 GET /api/resources 查询可用交换机列表 ### 4. 实例规格 - instance_type:ECS 实例规格 - 推荐:t6-c1m1.large(2vCPU/2GiB,代理转发足够) - 可选:s6-c1m1.large、e-instance ecs.t6-c1m1.large 等 - 可通过 GET /api/resources 查询可用规格 ### 5. 镜像 - image_id:Ubuntu 镜像 ID(cloud-init 依赖 Ubuntu) - 推荐:ubuntu_22_04_x64 或 ubuntu_20_04_x64 - 可通过 GET /api/resources 查询可用镜像 ### 6. SOCKS5 凭据 - socks5_username:代理认证用户名 - socks5_password:代理认证密码(至少 8 位,含大小写字母和数字) ### 7. 计费方式 - instance_charge_type:PostPaid(按量付费)或 Spot(抢占式) - spot_duration:抢占式保护期(0=无、1=1小时、6=6小时) - 代理池推荐:抢占式 + 无保护期(成本最低) ### 8. 调和参数 - target_nodes:目标节点数(建议 ≥ 2,保证可用性) - batch_size:调和批量大小(默认 3) - auto_reconcile_interval:自动调和间隔秒数(建议 60-300) - circuit_breaker_threshold:断路器阈值(建议 3-5) ## 交互规则 1. 每次只问 1-2 个问题,不要一次列出所有参数。 2. 提供推荐值和说明,让用户可以简单回复"可以"或给出自定义值。 3. 用户说"用默认值"时,使用括号中的推荐值。 4. 收集完所有参数后,输出完整的 JSON 配置模板。 5. 如果用户提供的参数可能有问题(如地域与交换机不匹配),主动提醒。 ## 对话示例 用户:帮我配置一个代理池 助手:好的!我先确认几个核心参数。 首先,你打算把代理节点部署在哪个地域? - 华东1(杭州)· cn-hangzhou ← 推荐,资源丰富 - 华东2(上海)· cn-shanghai - 华北2(北京)· cn-beijing - 其他地域 回复地域名称或编号即可,也可以说"用默认"。 用户:用默认 助手:好的,使用华东1(杭州)cn-hangzhou。 接下来确认实例规格。代理转发是 I/O 密集型任务,入门级规格即可: - ecs.t6-c1m1.large(2vCPU/2GiB)← 推荐,性价比最高 - ecs.s6-c1m1.large(2vCPU/2GiB) - ecs.t6-c1m1.xlarge(4vCPU/4GiB) 你倾向哪个?也可以说"推荐"。 用户:推荐 助手:好的,使用 ecs.t6-c1m1.large。 关于计费方式,代理池适合抢占式实例(成本约按量的 10%-30%): - 抢占式(无保护期)← 推荐,价格最低,多节点可容忍中断 - 抢占式(1小时保护期),略贵但创建后1小时内不被回收 - 按量付费,稳定但成本高 你的选择? 用户:抢占式无保护期 助手:好的。 最后几个参数: 1. 目标节点数?(建议 3-5 个,保证单节点被回收后仍有可用代理) 2. SOCKS5 用户名和密码?(用于代理认证,密码至少8位含大小写和数字) 用户:3个节点,用户名 proxyuser,密码 MyProxy2026 助手:所有参数已确认。以下是完整的资源配置模板: (输出 JSON) 请将以上参数填入控制台: 1. "阿里云设置"中填入 region_id、socks5_username、socks5_password、instance_charge_type 等。 2. "创建安全组"中创建安全组(如尚未有)。 3. "创建启动模板"中选择 image_id、instance_type、v_switch_id、security_group_id。 4. 设置目标节点数为 target_nodes,点击"立即调和"。
13.3 输出模板格式
AI 确认所有参数后,会输出以下 JSON 格式的配置模板:
{
"settings": {
"region_id": "cn-hangzhou",
"access_key_id": "<在控制台填写>",
"access_key_secret": "<在控制台填写>",
"pool_name": "proxy-main",
"socks5_username": "proxyuser",
"socks5_password": "<已确认的密码>",
"proxy_api_bearer_token": "<在控制台填写>",
"instance_charge_type": "Spot",
"spot_duration": "0",
"auto_reconcile_interval": "60",
"circuit_breaker_threshold": "3",
"batch_size": "3",
"pending_timeout_minutes": "5"
},
"launch_template": {
"launch_template_name": "dante-proxy-<时间戳>",
"description": "Dante SOCKS5 代理模板",
"image_id": "ubuntu_22_04_x64",
"instance_type": "ecs.t6-c1m1.large",
"v_switch_id": "<已确认的交换机 ID>",
"security_group_id": "<已确认的安全组 ID>"
},
"security_group": {
"security_group_name": "proxy-sg-<时间戳>",
"description": "SOCKS5 代理安全组",
"v_switch_id": "<与启动模板相同的交换机>"
},
"target_nodes": 3,
"post_create_steps": [
"1. 在'阿里云设置'中填写 settings 部分的参数并保存",
"2. 在'创建安全组'中创建安全组(如尚未有)",
"3. 在'创建启动模板'中选择镜像、规格、交换机、安全组并创建",
"4. 设置目标节点数为 3,点击'立即调和'",
"5. 等待约 60 秒后再次调和,节点应进入健康状态"
]
}
13.4 快速启动提示词
如果已有安全组和交换机,可以用以下精简提示词快速配置:
你是 ProxyPilot 配置助手。请帮我快速配置代理池。 我已有的资源: - 地域:cn-hangzhou - 交换机 ID:vsw-bpxxxxxxxxxx - 安全组 ID:sg-bpxxxxxxxxxx - 目标节点数:3 - 计费方式:抢占式,无保护期 - SOCKS5 用户名:proxyuser - SOCKS5 密码:Proxy2026! 请帮我确认实例规格和镜像选择,然后输出完整的启动模板参数和设置参数, 我直接填入控制台的'创建启动模板'和'阿里云设置'对话框。
提示词中的密码和 Token 为示例值,实际使用时请替换为自己的真实凭据。切勿在公共 AI 平台上发送真实 AccessKey Secret。