ipool
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
使用react和flux, 以及react-bootstrap 和proxy-backend提供的api服务,进行网页展示和用户交互
proxy-backend
目前正常工作的版本使用的是flask, 但正在将代码改版为rails
主要会碰到的问题
- 代理的质量不好,应该通过购买私人ip,或者抓取更多的公开代理,甚至利用本机的外网ip
- 判定一个代理是否还可用, 有时候一个代理只是临时不可用,也许1个小时候,就又回复正常了,而我们可能会永久封禁它
- 代理的选择策略,如一直选择成功率最高的,或者成功率中前20个里面随机1个
- 爬虫中代理是否需要更换了,如最近1分钟的失败率是70%
- 爬虫的分布式抓取时,如何去除重复
- 爬虫被手动终止时,如何才能下次resume,恢复到最后的状态
编码方向
- 将复杂度集中到一端,即proxy-backend, 保持各子爬虫的简洁,问题集中到一起,方便测试以及策略变更
- 当代理相关的复杂集中时,可以考虑计算出某个request请求的domain的经纬度,并进行计算,找出物理地点上离其最近的
- 离线计算,定时对不同domain重新测试哪个代理当下更好用
- 提供和proxy-backend方便搭配使用的scrapy的各种中间件,以及样例程序
- 各子爬虫,只需要向proxy-backend请求新的代理,以及上报当下的统计数据, 如该proxy的尝试次数,和成功次数
- 目前只接受http proxy,可尝试下https proxy
- 增加公开代理爬虫的抓取
- 通过redis cluster来共享抓取到过的页面,用来给分布式的爬虫进行去重
- 可考虑搭配lina使用,方便产生api文档
- 考虑增加邮件提醒,当一些异常情况发生时
后续
将会为这3个子项目分别更新README.md,以及分别放出demo页面,方便大家测试使用