跳转到内容

3Proxy:简单而强大的个人用代理服务器

Инструменты
3Proxy:简单而强大的个人用代理服务器

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 系统上原生运行。对于在不同环境中工作的开发者来说,跨操作系统保持一致的配置语法,简化了本地开发代理或测试环境的部署。

3Proxy:简单而强大的个人用代理服务器

安装与初始配置

在 Linux 发行版(如 Ubuntu 或 Debian)上安装 3Proxy 通常通过源码编译完成,以确保获得最新功能和安全补丁。整个过程很直接,也不需要大量依赖。

  1. 更新系统: sudo apt update && sudo apt install build-essential git -y
  2. 克隆仓库: git clone https://github.com/3proxy/3proxy.git
  3. 编译源码: 进入该目录并运行 make -f Makefile.Linux
  4. 安装: 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)存储定义了用户名和密码。proxysocks 命令分别在 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:简单而强大的个人用代理服务器

访问控制与安全

对任何把代理服务器暴露到互联网的用户来说,安全都是首要问题。3Proxy 提供了一套强大的 ACL,可按来源 IP、目标 IP 或时间段限制访问。如果您在公网 VPS 上运行 3Proxy 以远程使用 GProxy 订阅,这一点至关重要。

allowdeny 指令按顺序处理。也就是说,规则的先后顺序非常关键。常见错误是把宽泛的「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 命令,进一步限制每个线程的内存开销。

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.