ProxyPool
是基于Spring-Boot + Redis实现的稳定高可用的代理池系统
做过爬虫项目的应该都了解,单个IP频繁请求某些网站的时候会被限制IP并要求输入验证码,这时你有两种方式去解决,一是花钱买别人提供的代理池接口,二是自己维护一个稳定高可用的代理池;本系统正是针对第二种解决方案而产生的
系统通过抓取网上免费的代理信息,存储到Redis数据库的有序集合中,并定时去验证这些抓来的代理信息的可用性对代理按照分值大小过滤来获取高可用代理信息,最后通过API接口提供给爬虫项目使用,系统整个架构请参考下面的架构图
-
代理池基本框架
-
存储代理到Redis功能
-
66ip免费代理抓取
-
代理验证和代理抓取的定时调度器
-
添加访问代理的API
-
添加手工录入代理的功能
-
添加快代理爬虫
-
添加西刺代理爬虫
-
添加更多的免费代理爬虫
-
整个高大上的项目首页
-
完善文档
-
根据ISSUE修改验证逻辑
-
fork本项目或者点击这里下载本项目到自己的电脑
-
进入项目根目录,修改
src/main/resources/application.properties
文件中的Redis
配置为你自己的配置信息,项目默认使用127.0.0.1:6379
-
从终端Terminal进入项目根目录执行
mvn spring-boot:run
即可运行 -
启动成功后从浏览器访问http://127.0.0.1:9999,就能一窥
ProxyPool
代理池系统的全貌了
API | 释义 | 备注 |
---|---|---|
/api/proxy/stats | 统计代理池数量 | 统计代理池总数和高可用代理总数 |
/api/proxy/random | 随机获取一个代理 | 先获取高可用的,如果没有找到,随机返回一个其他代理,可能返回NULL |
/api/proxy/random/high | 随机获取一个高可用代理 | 随机返回分数最高的代理,如果没有返回NULL |
/api/proxy/list?pageNum=1&pageSize=20 | 获取代理分页列表 | pageNum默认1,pageSize默认20 |
/api/proxy/save?ip=XXXX&port=XX | 保存代理 | 手工保存一个代理 |
-
JDK 1.8+、Maven 3.3+、Redis 5.0.2 项目使用了Redis中的有序集合数据结构,不一定非要安装这个版本,只因为作者的电脑上安装的是这个版本而已
-
PhantomJS无头浏览器的安装及PATH环境变量配置(由于要抓取的网站有WAF反爬虫机制,为了简单起见项目使用selenium来驱动PhantomJS浏览器来绕过目标站点对爬虫的限制)
-
在
gitee.com
上Fork
本仓库到自己的repo -
把
Fork
过去的项目也就是你的项目clone
到你的本地 -
修改代码,添砖加瓦
-
git commit
后push
到自己的库 -
登录
gitee.com
,然后新建一个pull request
,填写一些必要的信息后提交 -
等待作者合并
-
有问题请在本项目上直接提
ISSUE
-
即时沟通请加QQ群: 822297027(加群备注:
ProxyPool
)
感谢以下各个伟大的开源项目,是你们让世界更加的美好,感谢!