最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python爬虫:十大付费代理详细对比

    正文概述    2020-06-29   388

    Python爬虫:十大付费代理详细对比

    前言

    随着大数据时代的到来,爬虫已经成了获取数据的必不可少的方式,做过爬虫的想必都深有体会,爬取的时候莫名其妙 IP 就被网站封掉了,毕竟各大网站也不想自己的数据被轻易地爬走。

    对于爬虫来说,为了解决封禁 IP 的问题,一个有效的方式就是使用代理,使用代理之后可以让爬虫伪装自己的真实 IP,如果使用大量的随机的代理进行爬取,那么网站就不知道是我们的爬虫一直在爬取了,这样就有效地解决了反爬的问题。

    那么问题来了,使用什么代理好呢?这里指的代理一般是 HTTP 代理,主要用于数据爬取。现在打开搜索引擎一搜 HTTP 代理,免费的、付费的太多太多品牌,我们该如何选择呢?看完这一篇文章,想必你心中就有了答案。

    对于免费代理,其实想都不用想了,可用率能超过 10% 就已经是谢天谢地了。真正靠谱的代理还是需要花钱买的,那这么多家到底哪家可用率高?哪家响应速度快?哪家比较稳定?哪家性价比比较高?为此,我对市面上比较流行的多家付费代理针对可用率、爬取速度、爬取稳定性、价格、安全性、请求限制等做了详细的评测,让我们来一起看一下到底哪家更强!

    测评范围

    免费代理

    在这里我主要测试的是付费代理,免费代理可用率太低,几乎不会超过 10%,但为了作为对比,我选取了西刺免费代理进行了测试。

    付费代理

    付费代理我选取了站大爷、芝麻 HTTP 代理、太阳 HTTP 代理、讯代理、快代理、蘑菇代理、阿布云代理、全网代理、云代理、大象代理、多贝云进行了对比评测,购买了他们的各个不同级别的套餐使用同样的网络环境进行了测评,详情如下:

    Python爬虫:十大付费代理详细对比

    注:其中蘑菇代理、太阳 HTTP 代理、芝麻 HTTP 代理的默认版表示此网站只有这一种代理,不同套餐仅是时长区别,代理质量没有差别。

    嗯,我把上面的套餐全部买了一遍,以供下面的评测使用。

    测评目标

    本次测评主要分析代理的可用率、响应速度、稳定性、价格、安全性、使用频率等因素,下面我们来一一进行说明。

    可用率

    可用率就是提取的这些代理中可以正常使用的比率。假如我们无法使用这个代理请求某个网站或者访问超时,那么就代表这个代理不可用,在这里我的测试样本大小为 500,即提取 500 个代理,看看里面可用的比率多少。

    响应速度

    响应速度可以用耗费时间来衡量,即计算使用这个代理请求网站一直到得到响应所耗费的时间。时间越短,证明代理的响应速度越快,这里同样是 500 个样本,计算时只对正常可用的代理做统计,计算耗费时间的平均值。

    稳定性

    由于爬虫时我们需要使用大量代理,如果一个代理响应速度特别快,很快就能得到响应,而下一次请求使用的代理响应速度特别慢,等了三十秒才得到响应,那势必会影响爬取效率,所以我们需要看下商家提供的这些代理稳定性怎样,总不能这一个特别快,下一个又慢的不行。所以这里我们需要统计一下耗费时间的方差,方差越大,证明稳定性越差。

    价格

    价格,这个当然是需要考虑的内容,如果一个代理不论是响应速度还是稳定性都特别不错,但是价格非常非常高,这也是不可接受的。

    安全性

    这的确也是需要考虑的因素,比如一旦不小心把代理提取的 API 泄露出去了,别人就肆意使用我们的 API 提取代理使用,而一直耗费的是我们的套餐。另外一旦别人通过某些手段获取了我们的代理列表,而这些代理是没有安全验证的,这也会导致别人偷偷使用我们的代理。在生产环境上,这方面尤其需要注意。

    使用频率

    有些代理套餐在 API 调用提取代理时有频率限制,有的代理套餐则会限制请求频率,这些因素都会或多或少影响爬虫的效率,这部分因素我们也需要考虑进来。

    测评标准

    要做标准的测评,那就必须在标准的测评环境下进行,且尽可能排除一些杂项的干扰,如网络波动、传输延迟等一系列的影响。

    主机选取

    由于我的个人笔记本是使用 WiFi 上网的,所以可能会有网络波动,而且实际带宽其实并不太好把控,因此它并不适合来做标准评测使用。评测需要在一个网络稳定的条件下进行,而且多个代理的评测环境必须相同,在此我选择了一台腾讯云主机作为测试,主机配置如下:

    Python爬虫:十大付费代理详细对比

    这样我们就可以保证一个标准统一的测试环境了。

    现取现测

    另外在评测时还需要遵循一个原则,那就是现取现测,即取一个测一个。现在很多付费代理网站都提供了 API 接口,我们可以一次性提取多个代理,但是这样会导致一个问题,每个代理在提取出来的时候,商家是会尽量保证它的可用性的,但过一段时间,这个代理可能就不好用了,所以假如我们一次性提取出来了 100 个代理,但是这 100 个代理并没有同时参与测试,后面的代理就会经历一个的等待期,过一段时间再测这些代理的话,肯定会影响后半部分代理的有效性,所以这里我们将提取的数量统一设置成 1,即请求一次接口获取一个代理,然后立即进行测试,这样可以保证测试的公平性,排除了不同代理有效期的干扰。

    时间计算

    由于我们有一项是测试代理的响应速度,所以我们需要计算程序请求之前和得到响应之后的时间差,这里我们使用的测试 Python 库是 requests,所以我们就计算发起请求和得到响应之间的时间差即可,时间计算方法如下所示:

    start_time = time.time()
    requests.get(test_url, timeout=timeout, proxies=proxies)
    end_time = time.time()
    used_time = end_time - start_time

    这里 used_time 就是使用代理请求的耗时,这样测试的就仅仅是发起请求到得到响应的时间。

    测试链接

    测试时我们也需要使用一个稳定的且没有反爬虫的链接,这样可以排除服务器的干扰,这里我们使用百度来作为测试目标。

    超时限制

    在测试时免不了的会遇到代理请求超时的问题,所以这里我们也需要统一一个超时时间,这里设置为 60 秒,如果使用代理请求百度,60 秒还没有得到响应,那就视为该代理无效。

    测试数量

    要做测评,那么样本不能太小,如只有十几次测试是不能轻易下结论的,这里我选取了一个适中的测评数量 500,即每个套餐获取 500 个代理进行测试。

    测评过程

    嗯,测评过程这边主要说一下测评的代码逻辑,首先测的时候是取一个测一个的,所以这里定义了一个 test_proxy() 方法:

    test_url = 'https://www.baidu.com/'
    timeout = 60
    def test_proxy(proxy):
        try:
            proxies = {
                'https': 'http://' + proxy
            }
            start_time = time.time()
            requests.get(test_url, timeout=timeout, proxies=proxies)
            end_time = time.time()
            used_time = end_time - start_time
            print('Proxy Valid', 'Used Time:', used_time)
            return True, used_time
        except (ProxyError, ConnectTimeout, SSLError, ReadTimeout, ConnectionError):
            print('Proxy Invalid:', proxy)
            return False, None

    这里需要传入一个参数 proxy,代表一个代理,即 IP 加端口组成的代理,然后这里使用了 requests 的 proxies 参数传递给 get() 方法。对于代理无效的检测,这里判断了 ProxyError, ConnectTimeout, SSLError, ReadTimeout, ConnectionError 这几种异常,如果发生了这些异常统统视为代理无效,返回错误。如果在 timeout 60 秒内得到了响应,那么就计算其耗费时间并返回。

    在主程序里,就是获取 API 然后统计结果了,代码如下:

    max = 500
    def main():
        print('Testing')
        used_time_list = []
        valid_count = 0
        total_count = 0
        while True:
            flag, result = get_page(api_url)
            if flag:
                proxy = result.strip()
                if is_proxy(proxy):
                    total_count += 1
                    print('Testing proxy', proxy)
                    test_flag, test_result = test_proxy(proxy=proxy)
                    if test_flag:
                        valid_count += 1
                        used_time_list.append(test_result)
                    stats_result(used_time_list, valid_count, total_count)
            time.sleep(wait)
            if total_count == max:
                break

    这里加了一些判断,如 is_proxy() 方法判断了获取的是不是符合有效的代理规则,即判断它是不是 IP 加端口的形式,这样可以排除 API 返回一些错误信息的干扰。另外这里设置了 total_count 和 valid_count 变量,只有符合代理规则的代理参与了测试,这样才算一次有效测试,total_count 加一,如果测试可用,那么 valid_count 加一并记录耗费时间。最后调用了 stats_results 方法进行了统计:

    import numpy as np
    def stats_result(used_time_list, valid_count, total_count):
        if not used_time_list or not total_count:
            return
        used_time_array = np.asarray(used_time_list, np.float32)
        print('Total Count:', total_count,
              'Valid Count:', valid_count,
              'Valid Percent: %.2f%%' % (valid_count * 100.0 / total_count),
              'Used Time Mean:', used_time_array.mean(),
              'Used Time Var', used_time_array.var())

    这里使用了 Numpy 来统计了耗费时间的均值和方差,分别反映代理的响应速度和稳定性。

    嗯,就这样,利用这个方法我对各个不同的代理套餐逐一进行了测试。

    测评结果

    经过测评,初步得到如下统计结果:

    Python爬虫:十大付费代理详细对比

    注:

    ·表中的响应时间方差越大,代表稳定性越低。

    ·阿布云代理经典版方差较小是因为它是长时间锁定了同一个 IP,因此极其稳定,但每秒最大请求默认 5 次。

    ·多贝云代理套餐一二方差较小是因为它是长时间锁定了同一个 IP,因此极其稳定,但每秒最大请求默认 20 次。

    测评分析

    下面我们将从各个方面分析一下各个套餐的优劣。

    可用率

    通过可用率统计,我们可以发现可用率较高的代理套餐有:

    Python爬虫:十大付费代理详细对比

    响应速度

    通过平均响应速度判别,我们可以发现响应速度较快的代理套餐有:

    Python爬虫:十大付费代理详细对比

    稳定性

    通过平均响应速度方差分析,我们可以发现稳定性较高的代理套餐有:

    Python爬虫:十大付费代理详细对比

    价格

    我们可以先看一下各个套餐的价格:

    Python爬虫:十大付费代理详细对比

    Python爬虫:十大付费代理详细对比

    按照包月的价格,我们可以统一对比如下:

    Python爬虫:十大付费代理详细对比

    安全性

    对于安全性,此处主要考虑提取 API 是否有访问验证,使用代理时是否有访问验证,即可以通过设置白名单来控制哪些可以使用。

    其中只有芝麻 HTTP 代理、太阳 HTTP 代理默认使用了白名单限制,即只有将使用 IP 添加到白名单才可以使用,可以有效控制使用权限。

    另外阿布云代理提供了隧道代理验证,只有成功配置了用户名和密码才可以正常使用。

    所以在此归纳如下:

    Python爬虫:十大付费代理详细对比

    调取频率

    不同的接口具有不同的 API 调用频率限制,归纳如下:

    Python爬虫:十大付费代理详细对比

    在此可以简单总结如下:

    Python爬虫:十大付费代理详细对比

    特色功能

    除了常规的测试之外,我这边还选取了某些套餐的与众不同之处进行说明,这些特点有的算是缺点,有的算是优点,现列举如下:

    Python爬虫:十大付费代理详细对比

    测评综合

    分项了解了各个代理套餐的可用率、响应速度、稳定性、性价比、安全性等内容之后,最后做一下总结:

    Python爬虫:十大付费代理详细对比

    Python爬虫:十大付费代理详细对比

    所以在综合来看比较推荐的有:芝麻代理、讯代理、阿布云、多贝云代理,详细的对比结果可以参照表格。

    以上便是各家代理的详细对比测评情况,希望此文能够在大家选购代理的时候有所帮助。

    众多python培训视频,尽在python学习网,欢迎在线学习!

    本文转自:https://cuiqingcai.com/5094.html


    起源地下载网 » Python爬虫:十大付费代理详细对比

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元