ipool icon indicating copy to clipboard operation
ipool copied to clipboard

提供公开代理ip的抓取,以及代理的后台api,以及代理管理页面

ipool

提供公开代理ip的抓取,以及代理的管理后台,以及代理的展示后台。 目前是使用scrapy来抓取http://proxylist.hidemyass.com ,上的公开代理,使用flask来管理抓取到的代理,以及对其它爬虫提供代理服务,使用react + flux来管理代理的后台页面。 但正在做迁移,代理后台决定由flask改版为rails,开发进行中。

proxyspiders

对网络上公开代理的网站进行抓取,提取公开代理供自己使用,目前抓取了http://proxylist.hidemyass.com/ , 后续估计会增加新的抓取站点如usproxy。

proxy-frontend

使用reactflux, 以及react-bootstrapproxy-backend提供的api服务,进行网页展示和用户交互

proxy-backend

目前正常工作的版本使用的是flask, 但正在将代码改版为rails

主要会碰到的问题

  1. 代理的质量不好,应该通过购买私人ip,或者抓取更多的公开代理,甚至利用本机的外网ip
  2. 判定一个代理是否还可用, 有时候一个代理只是临时不可用,也许1个小时候,就又回复正常了,而我们可能会永久封禁它
  3. 代理的选择策略,如一直选择成功率最高的,或者成功率中前20个里面随机1个
  4. 爬虫中代理是否需要更换了,如最近1分钟的失败率是70%
  5. 爬虫的分布式抓取时,如何去除重复
  6. 爬虫被手动终止时,如何才能下次resume,恢复到最后的状态

编码方向

  1. 将复杂度集中到一端,即proxy-backend, 保持各子爬虫的简洁,问题集中到一起,方便测试以及策略变更
  2. 当代理相关的复杂集中时,可以考虑计算出某个request请求的domain的经纬度,并进行计算,找出物理地点上离其最近的
  3. 离线计算,定时对不同domain重新测试哪个代理当下更好用
  4. 提供和proxy-backend方便搭配使用的scrapy的各种中间件,以及样例程序
  5. 各子爬虫,只需要向proxy-backend请求新的代理,以及上报当下的统计数据, 如该proxy的尝试次数,和成功次数
  6. 目前只接受http proxy,可尝试下https proxy
  7. 增加公开代理爬虫的抓取
  8. 通过redis cluster来共享抓取到过的页面,用来给分布式的爬虫进行去重
  9. 可考虑搭配lina使用,方便产生api文档
  10. 考虑增加邮件提醒,当一些异常情况发生时

后续

将会为这3个子项目分别更新README.md,以及分别放出demo页面,方便大家测试使用