Skip to content

异步抓取代理ip,定时用协程重复验证ip,可方便扩展worker数量

License

Notifications You must be signed in to change notification settings

havefun-plus/ip-proxy-pool

Repository files navigation

ip-proxy-pool

一、简介

抓取代理服务,主要依赖cronjob,包括以下几个部分:

1.1 master

调度任务,主要根据爬虫验证器配置的时间规则,按时把任务扔进redisworker执行。

  • 启动: ./master.sh

1.2 worker

1.2.1 资源

轮询任务队列,一旦有任务就发起一个新的协程执行任务,对验证器来说,比如RawValidator,当需要验证的ip太多的话,每2分钟新起一个验证器并不会耗费太多资源,同时会加快验证速度。worker主要会执行两种任务,即爬虫验证器

1.2.2 爬虫

现在本项目都在ipfeeder/cronjobs/spiders下,目前有下面几种爬虫:

  1. 无忧代理
  2. 全网代理
  3. 云代理
  4. IP海
  5. 免费代理IP库
  6. 快代理
  7. 西刺代理

1.2.3 验证器

  1. RawValidator,验证新爬到的ip,如果验证通过的话分别放进http sethttps set,现在每2分钟会调度起一个新的RawValidator,也就是至少需要两分钟才会在api接口里面获得有用的代理ip。需要注意如果时间间隔太短,比如设为1s,每一秒新起一个新的协程,可能会造成并发太高而出现其他问题,比如验证用的网站httpbin.org压力太大。
  2. HttpValidator, 每过一段时间发起一个新的HttpValidator去重复验证已经通过验证在http set中的数据,未通过验证会被丢弃
  3. HttpsValidator,同上

验证规则:

验证时候会用需要验证的ip作为代理,访问settings.VALIATE_HTTP_URLS(http), settings.VALIATE_HTTPS_URLS(https),获取X-Forwarded-For (XFF),如果XFF的第一个ip和代理ip相同,即认为通过验证,需要注意的是,这个规则下只验证了匿名ip。

现在配置文件里面的settings.VALIATE_HTTP_URLSsettings.VALIATE_HTTPS_URLS指定的都是httpbin部署的网站,也可以根据需要添加自定义验证规则。

1.2.4 启动

  • 启动方式 ./worker.sh

1.3 web服务

通过api形式提供已通过验证的代理ip。

  • URL: http://localhost:5000/proxies?limit=10&protocol=http

  • URL: http://localhost:5000/proxies?protocol=https

  • URL: http://localhost:5000/proxies

  • 启动方式 ./web.sh

二、使用

2.1 docker/docker-compose

如果安装了dockerdocker-compose, 可以执行

make docker-run

2.2 没有docker

  1. 修改配置文件ipfeeder/settings.py,特别是配置redis
  2. 创建pyhton虚拟环境,安装依赖pip3.6 install -r deploy/requirements/prod.txt
  3. 分别执行./deploy/worker.sh./deploy/master.sh./deploy/web.sh

About

异步抓取代理ip,定时用协程重复验证ip,可方便扩展worker数量

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published