3Proxy 是一套轻量级、跨平台的代理服务器组件,为高性能和极低资源占用而设计,支持 HTTP/HTTPS、SOCKS4/5 和 POP3 等协议。对于需要管理本地流量、串联多个上游供应商,或搭建内存占用通常低于 5MB 的安全网关的个人使用场景,它是理想方案。
3Proxy 的架构与理念
与为大规模企业缓存和复杂内容过滤而设计的 Squid 等单体代理服务器不同,3Proxy 遵循 Unix「把一件事做好」的理念。它用 C 语言编写,以一小组可执行文件的形式分发。这种设计使它特别适合低资源环境,例如 $5/month 的 VPS 或树莓派,在这些环境中每一兆内存都很关键。
该组件是模块化的。虽然多数用户把它当作读取配置文件的单个「3proxy」可执行文件运行,但它同时包含 proxy(HTTP)、socks(SOCKS4/5)和 ftppr(FTP)等独立的小型服务器。这种模块化让您可以精细控制启用哪些服务,从而缩小攻击面并降低开销。对个人用户而言,这意味着您可以在几秒内为浏览器或抓取脚本部署一个 SOCKS5 网关,而不必背上企业级 Web 缓存的臃肿。
3Proxy 的突出特性之一是可移植性。它可在 Windows、Linux 以及各种 BSD 系统上原生运行。对于在不同环境中工作的开发者来说,跨操作系统保持一致的配置语法,简化了本地开发代理或测试环境的部署。

安装与初始配置
在 Linux 发行版(如 Ubuntu 或 Debian)上安装 3Proxy 通常通过源码编译完成,以确保获得最新功能和安全补丁。整个过程很直接,也不需要大量依赖。
- 更新系统:
sudo apt update && sudo apt install build-essential git -y - 克隆仓库:
git clone https://github.com/3proxy/3proxy.git - 编译源码: 进入该目录并运行
make -f Makefile.Linux。 - 安装:
sudo make -f Makefile.Linux install。
在 Windows 上,流程是下载预编译的二进制文件并将其作为服务运行。无论使用哪种操作系统,核心都在 3proxy.cfg 文件中。该文件决定服务器如何监听连接、谁可以访问,以及流量路由到哪里。
基本配置结构
一个最小配置文件需要若干全局指令,随后是具体的代理服务定义。下面是带简单认证的基础 SOCKS5 与 HTTP 代理配置示例。
# 全局设置
daemon
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
# 认证
users gproxy_user:CL:my_secure_password
auth strong
# 服务定义
proxy -p8080 -n -a
socks -p1080 -n -a
在这个示例中,daemon 命令让 3Proxy 在后台运行。users 行使用明文(Cleartext,CL)存储定义了用户名和密码。proxy 和 socks 命令分别在 8080 端口启动 HTTP 代理、在 1080 端口启动 SOCKS5 代理。-n 参数关闭 3Proxy 内部的主机名解析(改用操作系统的解析),-a 启用匿名模式,向目标服务器隐藏客户端的原始 IP。
高级路由与父级代理
对于使用 GProxy 等服务的高质量住宅代理的个人用户来说,3Proxy 的「parent」指令是关键功能。该功能让您把 3Proxy 用作本地入口,将所有请求转发给远程上游供应商。对于本身不支持 SOCKS5 认证的应用,或希望集中管理代理的用户,这尤其有用。
把 3Proxy 与 GProxy 串联后,您可以在流量离开自己的网络之前应用本地访问控制列表(ACL)并记录日志。这为您的网页抓取或浏览活动增加了一层安全性和可见性。
配置上游串联
要把流量转发到外部供应商,请使用 parent 命令。该命令指定权重(用于负载均衡)、协议、远程 IP、端口和凭据。
# 定义父级代理(例如 GProxy 住宅代理接入点)
# 格式:parent [weight] [type] [ip] [port] [user] [password]
parent 1000 socks5 1.2.3.4 5678 gproxy_id gproxy_pass
# 启动使用父级代理的本地 SOCKS5 服务器
socks -p1080
采用这种配置后,任何连接到 localhost:1080 的应用,其流量都会经由 GProxy 的住宅网络路由。相比为每个应用单独配置远程凭据,这种方式效率高得多,尤其是在凭据或接入点频繁变动时。
3Proxy 与其他方案的对比
要理解 3Proxy 在生态中的位置,可以把它与 Squid、Dante 等流行代理方案作比较。Squid 是缓存领域的行业标准,Dante 以稳健的 SOCKS 实现著称,而 3Proxy 占据的是「极简灵活性」这一独特细分。
| 特性 | 3Proxy | Squid | Dante |
|---|---|---|---|
| 内存占用 | < 5MB | 100MB+ | 20MB - 50MB |
| 协议 | HTTP、SOCKS4/5、POP3、FTP | HTTP、HTTPS、FTP | SOCKS4/5 |
| 配置难易度 | 高(单一配置文件) | 低(语法复杂) | 中等 |
| 串联 | 优秀(父级代理) | 一般(cache peers) | 有限 |
| 系统支持 | Windows、Linux、BSD | 主要为 Linux/Unix | Linux/Unix |

