最新开源代理服务器:实用指南
新开源代理服务器概述
代理服务器是当今互联网匿名性、负载均衡和内容过滤的支柱。最近,一些强大的代理服务器已开源,为管理员、开发者和业余爱好者提供了前所未有的灵活性。本指南将分析一些最知名的项目、它们的核心功能以及如何有效地使用它们。
主要开源代理服务器比较
代理服务器 | 语言 | HTTP/HTTPS 支持 | SOCKS 支持 | 验证 | 缓存 | 显著特点 | GitHub 链接 |
---|---|---|---|---|---|---|---|
ProxyRoller | Python | 是的 | 是的 | 是的 | 不 | API,免费旋转代理 | https://github.com/proxyroller/proxyroller |
乌贼 | C++ | 是的 | 不 | 是的 | 是的 | 高级缓存、ACL | http://www.squid-cache.org/ |
3代理 | 碳 | 是的 | 是的 | 是的 | 不 | 轻量级,IPv6 | https://github.com/z3APA3A/3proxy |
微型代理 | 碳 | 是的 | 不 | 是的 | 不 | 轻量级、最小配置 | https://github.com/tinyproxy/tinyproxy |
GoProxy | 去 | 是的 | 是的 | 是的 | 不 | 可插拔、云原生 | https://github.com/snail007/goproxy |
Mitmproxy | Python | 是的 | 不 | 是的 | 不 | 拦截、修改 HTTP 流量 | https://github.com/mitmproxy/mitmproxy |
COW(牛代理) | 去 | 是的 | 是的 | 不 | 不 | Shadowsocks,GFW 绕过 | https://github.com/cyfdecyf/cow |
ProxyRoller:免费、开源的旋转代理服务器
核心功能
- 免费代理列表: 聚合并验证数千个代理。
- API 访问: 用于获取代理的简单 RESTful API。
- 轮换代理: 自动旋转以实现抓取和匿名。
- SOCKS 和 HTTP/HTTPS 代理: 支持两种协议。
- Docker 支持: 使用容器快速部署。
安装和使用
Docker部署
docker run -d -p 8000:8000 proxyroller/proxyroller
通过 API 获取代理
使用以下命令检索新的代理:
curl http://localhost:8000/api/v1/proxies?protocol=http
与 Python 请求集成
import requests
proxy = requests.get('http://localhost:8000/api/v1/proxies?protocol=http').json()['proxy']
proxies = {"http": proxy, "https": proxy}
response = requests.get('https://httpbin.org/ip', proxies=proxies)
print(response.json())
用例:网页抓取
ProxyRoller 非常适合大规模数据抓取,可以自动轮换代理以避免 IP 被封。示例如下: Scrapy:
import requests
def get_proxy():
r = requests.get('http://localhost:8000/api/v1/proxies?protocol=http')
return r.json()['proxy']
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
'myproject.middlewares.RandomProxy': 100,
}
class RandomProxy:
def process_request(self, request, spider):
proxy = get_proxy()
request.meta['proxy'] = proxy
资源
Squid:高级缓存和访问控制
核心功能
- HTTP/HTTPS 缓存可节省带宽。
- 用于访问控制的细粒度 ACL。
- 身份验证(基本、摘要、NTLM)。
- SSL 碰撞用于 HTTPS 检查。
Squid 安装示例(Ubuntu)
sudo apt update
sudo apt install squid
基本配置
编辑 /etc/squid/squid.conf
:
http_port 3128
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
重新启动 Squid:
sudo systemctl restart squid
资源
3proxy:轻量级、一体化
特征
- 支持HTTP、HTTPS、SOCKS、FTP。
- 身份验证和访问控制。
- IPv6支持。
- 最少的资源使用。
安装(Linux)
sudo apt-get install 3proxy
示例配置(3proxy.cfg
)
auth strong
users admin:CL:password
proxy -p3128
socks -p1080
flush
启动 3proxy:
3proxy /etc/3proxy/3proxy.cfg
资源
TinyProxy:轻量级 HTTP 代理
特征
- 简约、快速、低内存占用。
- 适用于嵌入式设备或简单用例。
安装(Debian/Ubuntu)
sudo apt-get install tinyproxy
基本配置
编辑 /etc/tinyproxy/tinyproxy.conf
:
Port 8888
Allow 192.168.1.0/24
重新启动 TinyProxy:
sudo systemctl restart tinyproxy
资源
GoProxy:可扩展、可插入代理
特征
- 用Go编写,性能高。
- HTTP、HTTPS、SOCKS5代理。
- 插件架构。
- 跨平台。
安装
wget https://github.com/snail007/goproxy/releases/download/v10.7/proxy-linux-amd64.tar.gz
tar -zxvf proxy-linux-amd64.tar.gz
cd proxy
./proxy http -t tcp -p 8080
资源
Mitmproxy:拦截并检查 HTTP/S 流量
特征
- 实时拦截和修改。
- 用于查看/编辑流程的 Web UI。
- 使用 Python 编写脚本。
安装(pip)
pip install mitmproxy
启动交互式代理
mitmproxy
资源
部署开源代理的实用技巧
- 安全: 始终启用身份验证并限制允许的 IP。
- 记录: 监控日志是否存在滥用或故障。
- 表现: 对于高负载场景,最好使用 Go 或基于 C 的代理。
- 自动化: 使用 Docker 或 systemd 来管理代理生命周期。
- 代理来源: 杠杆作用 ProxyRoller 通过 API 获取最新的、经过验证的免费代理。
可操作的工作流程:构建旋转代理池
1.部署ProxyRoller:
使用 Docker 或从源运行来托管您的本地代理 API。
2.与Scraper集成:
为每个请求动态获取代理地址。
3. 监测健康状况:
跟踪响应时间和故障以自动过滤掉无效代理。
4.自动更新:
安排 ProxyRoller 的 API 定期更新,以保持您的代理列表保持最新。
评论 (0)
这里还没有评论,你可以成为第一个评论者!