本地代理服务器 - 单端口同时支持 SOCKS4/4a/5 + HTTP 代理
- 单端口自动识别 HTTP / SOCKS4 / SOCKS4a / SOCKS5
- 支持 IPv4 / IPv6 双栈
- 支持监听 127.0.0.1 / 0.0.0.0 / :: / ::1
- HTTP 代理:CONNECT(HTTPS) + 普通 HTTP
- SOCKS5:TCP CONNECT + UDP ASSOCIATE
- SOCKS4/4a:TCP CONNECT(兼容)
- UDP:每发送 N 个包后轮换本地绑定端口,支持顺序/随机模式
- HTTP:可选使用端口范围进行请求
curl -4 -x http://127.0.0.1:1080 https://www.baidu.com -v --tlsv1.2 --insecure
curl -x http://[::1]:1080 https://ipv6.baidu.com -v --tlsv1.2 --insecurecurl -4 --socks5 127.0.0.1:1080 https://www.baidu.com -v --tlsv1.2 --insecure
curl --socks5 [::1]:1080 https://ipv6.baidu.com -v --tlsv1.2 --insecurenode proxy-server.js默认:HTTP+SOCKS5 合并监听 127.0.0.1:1080
# 监听所有 IPv4 接口
node proxy-server.js --host=0.0.0.0 --port=1080
# 监听所有 IPv6 接口
node proxy-server.js --host=::
# 本机 IPv4+IPv6 双栈(默认)
node proxy-server.js --host=dual
# 局域网 IPv4+IPv6 全开
node proxy-server.js --host=dual-all
# 仅 IPv4 本机
node proxy-server.js --host=127.0.0.1
# 仅 IPv6 本机
node proxy-server.js --host=::1# 自定义监听端口(默认 1080)
node proxy-server.js --port=1080
# 设置首次连接代理通信端口(relay socket)
node proxy-server.js --connect-port=7888 # 固定端口
node proxy-server.js --connect-port=7888-7999 # 端口范围
node proxy-server.js --connect-port="" # 随机分配(默认)# 设置出口端口范围(默认 6811-6922)
node proxy-server.js --udp-min=6811 --udp-max=6922
# 每 N 个包轮换端口(默认 5)
node proxy-server.js --udp-rotate=5
# 旧端口延迟关闭时间(毫秒,默认 5000)
node proxy-server.js --udp-stale-timeout=5000
# HTTP 代理使用端口范围
node proxy-server.js --http-use-port-range=true# 顺序模式(默认):按顺序使用端口范围内的端口
node proxy-server.js --port-mode=sequential
# 随机模式:随机选择端口范围内的端口
node proxy-server.js --port-mode=random# 开启调试日志
node proxy-server.js --debug
# 关闭调试日志(默认)
node proxy-server.js --no-debug| 参数 | 默认值 | 说明 |
|---|---|---|
--host |
dual |
监听地址 |
--port |
1080 |
监听端口 |
--connect-port |
"" (随机) |
首次连接端口:""=随机, "7888"=固定, "7888-7999"=范围 |
--udp-min |
6811 |
出口端口最小值 |
--udp-max |
6922 |
出口端口最大值 |
--udp-rotate |
5 |
每 N 个包轮换端口 |
--port-mode |
sequential |
端口分配模式:sequential=顺序, random=随机 |
--udp-stale-timeout |
5000 |
旧端口延迟关闭时间(毫秒) |
--http-use-port-range |
false |
HTTP 代理是否使用端口范围 |
--debug |
false |
是否开启调试模式 |
| 功能 | 实现 |
|---|---|
| IPv4/IPv6 双栈 | 监听地址支持 127.0.0.1 / 0.0.0.0 / :: / ::1,自动适配 |
| HTTP 代理 | 支持普通 HTTP(PIPE 转发)和 HTTPS(CONNECT 隧道),可选使用端口范围 |
| SOCKS5 TCP | 完整握手,支持 IPv4/IPv6/域名三种地址类型,自动 DNS 解析 |
| SOCKS5 UDP | 创建中继 socket 接收客户端 UDP 包,每发送 N 个包后重新绑定新端口,支持顺序/随机模式,每个目标 IP 独立使用端口 |
| TCP 控制 | 绑定 UDP ASSOCIATE 的 TCP 控制连接断开时,自动清理所有 UDP socket |
| 端口模式 | 顺序模式按顺序使用端口,随机模式随机选择,支持 UDP 和 HTTP 共用 |
| 累计统计 | 日志显示连接次数 [#N] 和累计发包次数 [^N] |
SOCKS5 UDP 127.0.0.1 [#1][^1] → 192.168.2.1:666 (0.0.0.0:6811)
SOCKS5 UDP 127.0.0.1 [#1][^2] → 192.168.2.1:666 (0.0.0.0:6811)
HTTP GET 127.0.0.1 → 192.168.2.1:888 (0.0.0.0:6812)
[#N]:当前连接次数(会话 ID)[^N]:累计发包次数(全局共享)(0.0.0.0:6811):本地使用的出口端口