原创一个基于付费芝麻代理的微型代理池清洗机 CleanProxyPool
开发一个超简单的付费代理池监控维护器
爬虫经常会用到代理ip,其中有很多收费ip,但是如何在scrapy中,高效使用这些ip是一个比较麻烦的事情,在这里基于芝麻代理ip做一个代理池监控器,首先整理我们的需求
整理需求
芝麻付费代理 取ip是不要钱,只有使用才收费,针对这个特点,可以让我们代理池24小时始终保持指定数量的ip即使没有使用
- 需要监控ip是否过期,如果已经过期就从池中删除
- 监控访问目标网址的成功率,将成功率低的自动剔除
- 让ip池长期保持设定的ip数量,以便随时取用
服务端
- 程序需要在服务端24小时运行
- 实时监控,默认2秒频率
apscheduler模块
-
redis的有序集合
积分板功能作为ip储存,所以程序最好是放于redis同服务器或者同内网上保障实时读写效率 - 提取IP的时候,有效存活时间过短的自动放弃(不入库)自动筛选
- 监控内容:
- 扫描每个IP过期时间,到期删除
- 总个数小于预设值就申请新的IP且值初始ip质量分=10
- 积分 = ‘ip质量分’ + ‘到期时间戳’ 例如: 101556616966 后面10位是时间戳,前面是分数10。
- 注意: 分数加减只是对前面2位进行加减,后面10位是时间戳用来比对时间
爬虫端
- 中间键配置代理ip从redis中 random.choice()出ip
- 访问成功 质量分数+1 访问失败 质量分数-1
这样一来一个简易版的IP池管理工具就搞定了,池中一直会保持可用的新鲜IP
使用说明
1 | pip3 install redis |
- python 3.7.2
- redis 5.0.4
- apscheduler 3.6.0
首先登陆你的芝麻代理后台管理,找到自己的key如图
在代码下方配置key
在代码中配置 redis库连接 默认链接的本地
启动程序
如果在服务端可以使用后台运行命令
nohup python3 ProxyPool.py >my.log &
第一次启动芝麻代理会绑定你的ip白名单,稍等片刻就会开始提取
链接redis可以看到ip池了,大功告成
后续在使用代理ip时,根据访问结果对代理ip积分增减即可,后续会更新这个Demo继续关注Github即可。传送门
额外配置
可以自由配置,代理池上线值(默认20),实例化时配置即可
1
zm = ZhiMaPool('key', ip_sum=100)
可以自由配置,只取可用时间xx以上的ip(默认1号套餐下的1000秒以上),实例化时配置即可
1
zm = ZhiMaPool('key', ttl=1000)
还可以配置 每次提取数、提取套餐类型、提取ip HTTP或者HTTPS或者Sockets