Skip to content
/ ipool Public

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

License

Notifications You must be signed in to change notification settings

seaify/ipool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ipool

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

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

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

目前正常工作的版本使用的是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页面,方便大家测试使用

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published