springboot實現java代理IP池 Proxy Pool,提供可用率達到95%以上的代理IP

 

1、背景

前段時間,寫java爬蟲來爬網易雲音樂的評論。不料,爬了一段時間後ip被封禁了。由此,想到了使用ip代理,可是找了不少的ip代理網站,不多有能夠用的代理ip。因而,抱着邊學習的心態,本身開發了一個代理ip池。html

 

2、相關技術及環境

技術: SpringBoot,SpringMVC, Hibernate, MySQL, Redis , Maven, Lombok, BootStrap-table,多線程併發
環境: JDK1.8 , IDEA前端

 

3、實現功能

經過ip代理池,提供高可用的代理ip,可用率達到95%以上。java

 

{
    "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"
}

  

  • 經過頁面獲取代理ip 經過訪問url,如:http://127.0.0.1:8080 返回代理ip列表頁面。

 

4、設計思路

     4.1 模塊劃分

    • 爬蟲模塊:爬取代理ip網站的代理IP信息,先經過隊列再保存進數據庫。
    • 數據庫同步模塊:設置必定時間間隔同步數據庫IP到redis緩存中。
    • 緩存redis同步模塊:設置必定時間間隔同步redis緩存到另外一塊redis緩存中。
    • 緩存redis代理ip校驗模塊:設置必定時間間隔redis緩存代理ip池校驗。
    • 前端顯示及接口控制模塊:顯示可用ip頁面,及提供ip獲取api接口。

     4.2 架構圖

5、IP來源

代理ip均來自爬蟲爬取,有些國內爬取的ip大多都不能用,代理池的ip可用ip大可能是國外的ip。爬取的網站有:http://www.xicidaili.com/nn ,http://www.data5u.com/free/index.shtml ,https://free-proxy-list.net ,https://www.my-proxy.com/free-proxy-list.html ,http://spys.one/en/free-proxy-list/ , https://www.proxynova.com/proxy-server-list/ ,https://www.proxy4free.com/list/webproxy1.html ,http://www.gatherproxy.com/ 。git

6、如何使用

前提: 已經安裝JDK1.8環境,MySQL數據庫,Redis。
先使用maven編譯成jar,proxy-pool-1.0.jar。
使用SpringBoot啓動方式,啓動便可。github

java -jar proxy-pool-1.0.jar

 

實際使用當ip代理池中可用ip低於3000個,可用率在95%以上;當代理池中ip數量增長到5000甚至更多,可用率會變低(由於開啓的校驗線程數不夠多)web

有什麼使用的問題歡迎回復。。。redis

本文代碼已經提交github:https://github.com/chenerzhu/proxy-pool  歡迎下載。。。數據庫

相關文章
相關標籤/搜索