
一、前言:为啥非要自己搭代理池?
平时写爬虫、多账号批量运营、接口压力测试,或是偶尔需要跨境上网,市面上通用付费代理坑非常多:按次收费太贵、接口经常限流、很多IP反复复用还容易封号,而且自己的流量数据完全不受控。
直接用腾讯云轻量应用服务器自建免费私有代理池,普通人也能一键搞定,核心优势直白说下:
本次教程直接用开源高星代理池项目,不用自己写一行代码,四个模块全自动干活,省心到底:
照着下表选配置就行,不用瞎折腾高配,低配完全够用:
组件 | 推荐配置 | 选这个的原因 |
|---|---|---|
轻量服务器 | 1核1G,40GB硬盘,3M带宽 | 代理池不吃配置,低配足够日常使用,不浪费钱 |
操作系统 | CentOS 7.6 64位 | 兼容性天花板,所有命令直接复制就能用,几乎不会报错 |
服务器地域 | 国内:北京/上海;跨境:中国香港 | 香港节点免备案,做跨境访问首选;国内节点访问国内网站延迟更低 |
服务器默认会屏蔽所有外部访问端口,如果不放行端口,后续网页面板打不开、接口调不通,照着下面表格一键放行就行:
协议 | 端口 | 端口作用 |
|---|---|---|
TCP | 22 | 远程SSH连接服务器必备端口 |
TCP | 5010 | 代理池后台面板+API调用核心端口 |
TCP | 6379 | Redis数据库端口,本地自用就行,不用对外开放 |
不用纠结第三方连接工具,怎么方便怎么来:
代理池一共需要三个依赖:Python3、Redis、Git,下面所有命令直接复制运行,全程不用动脑:
yum update -yyum install git python3 python3-pip -y
# 切换pip清华国内源,告别国外下载慢、超时报错问题
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simpleyum install redis -y
# 启动Redis + 设置开机自动启动
systemctl start redis
systemctl enable redis
# 检测Redis是否正常工作,返回PONG就代表没问题
redis-cli ping简易自检标准:终端输出PONG,说明基础环境全部装完,下一步直接部署项目即可
# 下载开源代理池完整源码
git clone https://github.com/jhao104/proxy_pool.git
# 进入项目文件夹
cd proxy_poolpip3 install -r requirements.txt默认配置抓取频率太高,低配服务器容易CPU飙升,我们简单改下参数,运行更稳:
vi proxy_pool/setting.py找到对应参数,直接替换成下面内容,其余配置一概不动:
# 放慢爬虫抓取间隔,60秒爬一次,减轻服务器压力
CRAWLER_RUN_CYCLE = 60
# 每30秒检测一遍存量IP,及时清理坏IP
VALIDATOR_RUN_CYCLE = 30
# 超过5秒没响应直接判定为坏IP,保证代理速度
VERIFY_TIMEOUT = 5
# 保持自动抓取代理开启
ENABLE_CRAWL = True保存退出快捷键:按ESC,输入:wq回车即可
python3 run.py终端看到 Flask server start on 0.0.0.0:5010 就说明启动成功啦。
直接浏览器打开:http://服务器公网IP:5010,就能看到可视化后台面板,实时查看可用IP数量、运行日志。
刚才直接前台运行,只要关掉SSH连接窗口,代理池就会直接停止。想要服务器关机重启、意外崩溃都能自动重启服务,我们用Supervisor做进程守护,挂机更省心。
pip3 install supervisorvi /etc/supervisord.d/proxy_pool.ini全选粘贴下面配置,不用修改任何内容:
[program:proxy_pool]
command=/usr/bin/python3 /root/proxy_pool/run.py
directory=/root/proxy_pool
user=root
autostart=true
autorestart=true
startretries=3
stdout_logfile=/root/proxy_pool/proxy.log
stderr_logfile=/root/proxy_pool/proxy_err.log# 初始化守护进程配置
supervisord -c /etc/supervisord.conf
# 加载代理池服务
supervisorctl update
# 正式启动代理池
supervisorctl start proxy_pool
# 设置守护进程开机自启
systemctl enable supervisord
systemctl start supervisord日常运维常用命令,收好备用:
supervisorctl statussupervisorctl restart proxy_poolsupervisorctl stop proxy_pool服务全部部署完毕,自带现成HTTP接口,不用自己写接口,爬虫、自动化脚本直接对接,开箱即用。
接口地址 | 请求方式 | 接口作用 |
|---|---|---|
http://IP:5010/get | GET | 随机拿一个可用代理IP |
http://IP:5010/get_all | GET | 一次性获取全部存活IP |
http://IP:5010/count | GET | 查看当前可用IP总数量 |
http://IP:5010/delete?proxy=ip:port | GET | 手动删除已经失效的IP |
import requests
# 这里改成你自己的服务器公网IP就行
base_url = "http://你的公网IP:5010"
# 随机获取一个可用代理IP
res = requests.get(f"{base_url}/get")
proxy = res.text
print("成功获取代理IP:", proxy)
# 测试代理是否真正生效
proxies = {
"http": f"http://{proxy}",
"https": f"https://{proxy}"
}
# 公共IP校验接口,无需第三方工具
test_res = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
print("代理切换后显示的外网IP:", test_res.text)开源自带的免费代理源质量一般,存活IP不多,简单改两处,可用率直接从30%涨到70%+:
进入 proxy_pool/crawler/providers 目录,批量补充全网公开稳定免费代理数据源,拓宽IP抓取渠道,直接提升代理池库存总量。
原本只检测单个网站,容易出现IP检测合格,实际用不了的情况。改成同时校验国内主流站点、公共网络校验站点,过滤掉假性可用IP,保证代理真实可用。
如果是线上稳定业务,建议少量搭配通用按量付费代理接口做补充,付费代理占七成,免费IP做备用,彻底告别IP失效问题,全程无需绑定特定服务商。
systemctl stop firewalldsystemctl status redis没有配置Supervisor守护进程,一定要走完第五章常驻配置步骤,不要一直前台运行程序。
整篇教程全程复制命令即可,零基础不用懂代码,低配腾讯云轻量服务器就能跑通完整代理池,实现IP自动抓取、自动验活、接口一键调用、全年无人值守挂机。
日常爬虫、账号隔离、网络测试完全够用;如果需要更高稳定性的独享动态IP,还可以搭配腾讯云弹性网卡做定时换本机公网IP,彻底解决爬虫IP封禁难题。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。