访问控制与安全
对任何把代理服务器暴露到互联网的用户来说,安全都是首要问题。3Proxy 提供了一套强大的 ACL,可按来源 IP、目标 IP 或时间段限制访问。如果您在公网 VPS 上运行 3Proxy 以远程使用 GProxy 订阅,这一点至关重要。
allow 与 deny 指令按顺序处理。也就是说,规则的先后顺序非常关键。常见错误是把宽泛的「allow」规则放在具体的「deny」规则之前,导致限制形同虚设。
基于 IP 过滤的示例
如果您希望只有家庭 IP 地址才能使用您的 3Proxy 实例,可以这样组织配置:
# 定义用户
users admin:CL:secret123
# 访问控制列表
auth strong
allow admin 1.2.3.4 * * *
deny * * * * *
# 启动代理
proxy -p8888
在这种情况下,只有从 IP 1.2.3.4 连接的用户「admin」被允许在任意时间(*)通过任意端口(*)访问任意目标(*)。所有其他连接尝试都会被明确拒绝。这种「默认拒绝」的策略是保护个人代理服务器的黄金标准。
实用案例:用 Python 测试您的配置
当 3Proxy 服务器开始运行后,尤其是在它串联了 GProxy 这类上游供应商时,您应当验证它是否正确隐藏了您的 IP 并处理了认证。Python 的 requests 库是做这项验证的理想工具。
import requests
# 定义本地 3Proxy 地址
proxy_url = "http://admin:[email protected]:8888"
proxies = {
"http": proxy_url,
"https": proxy_url,
}
try:
# 检查目标端看到的 IP
response = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=10)
data = response.json()
print(f"Proxy Connection Successful!")
print(f"Detected IP: {data['ip']}")
except Exception as e:
print(f"Connection Failed: {e}")
该脚本会尝试通过您的 3Proxy 实例连接一个公共 IP 检测 API。如果您配置了 GProxy 住宅代理作为父级代理,「Detected IP」应显示住宅地址,而不是您的本地 IP 或 VPS IP。这就确认了整条链路——从脚本到 3Proxy,最后经由 GProxy——都在正常工作。
日志与流量监控
对于长期的个人使用,监控流量对排查故障和发现未授权访问尝试非常必要。3Proxy 提供灵活的日志系统,可输出到文件或 syslog 服务器。您可以自定义日志格式,加入字节数、连接时长、目标主机名等特定数据项。
一份典型的日志配置可能如下:
log /var/log/3proxy/3proxy.log D
logformat "L%Y-%m-%d %H:%M:%S %U %C:%c %R:%r %O %I %h %T"
D 参数让 3Proxy 每日轮转日志,避免单个文件占满全部磁盘空间。logformat 字符串使用占位符记录时间戳、用户名(%U)、客户端 IP/端口(%C:%c)、远端 IP/端口(%R:%r)以及流量(%O 为出站,%I 为入站)。分析这些日志可以帮助您找出哪些应用消耗数据最多,从而优化 GProxy 的用量。
要点总结
- 3Proxy 是效率之王: 对需要可用代理服务器又不想牺牲系统资源的用户来说,它是最佳选择。低于 5MB 的内存占用是 Squid 和 Dante 无法企及的。
- 串联能力强大: 把 3Proxy 用作 GProxy 住宅代理的本地网关。这样可以集中管理认证,并在流量进入住宅网络之前应用本地安全规则。
- ACL 中顺序很重要: 始终遵循「默认拒绝」策略。把针对特定 IP 和用户的
allow规则放在最前面,并以deny * * * * *结尾来锁定服务器。 - 跨平台一致: 由于 Windows 与 Linux 上的配置语法完全相同,您可以在本地 Windows 上开发脚本,再部署到 Linux VPS,而无需改动 3Proxy 配置。
实用提示 1: 在 Linux 上运行 3Proxy 时,务必用 nserver 指令指定一个快速的 DNS 提供商(如 1.1.1.1 或 8.8.8.8)。这可避免 DNS 瓶颈拖慢代理请求。
实用提示 2: 如果您在极度受限的环境中运行 3Proxy(例如 128MB 内存的 VPS),可在配置中使用 stacksize 命令,进一步限制每个线程的内存开销。
