Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12209
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2022-12-14 16:49
文章分类

全部博文(35)

文章存档

2024年(1)

2023年(28)

2022年(6)

我的朋友

分类: Python/Ruby

2023-09-19 16:38:32

当我们选择HTTP代理的时候,经常看到人说,

“芝麻代理不错,就是贵了点。”

“芝麻代理的还可以,如果预算够的话”

……

但如果我们在互动社区,也能常常看到又朋友说不行的。

img

img

吐槽的时长跨度好几年的,看到这我生出一种疑问,目前市面上很多HTTP代理都有提供试用,购买之前大部分人都会使用,如果测试结果不行,为什么会购买?

秉着对真相的探究,我自费购买芝麻网络HTTP代理进行测试供大家参考。那一起看看测试结果吧!


1.测试HTTP代理的注意事项

在测试之前,我们需要注意的是:

  • 测试环境应该符合实际应用环境

  • 测试频率要符合我们日常做数据采集的使用习惯

  • 测试IP的节点范围要广

  • 不同应用场景下的不同需求,需要选择适合的测试方法和指标


2.HTTP代理测试项目

本次主要测试这几个方面:稳定性、匿名程度、响应速度、IP池可用率以及带宽等问题,通常我们会结合多种测试方法和工具,以此来全面评估这家HTTP代理的质量,衡量是否值得购买。


  • 响应速度

通过测量HTTP代理与目标服务器之间的响应时间,评估HTTP代理的连接速度。在测试的时候,可以统计一下所有的时间,然后测算平均响应时间。如果这个HTTP代理能够更快地传输请求和接收响应,证明这个HTTP代理速度越快。

  • 可用率

一个可用性高的HTTP代理意味着它在大部分时间内都能正常工作,并且能够顺利传递请求和响应。我这设置成30秒,意思就是使用这个HTTP代理访问网站超过30秒还是得不到响应,就默认为这个HTTP代理无效了。

假设我们一次性提取1000个HTTP代理,如果这1000个HTTP代理在我们使用的时候,有50个超过30秒得到不到响应/无法传递请求,则认为这个可用率为(1000-50)?1000=95%。

  • 稳定性

在数据抓取的时候,我们会用到大量的HTTP代理,一个稳定的HTTP代理能够长时间保持连接,并且不会频繁断开或出现连接错误,才能有效助力我们数据抓取。

  • 带宽

对于大部分的用户来说,HTTP代理的带宽高低也很影响使用体验,而影响HTTP代理的带宽高低的因素蛮多的,如:HTTP代理的使用人数、厂商对HTTP代理带宽的限制、代理服务器的性能等。


ps:大家如果想要自己测试,可以根据实际需求和应用场景稍作调整。


3.测评环境

良好的测试环境,需要在稳定的网络环境下测试,以及,至少跑得动的设备,手动加狗头。

这次测评,我是使用 python 30个线程池进行多线程测试,其中电脑配置如下:

img


4.测试链接

是我们熟悉的,度娘


5.测试数量

选择提取1000个HTTP代理进行测试。

img



6.测试过程

