自建(DIY)代理农场需要搭建一套专用硬件——通常由 4G/LTE 调制解调器或单板计算机组成——并配置专门的软件,把流量通过多个网络接口转发出去。这样的架构为大规模网页抓取、社交媒体自动化和广告核验提供了私有基础设施,让您完全掌控 IP 轮换与数据隐私。
移动代理农场的硬件要求
最有效的 DIY 代理农场都建立在移动网络之上,因为 4G/LTE IP 地址由成千上万真实用户共用,极难被列入黑名单。要搭建一个 20 通道的移动代理农场,您需要一套面向 7×24 小时稳定运行的特定硬件组件。
- 单板计算机(SBC):Raspberry Pi 4(8GB 内存)是业界标准。它能承载 Linux 环境并高效管理 USB 总线。规模更大的农场(50 台以上调制解调器)建议使用独立 x86 服务器或 Intel NUC,以避免 CPU 瓶颈。
- USB 4G 调制解调器:兼容性最好的是华为 E3372(尤其是非 HiLink 版本,可控性更强)和中兴 MF833V。这类设备支持通过 AT 命令直接进行串口通信,从而触发 IP 轮换。
- 带供电的 USB 集线器:普通无源集线器会出问题。每台 4G 调制解调器在数据传输峰值时最高可拉到 500mA 至 1A。每 10 台调制解调器需要配备工业级、带独立供电的 USB 集线器(如 Orico 或 TP-Link),专用功率至少 60W 到 100W。
- 散热系统:调制解调器在负载下发热明显。请使用 120mm USB 风扇或机架式散热方案,防止因过热降频而导致连接中断。
如果您觉得硬件投入和维护负担过重,GProxy 提供企业级移动代理和住宅代理,可在没有物理基础设施成本的前提下,带来同等水平的信任度与匿名性。

操作系统与网络配置
推荐使用 Ubuntu Server 22.04 LTS,因为它对 USB 调制解调器和网络协议栈的驱动支持最完善。系统装好后,首要难题是避免系统把每台调制解调器都当成默认网关,否则会引发路由冲突。
关闭调制解调器自动配置
现代 Linux 发行版使用 NetworkManager,它往往会试图自动接管 USB 调制解调器。在代理农场中,必须禁用它,才能通过配置文件或自定义脚本保持手动控制。
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
usb_modeswitch 的作用
大多数 USB 调制解调器最初会挂载为虚拟光驱以安装驱动。您必须使用 usb_modeswitch 工具把它们切换到"调制解调器模式",系统才会将其识别为网络接口(例如 eth1、wwan0)。
| 项目 | DIY 方案 | 商业替代方案(GProxy) |
|---|---|---|
| 搭建耗时 | 10–20 小时 | 即时开通 |
| 前期投入 | $500 - $2,000(硬件) | $0(按量付费) |
| 维护 | 手动排查硬件/软件故障 | 由服务商托管 |
| IP 池规模 | 受限于自有 SIM 卡数量 | 数百万轮换 IP |
配置代理服务器软件
当硬件被识别为网络接口后,您还需要一个代理服务器来接收请求并通过指定的调制解调器转发。3proxy 是最轻量、最灵活的工具。
3proxy 配置示例
创建一个 3proxy.cfg 文件。以下配置开启了两个不同的代理端口(3128 和 3129),分别绑定到特定的网络接口(eth1 和 eth2)。
daemon
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
# 身份验证
users "admin:CL:strongpassword123"
auth strong
# 将 3128 端口的流量走 1 号调制解调器
external 192.168.8.100
internal 0.0.0.0
proxy -p3128
# 将 3129 端口的流量走 2 号调制解调器
flush
external 192.168.9.100
internal 0.0.0.0
proxy -p3129
在这套配置中,192.168.8.100 和 192.168.9.100 是分配给 USB 调制解调器的静态 IP。此时 Raspberry Pi 上的每个端口都相当于通往不同移动 IP 地址的网关。

