新年上班一个月了,除了总结过去一年的得失,就是做一些小小的爬虫,还以为第二个月又要这样平平淡淡的过去时,老大突然召集大家开会,心里有点小小的激动,看来是有大项目啊。果不其然,开年第一站,十万火急大项目,为客户做业务做数据支撑,要求达到日均1000W级别的数据采集量,让我做一下技术规划,吹响冲锋号。
马不停蹄,编写了爬虫框架进行了数据采集测试,发现每次只能采集几百条数据,立马就挂了。检查了UA、Cookie、JS执行后再试试,效果好一阵后马上又下降了,经过反复研究反爬策略,能优化的都优化的差不多了,万事俱备,看来只差代理IP这个东风了。
代理IP哪里找,百度找一找,发现HTTP代理、爬虫代理、爬虫代理IP的产品一大堆,价格参差不齐,只能再动手找几家看起来还行的作对比测试,现将各种产品及测试方法整理发出来,给需要采集数据的朋友参考下:
一、超低收费代理(普通代理或开放代理)
完全免费的就不用测试了,基本上已经是万人骑,浪费时间,基础的连通性都有问题。其他低收费的比较便宜,1元几千ip随意用,来源就是对程序不断扫描出来的公开或半公开(未加密)的代理,网络稳定性差,延迟高,导致程序运行不稳定,要用这种代理,除了要做IP池管理,还要做代理IP失效实时检查,并且带宽极不稳定。找了几家测试,稳定性太差,连测试结果都做不出来,直接pass。
二、付费代理
付费代理产品也不少,各家都号称是私密家庭代理IP,日流水量几十万,都号称自营线路,关键哪里来这么多家庭IP?了解一番之后,总体来说就两大类产品形态:
(1)URL提取文本的代理(简称 API代理)
行话是API代理,通过URL定期请求(一般从1秒-60秒间隔都有),查询获取代理信息列表,一般格式是IP:PORT,有些还带用户名和密码,使用方法差不多。程序需要定期提取代理ip信息,并且做代理ip队列管理,检测ip连通性,同时做好ip有效时间管理(有些商家会给出代理IP时间,但是不太准确),数据采集线程运行的时候,定期从代理ip队列提取使用。这个产品使用起来稍微麻烦一点,需要做一个简单的ip池维护,当然如果要做策略比较方便管理。
(2)动态隧道代理(简称 爬虫代理)
这产品的别称更多,有爬虫代理、隧道代理、动态转发等等,和api代理的区别是不需要定期从URL接口获取代理信息,可以一次性从后台提取然后配置到代码使用,爬虫程序只与一台代理服务器连接,代理服务器自动进行代理ip切换,一般是按照每个http请求自动切换一个代理ip,有些产品能照session甚至自定义ip切换。动态隧道代理使用方便,理论上爬虫程序和代理服务器之间长链接不断开,其他的都交给代理服务器做好处理。
既然选择代理IP势在必行,那就选几家有代表性的产品做测试,选择最优秀的那家,商家有以下这些:
测评目标:
在同类产品中,根据不同商家产品的IP有效率、代理时延、稳定性、价格、使用安全性、调取频率等条件进行一一说明
IP有效率
可用率就是提取的这些代理中可以正常使用的比率。假如我们无法使用这个代理请求某个网站或者访问超时,那么就代表这个代理不可用,在这里我的测试样本数量为500个,即提取500 个代理,看看里面可用的比率有多少。
代理时延
代理IP的时延可以反映该IP的响应时间,即计算使用这个代理请求目标网站整个流程完成后总共需要耗费的时长。时间越短,证明代理的质量越好,这里提取指定数量代理数量,统计出有效的代理并计算响应时间的平均值。
代理稳定性
我们在进行代理调用过程中,相同的代理IP在他的存活周期内,我们希望是持续稳定可用的,不能当前调用响应很快,过一会再调用响应就很慢,尤其一些业务需要在短时间内就要完成整个爬虫流程的,这也势必会影响我们的爬虫效率。
价格
如果一家代理不论是代理质量还是稳定性都特别不错,如果价格在可以接受的范围内,这也是不错的;如果代理IP质量不好稳定性又不行,价格还比较高,那就不能接受了。
安全性
如果代理API不小心泄露出去了导致他人盗用,不仅会对我们的代理质量产生影响,另一方面也会产生安全隐患,对盗用代理开展的业务不能得到正常监管。
调取频率
部份代理产品在 API 调用提取代理时会限制调取频率,有的代理产品也会限制请求频率,这些限制也或多或少都会影响我们的爬虫效率,这部份条件我们也需要测试。
测试平台(阿里云主机)
测试链接
测试链接均为各商家提供的空闲链接,我理解为测试链接的使用效果会略好于正式开通的代理链接(商家给出的测试链接一般会是带宽比较富余的链接);访问目标网站选用百度搜索页面
超时设置
测试过程中不能避免代理请求超时的问题,所以我们需要设置一个超时时间,我们设置为10秒,使用代理请求百度,如果10秒还没有得到响应,就视该代理为无效。
测试数量
测试链接需要提取的代理数量,对于代理的响应时间测试,我们提取数量为500,即每个产品套餐获取500 个代理进行测试。
测试逻辑
1、主进程获取代理列表
2、多进程+Gevent对代理进行测试
3、主进程汇总统计结果
测试结果样例如下图:
样例说明:
总共提取500个代理信息进行测试,成功500个,故IP有效率为100%;
500个代理信息,总计237个不重复IP量,其中C段IP池128个,B段IP池38个
500个代理信息,最大时延5112ms,最小89ms,平均130ms
对于代理稳定性的测试,我们采取的测试方法是:反复提取相同的代理IP,每次等待10秒后再重复发起请求,持续60秒,统计最终的平均时延。如下图:
如红框内所示,相同的代理信息,第一次使用是160ms的时延,10s后再次提取使用则是505ms的时延。
测评结果:
说明:
1、稳定性测试实为在代理信息的存活周期内,每等待10秒后,用相同的代理信息去重复请求目标网站持续60秒,以检验代理IP的质量是否稳定持续可用,比率为1,说明前后时延相同,比率越大,说明后面请求的时延越大。
2、阿布云的隧道代理、讯代理的动态转发都是动态隧道代理,即代理信息为隧道IP+端口号,不同的端口对应不同的外网IP,自动实现代理IP切换,因此代理时延小而且稳定,缺点就是IP有效时间较短,不太方便做管理策略。
3、站大爷的一手私密代理业务独享,需要对方备注业务网站;独享IP池是一个人独享整个IP池,因此具体业务采集的效果应该会更好。
4、亿牛云、蘑菇代理连续测试不稳定,出现延迟较高的情况。
5、蘑菇代理客服经常联系不上,回复很慢,估计是一个人做的。
6、芝麻HTTP代理所有套餐都是限量套餐,单个订单每天使用代理量最大700个,长期采集成本较高
IP可用率
代理时延及稳定性
套餐价格
按照包月的价格,我们统一对比如下
安全性
对于安全性,目前主流三种调用方式:
1、 绑定IP白名单才能使用代理:
亿牛云动态短效、亿牛云优质代理、亿牛云动态混拨、讯代理优质代理、讯代理混拨代理、讯代理独享代理,站大爷所有产品、太阳 HTTP 代理、蘑菇API私密代理、快代理
2、 需要提供账密验证才能使用代理:
阿布云所有代理、亿牛云爬虫代理标准版、讯代理动态转发、蚂蚁代理高质量动态代理、蘑菇代理隧道转发代理、站大爷所有产品
3、 同时支持IP白名单和账密验证模式,可自助切换成其中任意一种:
站大爷所有产品
从统计看,各商家代理产品都支持至少其中一种使用方式。值得注意的是,站大爷代理产品是既支持白名单又支持账密授权,客户可自助切换授权模式,非常强大,在实际使用中,可根据需要选择一种即可,非常的人性化。
蘑菇代理添加白名单限制后无效,客服说是为防止用户忘记添加白名单后导致API链接挂起,所以部份服务器未添加白名单功能。
另外在测试中发现,通过调用接口自动修改白名单属于比较实用的功能,目前站大爷短效优质代理、讯代理的支持接口最完善。
调用接口频率
备注:为了保证设备的正常负载及更好的代理质量,商家普遍都限制了提取频率,其中站大爷一手私密代理没有提取间隔。
综合评估
根据各个代理商家产品的IP可用率、代理时长、稳定性、价格、安全性等后,最后统计如下:
根据统计结果:
API代理比较推荐的有:站大爷、讯代理、芝麻代理
动态隧道代理(又称为爬虫代理/隧道代理/动态转发/动态版)比较推荐的有:讯代理,阿布云。
此测评结果仅反映各代理厂商当前的产品状态,随着互联网环境的变化和用户的不断应用深入,各厂商的产品丰富度、产品性能、产品价格都会有所调整。仅以此希望能够帮助大家在选购代理时有所建议。