这次,我把响应速度和可用率结合在一起,测试芝麻代理对百度站点的连通性和请求延迟。

  • 有效性+延迟代码如下

    点击(此处)折叠或打开

    1. import logging
    2. import time
    3. from concurrent.futures import thread
    4. import requests
    5. thread_pool = thread.ThreadPoolExecutor(max_workers=30)
    6. session = requests.session()


    7. # 测试代理ip有效性核心代码
    8. def test_proxy_usability(proxy_ip,thread_id):
    9.     target_url = ''
    10.     headers = {
    11.         "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    12.     }
    13.     proxies = {
    14.         'http': f'http://{proxy_ip}',
    15.         'https': f'http://{proxy_ip}'
    16.     }
    17.     try:
    18.         status = "失败"
    19.         resp = session.get(target_url,headers=headers, proxies=proxies, timeout=5)
    20.         res = {
    21.             "thread_id":thread_id,
    22.             "ip":ip.replace('\n',''),
    23.             "target_url":target_url,
    24.             "error_info":"",
    25.             "resp_code":resp.status_code,
    26.             "ms":resp.elapsed.total_seconds() * 1000,
    27.         }
    28.         if resp.status_code == 200:
    29.             status = "成功"
    30.         else:
    31.             pass
    32.         res["status"] = status
    33.         print(res)
    34.     except Exception as e:
    35.         failed_reason = "访问失败:%s" % (e)
    36.         res = {
    37.             "thread_id":thread_id,
    38.             "ip":ip.replace('\n',''),
    39.             "target_url":target_url,
    40.             "error_info":failed_reason,
    41.             "resp_code":"",
    42.             "ms":"",
    43.             "status":status
    44.         }
    45.         print(res)

    46. if __name__ == '__main__':
    47.     ips = [
    48.         "125.78.226.82:37175",
    49.         "123.189.96.163:12565",
    50.         "222.90.149.59:46327",
    51.         "59.58.209.253:60819",
    52.         "122.232.195.108:11051",
    53.         "182.34.34.209:51063",
    54.         "115.213.205.160:40613",
    55.         "117.93.187.241:39562",
    56.         "60.19.171.147:10698",
    57.         "182.204.178.41:30182",
    58.         "119.41.193.136:14093",
    59.         "123.189.102.203:12565",
    60.         "49.64.209.99:58886",
    61.         "121.227.34.220:52161",
    62.     ]
    63.     for i,ip in enumerate(ips):
    64.         thread_pool.submit(test_proxy_usability,ip,i)
    65.     time.sleep(30)

测试运行如下:

img

img



  • 稳定性:利用平均响应速度方差分析,我们可以发现稳定性如何较高。

计算公式如下:

S^2=1/n[(x1-x)^2+(x2-x)^2+……+(xn-x)^2]


简单来说,excel的里面的方差计算公式VAR()可以帮助我们秒计算。善用excel~


  • 带宽测试代码如下


点击(此处)折叠或打开

  1. import logging
  2. import time
  3. from concurrent.futures import thread
  4. import requests
  5. thread_pool = thread.ThreadPoolExecutor(max_workers=30)
  6. session = requests.session()


  7. #测试带宽核心代码
  8. def test_proxy_bandwidth(auth_key,ip,proxies,thread_id,source_url):
  9.     res = {
  10.         "thread_id":thread_id,
  11.         "ip":ip.replace('\n',''),
  12.         "target_url":source_url,
  13.     }
  14.     file_size = 10 * 1024 * 1024 # 10 MB
  15.     start_time = time.time()
  16.     downloaded_size = 0
  17.     try:
  18.         response = requests.get(source_url, proxies=proxies, stream=True, timeout=30)
  19.         dirname = f"./{auth_key}_{ip}"
  20.         with open(f'{dirname}', 'wb') as f:
  21.             for chunk in response.iter_content(chunk_size=8192):
  22.                 f.write(chunk)
  23.                 downloaded_size += len(chunk)
  24.                 f.flush()
  25.                 if downloaded_size >= file_size:
  26.                     break

  27.         elapsed_time = time.time() - start_time
  28.         download_speed = downloaded_size / elapsed_time / 1024 # KB/s
  29.         update_res = {
  30.             "down_status":1,
  31.             "download_s":elapsed_time,
  32.             "download_speed":int(download_speed),
  33.             "download_size":downloaded_size,
  34.         }
  35.         res.update(update_res)
  36.         print(res)

  37.     except Exception as e:
  38.         elapsed_time = time.time() - start_time
  39.         download_speed = downloaded_size / elapsed_time / 1024 # MB/s
  40.         update_res = {
  41.             "down_status":0,
  42.             "download_s":elapsed_time,
  43.             "download_speed":int(download_speed),
  44.             "download_size":downloaded_size,
  45.         }
  46.         res.update(update_res)
  47.         print(res)

测试运行如下:

img

img

{BANNED}最佳后根据我们的平均下载速度,来计算带宽。

带宽的计算公式:

带宽=平均下载速度10248/1000/1000


7.芝麻代理测试结果

img


8.特点

  • 老牌,已经运营8年了,也做了很多家平台,如太阳代理,e变代理,智游代理,黑洞HTTP,智连代理,极光代理都是他们家的

  • 芝麻代理的贵似乎是业内众所周知的特点之一,等一个有缘人打下来~

  • 提取不扣费使用才扣费


9.总结

img

来总结一下:

综合测试数据来看,芝麻代理的成功率还是可以的,但短板也非常明显,带宽不够高,稳定性还行,但是已经在3这个数值了。

值得注意的是,芝麻代理HTTP代理使用时间越长越贵,这使用时间成本就摊在了我们用户上,说不难受是假的。

img


img


相对来说,同样是做HTTP代理这么久的青果网络,产品品类上非常丰富,性价比也非常高:

img

目前HTTP代理的使用场景,都能有对应的产品。

与芝麻代理有个明显区别,青果网络HTTP代理存活周期30分钟内人任选时段,价格都是不变动的,有需要的uu可以自己去看看。

在HTTP代理资源池,还分了企业池和普通池,这样既能照顾到企业对HTTP代理质量有更高的需求,也能满足很多个人开发者的需求。

这次测试我们也可以发现,青果网络的各项测试数值,也表现得很优异,响应速度快,方差1.9稳定度高,带宽2左右比之芝麻0.74的不可谓不高,还能保持99.5%的可用率。

img

img


希望此系列测试文章,能够帮到那些在观望HTTP代理哪家强的人。


{BANNED}最佳后的{BANNED}最佳后,芝麻代理的后台,是不是该优化了?

img


img


多次重复重新登录验证,这种用户体验感可不算妙。

阅读(101) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~