springboot实现java代理IP池 Proxy Pool

一、背景

前段时间,写java爬虫。不料,爬了一段时间后ip被封禁了。由此,想到了使用ip代理,但是找了很多的ip代理网站,很少有可以用的代理ip。于是,抱着边学习的心态,开发了一个代理ip池。

二、相关技术及环境

技术: SpringBoot,SpringMVC, Hibernate, MySQL, Redis , Maven, Lombok, BootStrap-table,多线程并发

环境: JDK1.8 , IDEA

三、实现功能

通过ip代理池,提供高可用的代理ip,可用率达到95%以上。

|

{

"code":200,

"data":[

    {

        "available":true,

        "ip":"1.10.186.214",

        "lastValidateTime":"2018-09-25 20:31:52",

        "location":"THThailand",

        "port":57677,

        "requestTime":0,

        "responseTime":0,

        "type":"https",

        "useTime":3671

    }

],

"message":"success"

}

home.png

四、设计思路

4.1 模块划分

  • 爬虫模块:爬取代理ip网站的代理IP信息,先通过队列再保存进数据库。
  • 数据库同步模块:设置一定时间间隔同步数据库IP到redis缓存中。
  • 缓存redis同步模块:设置一定时间间隔同步redis缓存到另一块redis缓存中。
  • 缓存redis代理ip校验模块:设置一定时间间隔redis缓存代理ip池校验。
  • 前端显示及接口控制模块:显示可用ip页面,及提供ip获取api接口。

4.2 架构图

crawler.png

五、IP来源

代理ip均来自爬虫爬取,有些国内爬取的ip大多都不能用,代理池的[图片上传中...(crawler.PNG.png-d7a4bb-1547624248809-0)]
可用ip大多是国外的ip。爬取的网站有:http://www.xicidaili.com/nnhttp://www.data5u.com/free/index.shtmlhttps://free-proxy-list.nethttps://www.my-proxy.com/free-proxy-list.htmlhttp://spys.one/en/free-proxy-list/https://www.proxynova.com/proxy-server-list/https://www.proxy4free.com/list/webproxy1.htmlhttp://www.gatherproxy.com/

六、如何使用

前提: 已经安装JDK1.8环境,MySQL数据库,Redis。

先使用maven编译成jar,proxy-pool-1.0.jar。

使用SpringBoot启动方式,启动即可。

java -jar proxy-pool-1.0.jar

实际使用当ip代理池中可用ip低于3000个,可用率在95%以上;当代理池中ip数量增加到5000甚至更多,可用率会变低(因为开启的校验线程数不够多)

转载自博客园

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容