ProxyPool proxy-pool: java 基于springboot框架获取代理ip


PROXY-POOL: java 基于springboot框架获取代理ip🌠

                                               _ 
                                              | |
 _ __  _ __ _____  ___   _   _ __   ___   ___ | |
| '_ \| '__/ _ \ \/ / | | | | '_ \ / _ \ / _ \| |
| |_) | | | (_) >  <| |_| | | |_) | (_) | (_) | |
| .__/|_|  \___/_/\_\\__, | | .__/ \___/ \___/|_|
| |                   __/ | | |                  
|_|                  |___/  |_|                  
                                                 

主要功能

​ 🍊为定时爬取网上发布的免费代理,采用定时任务的方式,验证爬取的代理,保证代理的可用性,主要提供API使用方式。同时你也可以扩展代理源以增加代理池IP的质量和数量。

项目地址点击此


如何运行

1.下载代码
git clone git@github.com:1974525360/proxy-pool.git
2.安装依赖
3.配置文件

配置文件 application.yaml 位于项目的主目录resources下:

# redis的配置
spring:
  redis:
    port: 6379
# 服务对外开放的端口
server:
  port: 8093

# 爬取任务和校验ip的配置
job:
  task:
    # redis中有效的ip数量小于指定数量则爬取ip
    count-ip: 20
    # 校验有效的ip 使用爬取的ip通过代理的方式模拟游览器请求发送指定url
    validity:
      http-url: "https://www.baidu.com/"
      https-url: "http://httpbin.org"
      # 代理请求校验失败的次数 超过此次数则加入黑名单
      fail-count: 2
4.启动项目

1️⃣ idea中直接运行

2️⃣ 使用maven 打包成jar,使用以下指令:

java -jar proxy-pool-0.0.1.jar

如何使用

Api
  • 启动web服务后, 默认配置下会开启 http://localhost:8093 的api接口服务:
apimethodDescriptionparams(暂时无可选参数)
🐇/getget随机获取一个代理参数可选参数: ?type=https 过滤支持https的代理
🐎/popget获取并删除一个代理可选参数: ?type=https 过滤支持https的代理
🐶 /listget获取所有代理可选参数: ?type=https 过滤支持https的代理
🐱/countget查看代理数量

如何扩展

1.爬取配置

​ 在项目文件中,启用的代理爬取方法名,代理爬取方法位于util/fetcher/WebProxyFetcher.java类中,因为代理源不稳定,时 常改变,所以在代理源失效时,直接把其注释即可,以保证代理源是始终有效的。

  • 扩展代理

    1️⃣ 使用类似的代码,在其中实现自己的爬取逻辑,代码如下:

    @Async
    @ExceptionHandler
    @Retryable(value = Exception.class)
    public void webProxyPool08() throws Exception {
        
    }
  • 定时任务

    2️⃣在util/job/RequestPoolJob.java类中,加入如下代码:

     log.info("开始爬取第八个网址============>>>");
     webProxyFetcher.webProxyPool08();
2.校验配置

​ 在com\zms\proxy\running\RedisQueueDisposableBeanRunning.javal类中,这一部分主要是管理redis的存储的生命周期和启动之后所要执行的校验方法,代码如下:

    @Override
    public void start() {
        log.info("开始前清理redis==============>>");
//        抓取的ip存放位置
        redisBaseService.delete(keyCn);
//        校验有效的ip存放位置
        redisBaseService.delete(effKey);
//        黑名单
        redisBaseService.delete(nullityHttpKey);
        redisBaseService.delete(nullityHttpsKey);
//        国外的ip
        redisBaseService.delete(keyNotCN);
//        有效的ip映射
        redisBaseService.delete(effMapKey);
        log.info("开启redis-ip校验==============>>");
//		  支持的http校验
        proxyIpCheck.checkRedisQueueHttp();
//        暂时不支持https校验
//      proxyIpCheck.checkRedisQueueHttps();
        running = true;
    }

​ 🔑在此方法中,主要配置的是下次启动时,对于redis中的存取的ip管理,注释掉黑名单就可以在下次启动时减少校验次数,提高效率。


代理来源

​ 目前实现的采集免费代理网站有(排名不分先后, 下面仅是对其发布的免费代理情况, 付费代理测评可以参考这里 )

代理名称状态更新速度可用率地址代码
站大爷⭐️🌟🌟地址webProxyPool01()
66代理⭐️🌟🌟地址webProxyPool02()
开心代理⭐️🌟🌟地址webProxyPool03()
快代理⭐️🌟🌟地址webProxyPool04()
proxylist⭐️🌟🌟地址webProxyPool05()
云代理⭐️🌟🌟地址webProxyPool06()
89代理⭐️🌟🌟地址webProxyPool07()

贡献代码

  • 感谢此项目 提供给我开发的思路和免费的代理网址。
  • 本项目依然不够完善,如果发现bug或有新的功能添加,请在Issues提交。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值