用 Python 实现 IP 轮换自动化
移动代理农场的主要优势之一,是可以让调制解调器重新接入蜂窝网络,从而按需更换 IP 地址。具体做法是向调制解调器的串口发送 AT 命令。
下面的 Python 脚本演示了如何触发华为调制解调器重新连接,迫使 ISP 为设备分配新的 IP 地址。
import serial
import time
def rotate_ip(port='/dev/ttyUSB0'):
try:
ser = serial.Serial(port, 115200, timeout=1)
# 检查连接
ser.write(b'AT\r\n')
time.sleep(1)
# 断开网络连接
ser.write(b'AT^NDISDUP=1,0\r\n')
print(f"Disconnecting {port}...")
time.sleep(5)
# 重新接入网络
ser.write(b'AT^NDISDUP=1,1,"internet"\r\n')
print(f"Reconnecting {port} for new IP...")
time.sleep(10)
ser.close()
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
# 示例:为第一台调制解调器轮换 IP
rotate_ip('/dev/ttyUSB0')
把这段脚本接入 Web API,就能通过一次简单的 HTTP 请求完成 IP 轮换,效果类似 GProxy 等专业服务提供的"Rotation API"。
扩容与性能优化
当规模超过 10 台调制解调器后,您会遇到 Linux 内核限制和供电问题。要维持农场稳定,必须针对高并发优化系统。
内核调优
修改 /etc/sysctl.conf,以支撑更多并发连接并减少 time-wait 状态。这些设置可避免重度抓取任务中常见的"Too many open files"或"Connection refused"错误。
- net.ipv4.ip_local_port_range = 1024 65535 — 扩大可用端口范围。
- net.core.somaxconn = 1024 — 增大入站连接队列长度。
- fs.file-max = 1000000 — 提高打开文件描述符的上限。
- net.ipv4.tcp_tw_reuse = 1 — 允许内核复用处于 TIME_WAIT 状态的套接字。
带宽管理
移动网络是非对称的。下行也许有 50 Mbps,上行却可能被限制在 5 Mbps。如果在一台 Raspberry Pi 上跑 20 台调制解调器,USB 2.0/3.0 总线带宽就可能成为瓶颈。把调制解调器分散到多台 SBC 上,再用千兆交换机互联,才是专业的扩容方式。
安全与远程管理
DIY 农场等于是通往您本地网络的一道入口。放任其不设防是重大风险。您必须用 iptables 或 nftables 制定严格的防火墙规则,确保只有授权 IP 才能访问代理端口。
此外,由于移动 IP 是动态的,您需要一套跟踪每台调制解调器健康状况的手段。用 Prometheus 和 Grafana 搭建一个简易监控面板,可以直观查看每张 SIM 卡的延迟、丢包和流量消耗,从而在故障调制解调器或被限速的 SIM 影响业务之前就发现问题。
如果管理硬件、散热、SIM 卡套餐和内核调优的复杂度已经开始分散您在主营业务上的精力,GProxy 可以让您平滑迁移到托管环境。使用 GProxy,您将获得高速、地域多样的 IP 池,可用率 99.9%,无需再维护物理硬件。
要点总结
搭建 DIY 代理农场是一个复杂但值得的技术项目,能让您对自己的数字足迹拥有无与伦比的掌控力。您已经了解了必备的硬件要求、基于 3proxy 的软件配置,以及如何用 Python 脚本实现 IP 轮换自动化。
- 供电优先:务必使用工业级带供电的 USB 集线器;供电不足是调制解调器不稳定的头号原因。
- 关注温度:7×24 小时运行必须配备主动散热,以防硬件老化和连接中断。
- 软件灵活性:选用 3proxy,因为它资源占用低,并且能把指定端口映射到指定网络接口。
- 评估投资回报:对静态、长期的项目而言,DIY 农场具有成本优势;但若追求大规模和多地域覆盖,GProxy 这类专业服务在可靠性和运维成本上更有优势。
