开源一款高可用的分布式代理 IP 池(附性能测试图)

2018-03-06 14:01:41 +08:00
 resolvewang

项目地址: https://github.com/SpiderClub/haipproxy

陆陆续续花了近六个月的时间实现了一款高可用的分布式代理 IP 池HAipproxy,它的主要用处是为各类被限制 IP 的爬虫提供基础的代理 IP 支撑。HAipproxy 的高可用有两层含义:(1)代理 IP 资源的高可用;(2)项目各个组件的高可用。HAipproxy 的代理 IP 源均来自互联网公开的资源,项目配置了总计 30+的墙内外代理资源提供网站,所以代理 IP 资源的数量并不是 HAipproxy 主要关心的。它主要关心的是如何从海量高度不可用的代理 IP 资源中提取出高质量低延迟的代理 IP 供爬虫使用。为此,HAipproxy 制定了一些列的校验和 IP 筛选策略。在实现 HAipproxy 之前,楼主也调研过现有的代理 IP 付费方案和开源的代理 IP 方案,付费方案中有一些质量较好的但是费用比较高,其它的和开源的项目的效果都差强人意。免费+高性能,这也是HAipproxy的核心竞争力。

Talk is cheap,我们来看点实际的东西。下面是楼主近日以知乎为测试对象,单机条件下对 HAipproxy 进行性能测试的测试结果

可以看到请求量最快可以达到 1w+/hour,楼主对一天的请求量进行了统计,有19w,效果还算令人满意。

V 友们路过的话不妨给个star吧,有使用这个项目的需求则更好了。

新年新气象,祝看了这篇广告贴和点了star的 V 友们今年升职加薪,技术精进一步。

18782 次点击
所在节点    分享创造
76 条回复
golmic
2018-03-06 14:07:41 +08:00
这个赞一个
Charkey
2018-03-06 14:11:33 +08:00
赞一个,刚好有这块需求
resolvewang
2018-03-06 14:14:50 +08:00
@Charkey #2 那赶紧用用,期待宝贵的反馈意见。因为开源比较晚,所以反馈的意见还不够,项目一些细节还能优化
resolvewang
2018-03-06 14:15:06 +08:00
@golmic #1 感谢捧场 :)
golmic
2018-03-06 14:18:02 +08:00
我是专门做数据抓取的,这个 IP 的需求还是很强烈的,尝试自己搭建过 IP 代理池以及打分系统,效果并不完美,下次有需求试一下你这个项目。多沟通交流~我微信 lujqme
resolvewang
2018-03-06 14:22:01 +08:00
@golmic #5 好的,有想法的话,可以一起改进。做这个之前,我就是用着别的都不是很舒服。因此集中花了两个多月研究同类项目和其它一些文档,又结合自己的一些想法,实现了 haipproxy。期待你的使用和反馈
haofly
2018-03-06 14:26:15 +08:00
666,厉害,正好用到
resolvewang
2018-03-06 14:28:41 +08:00
@haofly #7 哈哈哈,感谢捧场。你当真用了吗
sw10
2018-03-06 15:40:09 +08:00
简单看了下,是利用 Squid 的 cache_peer ?

cache_peer {} parent {} 0 no-query weighted-round-robin weight=1 connect-fail-limit=2 allow-miss max-conn=5 name=proxy-{}

squid_path -k reconfigure

之前写过类似的东西,但是因为权限验证的缘故,重新用 GoLang 实现了。

赞一个~
resolvewang
2018-03-06 15:47:14 +08:00
@sw10 squid 是实现的一个客户端。但是它的效果应该不会有定制的客户端的效果好,比如[client/py_cli]( https://github.com/SpiderClub/haipproxy/blob/master/client/py_cli.py) 原因是 squid 对代理 IP 的使用效果没有一个正负面反馈,而定制的客户端可以对高质量 IP 和低质量 IP 进行直接的反馈,根据反馈,客户端再决定是否将相同 IP 再次传递给爬虫使用。这就是截图中的 greedy 策略。如果是用 robin 策略,那么就和使用 squid 差不多了,即高质量和低质量 IP 轮询。这种方式很可能错过很多高质量 IP,因为网上抓来的 IP 大多是短效的,客户端 IP 池可能还没轮完一轮,某些高质量 IP 可能就不能用了
sw10
2018-03-06 15:57:38 +08:00
@resolvewang 思路很赞,谢谢~
resolvewang
2018-03-06 16:03:17 +08:00
@sw10 #11 客气了。其实 haipproxy 还有一个点做得比同类项目要好,就是它取 IP 的时候看同时参照最近校验时间、响应速度和稳定性。这也是从高度不可用的代理 IP 池中挑选中质量尚可的代理 IP 的一个很重要的策略
sunwei0325
2018-03-06 16:12:27 +08:00
感谢楼主, git 三库 star, 以表敬意
resolvewang
2018-03-06 16:14:51 +08:00
@sunwei0325 #13 感谢。希望能用起来,就是最好的
iamnoten
2018-03-06 16:21:39 +08:00
支持,最近正需要这方面的东东,谢谢楼主
resolvewang
2018-03-06 16:24:36 +08:00
@iamnoten #15 欢迎试用。使用过程中有任何问题可以直接提 issue
xrlin
2018-03-06 16:49:10 +08:00
支持
resolvewang
2018-03-06 16:51:26 +08:00
@xrlin #17 感谢捧场
hunk
2018-03-06 17:02:50 +08:00
顶,在用 IPProxy,和 scrapy 搭配,还算成。
收藏研究着
resolvewang
2018-03-06 17:18:48 +08:00
@hunk 可以对比使用,看看效果,hahahh

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/435313

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX