项目地址: 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 友们今年升职加薪,技术精进一步。
1
golmic 2018-03-06 14:07:41 +08:00 via Android 1
这个赞一个
|
2
Charkey 2018-03-06 14:11:33 +08:00 1
赞一个,刚好有这块需求
|
3
resolvewang OP @Charkey #2 那赶紧用用,期待宝贵的反馈意见。因为开源比较晚,所以反馈的意见还不够,项目一些细节还能优化
|
4
resolvewang OP @golmic #1 感谢捧场 :)
|
5
golmic 2018-03-06 14:18:02 +08:00 via Android 1
我是专门做数据抓取的,这个 IP 的需求还是很强烈的,尝试自己搭建过 IP 代理池以及打分系统,效果并不完美,下次有需求试一下你这个项目。多沟通交流~我微信 lujqme
|
6
resolvewang OP @golmic #5 好的,有想法的话,可以一起改进。做这个之前,我就是用着别的都不是很舒服。因此集中花了两个多月研究同类项目和其它一些文档,又结合自己的一些想法,实现了 haipproxy。期待你的使用和反馈
|
7
haofly 2018-03-06 14:26:15 +08:00
666,厉害,正好用到
|
8
resolvewang OP @haofly #7 哈哈哈,感谢捧场。你当真用了吗
|
9
sw10 2018-03-06 15:40:09 +08:00 1
简单看了下,是利用 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 实现了。 赞一个~ |
10
resolvewang OP @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 可能就不能用了
|
11
sw10 2018-03-06 15:57:38 +08:00
@resolvewang 思路很赞,谢谢~
|
12
resolvewang OP @sw10 #11 客气了。其实 haipproxy 还有一个点做得比同类项目要好,就是它取 IP 的时候看同时参照最近校验时间、响应速度和稳定性。这也是从高度不可用的代理 IP 池中挑选中质量尚可的代理 IP 的一个很重要的策略
|
13
sunwei0325 2018-03-06 16:12:27 +08:00
感谢楼主, git 三库 star, 以表敬意
|
14
resolvewang OP @sunwei0325 #13 感谢。希望能用起来,就是最好的
|
15
iamnoten 2018-03-06 16:21:39 +08:00 1
支持,最近正需要这方面的东东,谢谢楼主
|
16
resolvewang OP @iamnoten #15 欢迎试用。使用过程中有任何问题可以直接提 issue
|
17
xrlin 2018-03-06 16:49:10 +08:00 1
支持
|
18
resolvewang OP @xrlin #17 感谢捧场
|
19
hunk 2018-03-06 17:02:50 +08:00 1
顶,在用 IPProxy,和 scrapy 搭配,还算成。
收藏研究着 |
20
resolvewang OP @hunk 可以对比使用,看看效果,hahahh
|
21
freedot 2018-03-06 21:36:49 +08:00 via iPhone 1
支持
|
22
resolvewang OP @freedot 欢迎使用哦
|
23
exoticknight 2018-03-06 21:56:08 +08:00 1
造福人类。好久没搞爬虫估计用不上,不过还是贡献一个 star ~
|
24
resolvewang OP @exoticknight #23 感动,笔芯
|
25
chenqh 2018-03-06 22:07:01 +08:00 via iPhone 1
真是大佬,进 tx 了没
|
26
xuxueli 2018-03-06 22:15:40 +08:00 via Android
这里有个 java 版本的爬虫,拥有"多线程、异步、IP 动态代理、分布式、JS 渲染"等特性。提供了自建 ip 代理池的示例代码。
https://github.com/xuxueli/xxl-crawler |
27
resolvewang OP @chenqh #25 资历尚浅,以后有机会一定会试试
|
28
resolvewang OP 哈哈哈,可以试试楼上的同学@ xuxueli 的爬虫框架和 haipproxy 搭配的使用效果
|
29
Cyron 2018-03-07 01:27:47 +08:00 via iPhone 1
hai p proxy 嗨皮代理?
顺便给大佬舔 jio |
30
WildCat 2018-03-07 09:02:13 +08:00 via iPhone 1
四个命令有点麻烦 能否来个简单单命令模式?
|
31
resolvewang OP @Cyron 哥们你真有才。不过这个名字应该是这么读,high available ip proxy,就是帖子上说的高可用代理。都是正经人,也得取个正儿八经的名字
|
32
resolvewang OP @WildCat 感谢反馈。由于系统组件本身就比较多,包括了代理 IP 抓取程序和校验器,抓取程序定时任务调度工具和校验器定时任务调度工具,这四个命令主要就是启动这四货的。可以在一个 shell 脚本中启动它们。可以参考 [run.sh]( https://github.com/SpiderClub/haipproxy/blob/master/run.sh)。更方便的模式我还没想出来,你要有好的意见可以提一下
|
33
CrazyMelody 2018-03-07 13:28:28 +08:00 1
已 star~
|
34
resolvewang OP @CrazyMelody 感谢捧场
|
35
tcpdump 2018-03-07 14:09:34 +08:00 1
没看懂怎么用? 怎么获取代理列表
|
36
resolvewang OP |
37
freedot 2018-03-07 20:56:01 +08:00 via iPhone
可以用来刷点击,又一黑产工具😂
|
38
resolvewang OP @freedot #37 我们做技术的还是得用道德来约束自己
|
39
liuxu 2018-03-08 19:55:49 +08:00
感谢楼主啊
|
40
resolvewang OP @liuxu #39 用了吗?效果咋样
|
41
liuxu 2018-03-08 20:01:10 +08:00
@resolvewang 还没用,先收藏明天试试看
|
42
resolvewang OP @liuxu #41 好的,欢迎反馈意见
|
43
BadReese 2018-03-09 19:10:44 +08:00
@resolvewang 用 docker 方式部署在 VPS 上,顺便修改了 setting 里的密码。本地连接的时候发现密码修改没有生效,用默认的 123456 可以连接上。这个是怎么回事呢?
另外,获取可用代理列表一直是空的,除了按照 WIKI 里的 docker-compose up 之外,还需要执行其他操作么? |
44
resolvewang OP @BadReese #43 github 上已经回复了。还望耐心阅读开发者文档
|
45
BadReese 2018-03-09 19:38:25 +08:00
@resolvewang 好的,谢谢你,这是个很棒的库
|
46
resolvewang OP @BadReese #45 客气。好用给个 star 或者宣传一下就好了
|
47
Soar360 2018-03-10 15:01:50 +08:00 via iPhone
每到这个时候 我就会来搭一波车
https://proxy.coderbusy.com |
48
Soar360 2018-03-10 15:15:27 +08:00 via iPhone
看到了 确实用到了我站的数据源 。。恭喜 你被投毒了……
|
49
resolvewang OP @Soar360 #48 关系不大,就算 coderbusy 数据源全有问题,其它也够用了
|
50
resolvewang OP @Soar360 #47 数据源墙内墙外都有很多,只不过需要体力和一些方法去搜集而已
|
51
gamecreating 2018-03-10 17:00:38 +08:00
这个必须赞一个
|
52
resolvewang OP @gamecreating 感谢支持
|
53
xiaodaoi 2018-03-12 09:33:15 +08:00 via iPhone
好东西
|
54
resolvewang OP @xiaodaoi #53 那快用用吧,期待宝贵的用户反馈
|
55
jitongxi 2018-03-13 13:26:03 +08:00 1
。。。。自己用用就行了, 直接开放出来,最后又要被老外骂作蝗虫了
|
56
resolvewang OP @jitongxi #55 感谢提醒。老外也有用的。。。当初开源的一个原因是感觉这种验证和筛选策略很有意思,所以就 public 了
|
57
seancheer 2018-03-13 14:13:34 +08:00 1
@jitongxi 这么说就有些过分了,楼主开源这些东西是为了技术之间相互分享,相互学习。。什么叫害怕老外骂蝗虫?如果这是违法违反社区条例的,直接举报就行,搞的好像老外就很高尚,没有爬虫似得
|
59
Betsy 2018-03-16 00:21:09 +08:00
|
60
Betsy 2018-03-16 00:22:15 +08:00
@resolvewang 如上图所示,所以是哪里错了吗?
|
61
resolvewang OP @Betsy #60 master 分支更新了一些代码,不向后兼容,目前文档由于精力原因还没更新,你可以下载 release 当中的 0.1 版本进行测试 2.你可以使用 redisdesktopmanager 来查看已抓取到的代理,肯定是没问题的
|
62
resolvewang OP https://github.com/SpiderClub/haipproxy/releases
这里下载 同时也要注意 IP 池有个预热的过程,大概在半小时到一小时之间,因为刚启动是不可能马上就有已校验的代理 IP 的 |
63
EricInBj 2018-03-16 09:42:14 +08:00 1
赞赞,暂时用不着,先收着
|
64
resolvewang OP @EricInBj #63 谢谢支持
|
65
salamanderMH 2018-03-26 18:01:46 +08:00
好东西,就是有点担心,用的人多了,代理池取到 ip 的概率会受影响吧
|
66
resolvewang OP @salamanderMH #65 嗯,是的,我开源它的主要目的在于分享这种校验和筛选 IP 的策略,虽然现在代理源还算多,但是可能也经不住成千上万的用户同时使用,特别是抓取网站大都相同的情况。正是考虑到你说的这种情况,所以写了几个文档,用以让用户了解所有组件的作用,怎么进行代理源扩展和定制校验器。这样大家可以接入一些项目没包括的代理源,甚至付费代理源。效果肯定是能通过项目的策略来保证的
|
67
iamnoten 2018-03-27 14:32:13 +08:00
@resolvewang 不好意思,打扰了,我在虚拟机上搭建环境,但是 sudo docker pull scrapinghub/splash, 总是报错 error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/39/3926e5aac017cdd47961dccb8dcb83fc1789ec1ccfefcaa4f03f81aa4c10a3c8/data?Expires=1522175127&Signature=UfxYM9jhI-tqCgvfqfbg8mCpDQErJhxSawpQnX6QWLCUFZrq5xOKHOUdSNC19HnqnjhMi7e7GeNq1tfuxjn7HNLNDYnuDduaF9mG4uwJvbzu9b9~~DOnoWUML207DIS54tV4JCI~ix0PZjuTEtvk1efh3BA-U-Onl0UObJ8ggZQ_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: net/http: TLS handshake timeout
不知道你有没有遇到过这个问题? 在网上搜了很多,有说是虚拟机的问题,有说是墙的问题,试了很多办法包括调整 mtu,设置代理,都没有成功。 谢谢 |
68
resolvewang OP @iamnoten #67 TLS 这个感觉是网络问题啊,握手失败了。你能用 docker pull 拉取其它镜像吗?如果不行的话,可以搜索一下 docker 镜像加速,比如设置阿里云的 docker 镜像源等
你也可以尝试另外一台虚拟机或者宿主机上试试啊,我没遇到过这个问题,无法给出建设性的解答,不好意思哈 |
69
resolvewang OP @iamnoten #67 此外,你也可以将它的镜像下载下来,在本机再打包之类的
|
70
chi1st 2018-03-31 01:05:22 +08:00
谢谢楼主,试用了一下很强大,要是能有直接与 scrapy 对接的接口就好了(
|
71
resolvewang OP @chi1st #70 感谢支持。可以直接调用 ProxyFetcher,为 scrapy 写一个中间件就行了。
目前在找工作,精力不是很够。预计下一次大的更新会在几个月之后,可能会扩展一些客户端、添加对一些爬虫框架的原生支持和优化筛选和调度算法 |
72
382601486 2018-04-19 22:23:48 +08:00
@resolvewang 环境安装老是失败,有没有一键安装什么的?谢谢
|
73
Berny 2019-02-15 14:17:25 +08:00
赞,可以支持自己设定 IP 池么?
|
74
Sum0l 2019-06-04 13:56:15 +08:00
感谢分享,已经试用了,但目前很多源已经失效,可用的 ip 不多。考虑加入付费啦
|
75
resolvewang OP @Sum0l 公开源很久没维护了,因此源都失效了,加入付费源效果就很明显了
|
76
Nasser 2020-02-10 00:00:38 +08:00
有国外的源吗?
|