Resin 代理池固定 IP 指南:多浏览器粘性出口怎么配
这篇文章解决什么问题
自建 Resin 代理池网关后,很多人会问同一类问题:
- 配置好了怎么用?
- 出口 IP 是每次随机吗?
- 怎么固定 IP?
- 多个浏览器怎么各自固定一个 IP?
- 用户名在哪里填?
- 能不能指定某一个公网 IP?
下面用尽量直白的方式说明。
Resin 是什么
Resin 是一个开源代理池网关:上游接订阅/节点,对外提供统一的 HTTP / SOCKS5 入口,并带管理后台。常见部署方式是 Docker 镜像(如 ghcr.io/resinat/resin),一个端口同时承担管理界面和代理服务。
部署后通常会得到:
- 管理后台:
http://你的主机:端口/ - 代理入口:同一主机与端口
- 健康检查:
/healthz
鉴权常用 RESIN_AUTH_VERSION=V1:需要 管理令牌 和 代理令牌(PROXY_TOKEN)。
出口 IP 到底随机不随机
不完全是“每次随机”,取决于你有没有带 Account。
1. 不带账号(普通代理)
只填代理密码、不带业务账号时,Resin 会从健康节点池里按调度(如 P2C + 延迟等)选路。
特点:
- 不是纯掷骰子,但不同请求经常会换到不同出口 IP
- 适合“换 IP 探测、轮换出口”的场景
示例(把地址和密码换成你自己的):
curl -x http://HOST:2260 \
-U ":你的PROXY_TOKEN" \
https://api.ipify.org
多跑几次,IP 往往会变。
2. 带账号(粘性代理)
同一业务账号会尽量固定同一出口 IP;节点挂了会优先换同 IP 的其他节点。
身份格式(V1):
平台.账号:代理密码
例如:
curl -x http://HOST:2260 \
-U "Default.user_tom:你的PROXY_TOKEN" \
https://api.ipify.org
user_tom 反复请求,IP 会尽量保持稳定;换成 user_alice 会再分配另一条粘性绑定。
对照表
| 用法 | IP 行为 |
|---|---|
| 只填代理密码(无 Account) | 池内智能选路,请求间常换 IP |
带 平台.账号 |
粘性,同账号尽量同 IP |
| 节点很少 / 大量故障 | 可选出口变少,换 IP 也会变少 |
结论:
- 要“经常换 IP” → 不要带 Account
- 要“同一用户固定 IP” → 带 Account
怎么固定 IP(最常用做法)
核心规则
用户名 = 平台.账号
密码 = PROXY_TOKEN
- 默认平台名一般是
Default(也可在后台新建 Platform) - 账号名由你自己定义:用户 ID、邮箱 hash、
browser1都可以 - 一个业务身份对应一个固定账号名,不要每次随机生成,否则等于不粘
HTTP 正向代理
curl -x http://HOST:2260 \
-U "Default.user_tom:你的PROXY_TOKEN" \
https://api.ipify.org
浏览器 / 软件一般填:
- 代理主机:
HOST - 端口:
2260(按你的映射改) - 用户名:
Default.你的账号 - 密码:
PROXY_TOKEN
SOCKS5
curl --proxy socks5h://HOST:2260 \
-U "Default.user_tom:你的PROXY_TOKEN" \
https://api.ipify.org
V1 下 HTTP 与 SOCKS5 通常都能用同一套账号密码。
反向代理 / 请求头(程序接入)
curl "http://HOST:2260/你的PROXY_TOKEN/Default/https/api.ipify.org" \
-H "X-Resin-Account: user_tom"
也可把账号写进 URL 路径(具体以项目文档为准)。
快速自测
for i in 1 2 3; do
curl -s -x http://HOST:2260 \
-U "Default.user_tom:你的PROXY_TOKEN" \
https://api.ipify.org
echo
done
三次结果应基本相同。
多浏览器:一人一 IP 的最简配置
原则就一句话:
一个浏览器 = 一个账号名
所有浏览器共用同一主机、端口、密码,只改用户名里的名字:
| 浏览器 | 主机 | 端口 | 用户名 | 密码 |
|---|---|---|---|---|
| 浏览器 1 | HOST | 2260 | Default.browser1 |
PROXY_TOKEN |
| 浏览器 2 | HOST | 2260 | Default.browser2 |
PROXY_TOKEN |
| 浏览器 3 | HOST | 2260 | Default.browser3 |
PROXY_TOKEN |
用户名格式:
Default.名字
名字随便起,但每个浏览器固定一个、以后别改,例如 browser1、chrome-a、ads-01。
验证方式:
- 某浏览器打开 https://api.ipify.org ,多刷新几次,IP 应基本不变
- 换另一个浏览器(另一个用户名),IP 通常会不同
指纹浏览器(AdsPower、比特浏览器等)也一样:在每个配置文件的「代理用户名」里填不同的 Default.browserN 即可。
用户名在哪里设置?
不是在 Resin 管理后台里创建账号。
用户名填在客户端的代理设置里:
| 字段 | 填什么 |
|---|---|
| 服务器 / 主机 | 你的 Resin 地址 |
| 端口 | 代理端口 |
| 用户名 / Username | Default.browser1 |
| 密码 / Password | PROXY_TOKEN |
常见位置:
- SwitchyOmega:情景模式 → 代理服务器 → 用户名 / 密码
- 指纹 / 多开浏览器:每个配置 → Proxy → Proxy User / Password
- Clash 类客户端:节点或自定义代理里的
username/password - 普通 Chrome / Edge:本身没有独立“代理用户名”菜单,通常靠扩展、系统代理或指纹浏览器
后台只负责订阅、节点、Platform 规则;粘性身份由客户端用户名携带。
注意:用户名必须是 平台.账号 这种完整形式,不要只填 browser1。
如果一定要“指定某一个固定 IP”
Resin 不能在用户名里直接写 1.2.3.4 这种公网 IP。
它只能:从节点池里选,再尽量粘住。
情况 A:不在乎是哪个 IP,只要一直不变
用粘性账号即可:
Default.browser1 + PROXY_TOKEN
系统会分配一个出口并尽量保持。你事先选不了是哪个 IP,只能事后用 ipify 看。
情况 B:必须用某个 IP / 某类节点
在后台把池子收窄:
- 打开管理后台,用管理令牌登录
- 进入 Platform(平台),新建例如
IP_A - 用规则筛节点:
- 地区过滤(如
us/hk) - 节点名正则(城市、线路、IP 片段)
- 或单独订阅只含目标节点
- 地区过滤(如
- 浏览器用户名改为:
IP_A.browser1
密码仍是 PROXY_TOKEN。
含义:
- 平台
IP_A= 只允许这批节点 - 账号
browser1= 在这批里粘住一个出口
若平台下只剩 1 个健康节点,就几乎等于“指定了那个 IP”。
再对照一次
| 你想要的 | 怎么做 |
|---|---|
| 每个浏览器各固定一个 IP(不指定是哪个) | Default.browser1 / Default.browser2 … |
| 指定只要美国 / 香港 | 建 Platform 做地区过滤,再 平台.browser1 |
| 指定某一个公网 IP | 平台规则只留下该出口节点,再 平台.账号 |
用户名里直接写 1.2.3.4 |
不支持 |
使用注意
- 账号名要稳定:改用户名 = 新身份 = 可能换 IP
- 只填密码不粘:无 Account 就是轮换选路
- 节点池质量决定上限:健康节点太少、目标 IP 节点全挂时,仍可能换 IP
- HTTP / SOCKS5 选一种即可(V1 通常都支持)
- 不要把管理令牌当代理密码用:管理入口与代理令牌职责不同
推荐落地流程
- 确认
/healthz正常,后台能看到健康节点 - 先用
Default.test1做粘性自测(连续访问 ipify) - 多浏览器场景:统一密码,用户名递增
Default.browser1… - 需要地区 / 指定线路:再建 Platform 收窄池子,把
Default换成平台名 - 业务侧把“账号名”和“浏览器配置 / 用户 ID”做成一一映射并固化
小结
Resin 固定 IP 的关键不是复杂配置,而是一句话:
用
平台.账号作为代理用户名,让同一身份粘在同一出口上;要指定具体 IP,就先用 Platform 把节点池缩到你想要的那几条。
多浏览器场景最省事的做法:地址、端口、密码全相同,只让每个浏览器的用户名不同。
项目地址:Resinat/Resin(含中文 README)。