http代理测速程序

从网上找到很多代理地址,用来访问目标网站,访问目标网站速度不一(即时本机访问代理很快,通过该代理访问目标网站却可能很慢),就想到写1个代理测速程序,自动找出访问目标网站速度快的代理地址并输出 

Python代码   收藏代码
  1. #! /usr/bin/env python   
  2. # -*- coding: utf-8 -*-   
  3. #@author zcwang3@gmail.com  
  4. #@version 2010-10-18 16:47 初始做成  
  5.   
  6. import urllib2  
  7. import httplib  
  8. import datetime  
  9.   
  10. #目标URL  
  11. targetUrl = "http://www.baidu.com"  
  12. #取多少次访问速度的平均值  
  13. testCount = 10  
  14. proxyAddrSpeedList = []  
  15. def openUrl(proxyAddr):  
  16.     totalS = 0  
  17.     #测试,取10次平均值  
  18.     for i in range(testCount):  
  19.         try:  
  20.             starttime = datetime.datetime.now()  
  21.             #使用无验证的代理  
  22.             proxy_handler = urllib2.ProxyHandler({"http": proxyAddr})  
  23.             opener = urllib2.build_opener(proxy_handler)  
  24.             opener.open(targetUrl)  
  25.             endtime = datetime.datetime.now()  
  26.             print str(endtime - starttime) + "|" + proxyAddr  
  27.             totalS += (endtime - starttime).seconds * 1000 + (endtime - starttime).microseconds  
  28.         except urllib2.URLError,e:  
  29.             #输出错误信息,如果代理一直出错,该代理应该废弃  
  30.             print proxyAddr + "|" + str(e)  
  31.             if (str(e) == "<urlopen error (10054, 'Connection reset by peer')>"   
  32.                 or str(e) == "<urlopen error (10060, 'Operation timed out')>"  
  33.                 or str(e) == "<urlopen error (10061, 'Connection refused')>"  
  34.                 or str(e) == "<urlopen error (10065, 'No route to host')>"  
  35.                 or str(e) == "HTTP Error 502: Bad Gateway"  
  36.                 or str(e) == "HTTP Error 503: Service Unavailable"  
  37.                 or str(e) == "HTTP Error 504: Gateway Time-out"  
  38.                 or str(e) == "HTTP Error 404: Not Found"  
  39.                 ):  
  40.                 #出错就重试  
  41.                 openUrl(proxyAddr)  
  42.                 return  
  43.         except httplib.BadStatusLine, e:  
  44.             print proxyAddr + "|" + "httplib.BadStatusLine"  
  45.             #出错就重试  
  46.             openUrl(proxyAddr)  
  47.             return  
  48.     print totalS  
  49.     #输出10次的平均值,单位秒    
  50.     proxyAddrSpeedList.append(str(totalS / testCount / 1000000.) + u"秒|" + proxyAddr)  
  51.   
  52. #测试的代理地址列表,逗号分隔  
  53. proxyAddressArray = "http://218.204.29.110:808,http//58.56.108.35:8080".split(",")  
  54. for p in proxyAddressArray:  
  55.     openUrl(p)  
  56.     print u"已测试地址排序开始"  
  57.     tempAddList = []  
  58.     tempSpeedList = []  
  59.     proxyAddrSpeedList.sort()  
  60.     for p1 in proxyAddrSpeedList:  
  61.         tempSpeedList.append(p1.split("|")[0])  
  62.         tempAddList.append(p1.split("|")[1])  
  63.         print p1.split("|")[1]  
  64.     print "speed = %s" %(",".join(tempSpeedList))  
  65.     #输出:逗号分隔的代理地址  
  66.     print "proxyAddressArray = %s" %(",".join(tempAddList))  
  67.     print u"已测试地址排序结束" 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值