是这样的,去年写爬虫,被 IP 问题困扰,于是就想写个程序来自动处理代理 IP 的问题。
后来我就撸了个隧道代理程序,这个程序自动从某些提供代理的网页上获取可用代理,验证可用后放入代理池。
昨天我又重新改造了下,实现了简单的插件机制,试了下其实效果还可以的。不过质量还是受限于代理池中代理的质量。
发上来一方面是想求几个 star。 另一方面是想看看别人的想法,有没有其他质量更高的获取代理的方案。
https://github.com/daoye/goudan
https://github.com/daoye/goudan_plugins
1
lhx2008 2020-02-27 09:55:44 +08:00 via Android
令人迷惑的轮子,玩玩还可以。用代理池最基本的需求就是并发爬取,被网站拉黑之后及时更换。
|
2
arcaitan 2020-02-27 10:07:09 +08:00
不怕被抓?
|
3
itskingname 2020-02-27 10:10:56 +08:00
实际上就是阿布云的做法。
|
5
nozer OP |
6
zhuyuefeng 2020-02-27 10:28:58 +08:00 via iPhone
考虑提供一个代理 ip 获取的接口,然后爬虫接入,这些并发爬取效率会好一些吗🤔
|
7
rekulas 2020-02-27 10:38:13 +08:00 1
我之前给团队项目也写过一个代理池,但不是通俗意义上的隧道代理,而是 web 代理 ,支持加密传输,请求的时候同时开 N 个并发随机获取 ip 一起请求,谁先拿到数据就返回谁,然后可以自定义成功标识符,例如可以定义包含"code":1 才为成功,如果不包含则请求的并发会认为请求失败重试,这样使用起来效果很好,已顺利跑了半年多
|
8
nozer OP @zhuyuefeng 提供获取 IP 的接口当然是可以的。只是我的本意是封装 IP 切换的过程,让爬虫从切换 IP 的过程中解放出来。如果让爬虫通过接口获取 ip 列表,然后自行切换的话,就感觉有些麻烦了。
|
9
nozer OP @rekulas 卧槽,大哥你这个思路靠谱,这样子可以增加成功率。 我现在困扰的问题就是代理的质量参差不齐,导致请求失败的概率高居不下。如果加上你这种方案的话,可以极大提高请求的成功率。
|
10
rekulas 2020-02-27 10:51:48 +08:00
@nozer 那你可以试试,我用这种方案基本不会遇到失败的情况,当然代理池后台也要加专门线程校验,剔除垃圾代理,按响应时间做排行
|
12
zoikhemlab 2020-02-27 12:18:57 +08:00
代码都不带换行啊?
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those! |
13
qile1 2020-02-27 14:21:52 +08:00 via Android
我想问下代理执行时间是怎么结算的,我想到的就是开始执行设置时间变量,结束设置结束时间变量,两个相减就出来时间了
|
15
locoz 2020-02-27 23:53:59 +08:00
说实在的,免费代理的质量真不行...能用免费代理解决的一般也可以用云服务器按量付费开一批解决😂
|
16
yanheqi 2020-02-28 01:18:36 +08:00
请问这是 抓取 什么内容的?
|
18
nozer OP |
19
rekulas 2020-02-28 11:34:04 +08:00
@locoz 很多情形并不是开几台 vps 就能解决的,例如我有个业务每天需要 1w+ip,你需要开多少台才能满足需求?就算采用性价比最高的共享 IP 方案,每个 ip 每月成本也在 1 元左右,1w 个就是 1 万元,而且还无法保证每天的 ip 是不同的,而采用代理池方案,只需要微量成本(不到 100 元 /月),我就可以每天获得 1w-10w 的有效 ip 请求,至于响应时间平均大概 2s 左右,但我通过提高并发让请求效率得到保证(目前最高大概只有 20/s 左右因为足够了)
|
20
tunecccyyy 2020-03-02 01:53:14 +08:00 via iPhone
获取代理 高质量?很简单啊 自己扫描代理 IP 端口 然后自己自己写一个检测工具 成本也就是 100 来块钱
|
21
nozer OP @tunecccyyy 这个我也想过,但是目前没有太多精力,现在先解决有无的问题。 下一步会考虑这方面。
|
22
liangmishi 2020-04-04 14:51:51 +08:00
老哥,很久没更新了噢
|