上周的公众号文章提到了Bright Data提供的代理服务。没想到他们的运营同学竟然找上了门,问我能不能帮他们做一个评测。
我之前使用Bright Data的代理,是因为突然有一天我的HuggingFace爬虫挂了。比较奇怪的是,这个爬虫在我电脑上始终正常运行,但一放到服务器上就请求失败。联想到HuggingFace被封了,而这个爬虫之前一直使用的国内代理供应商,那么原因就很明显了。因为我的电脑是24小时挂着梯子的,所以能够正常访问HuggineFace,但爬虫部署到服务器上面以后,他会自动使用配置好的国内代理。由于国内代理也受到GFW的影响,因此也会出问题。
首先看一下Bright Data他们代理的基本功能,基于数据中心的隧道代理和基于住宅IP的隧道代理还有基于Sim卡的隧道代理。海外代理都是按流量收费的,确实比较贵,如下图所示。数据中心的代理IP,每GB流量收费0.1美元。住宅IP的代理IP,每GB流量收费15美元。
以数据中心代理为例,我开通的是隧道代理,只需要设置一个固定的地址,爬虫每次请求自动都会使用不同的IP。如下图所示:
当我们不使用代理时,访问HuggingFace会出现一直没有响应最后超时的情况。当我们在海外服务器上面使用代理访问HuggingFace时,一切正常。
作为海外代理,Bright Data的隧道IP在海外服务器上面访问HuggingFace是正常的。如下图所示:
需要注意的是,这种爬虫代理不是梯子。直接使用它,在国内是无法访问墙外网站的。GFW有一万种方法识别它。所以我们只有使用海外的服务器来运行。这不是Bright Data的问题,所有爬虫代理都是这样的。
我们今天测试一下代理的稳定性。在测试其他很多代理供应商时,请求量多了经常会出现Caused by ProxyError('Cannot connect to proxy'...
这种报错,还需要我们自己来写重试逻辑。而Bright Data的隧道代理把所有重试都帮我们做了。我们分别在我家的宽带和我的Azure香港服务器上面,测试数据中心IP和住宅IP的代理可用情况。
测试代码如下:
1 | import requests |
数据中心代理,在我家的网络进行测试:
测试下来,100次请求,有7次请求超过5秒报错。剩下93次在5秒内完成。这93次成功请求的信息如下:
国家分布如下图所示:
说明Bright Data的代理确实在全球分布的。
当我把timeout设置为10秒时,只有2次请求超时。
当我把timeout设置成20秒时,所有请求全部成功。经过多次测试,所有请求最终都能在20秒内完成,不会出现除了超时外的其他报错。说明他们内部做了异常的自动重试机制,能确保你的请求始终能够成功。
接下来,我在Azure香港服务器上面测试,这次稳定性高了不少,100次请求只有1次超过了5秒。如下图所示:
把timeout设置成10秒以后,所有请求全部成功。
接下来,测试住宅IP的使用请求。更换了帐号密码以后,在我家的网络测试效果如下:
有88次请求能够在5秒内完成。12次请求超过5秒报错。注意图中的红色警报并不是错误。是因为家庭代理需要安装Bright Data的证书。如果不使用证书,就需要在Requests的请求中加上verify=False
。于是Request就会有这个警告。
在Azure香港服务区测试住宅IP的效果如下图所示,所有请求全部能够在5秒内完成。
经过这次测试,可以看到Bright Data的稳定性还是不错的。除了代理外,Bright Data还提供爬虫浏览器和验证码破解接口。大家有空可以试一试。扫码注册可以获得免费试用。