`
desert3
  • 浏览: 2166985 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

http代理测速程序

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

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
#@author zcwang3@gmail.com
#@version 2010-10-18 16:47 初始做成

import urllib2
import httplib
import datetime

#目标URL
targetUrl = "http://www.baidu.com"
#取多少次访问速度的平均值
testCount = 10
proxyAddrSpeedList = []
def openUrl(proxyAddr):
    totalS = 0
    #测试,取10次平均值
    for i in range(testCount):
        try:
            starttime = datetime.datetime.now()
            #使用无验证的代理
            proxy_handler = urllib2.ProxyHandler({"http": proxyAddr})
            opener = urllib2.build_opener(proxy_handler)
            opener.open(targetUrl)
            endtime = datetime.datetime.now()
            print str(endtime - starttime) + "|" + proxyAddr
            totalS += (endtime - starttime).seconds * 1000 + (endtime - starttime).microseconds
        except urllib2.URLError,e:
            #输出错误信息,如果代理一直出错,该代理应该废弃
            print proxyAddr + "|" + str(e)
            if (str(e) == "<urlopen error (10054, 'Connection reset by peer')>" 
                or str(e) == "<urlopen error (10060, 'Operation timed out')>"
                or str(e) == "<urlopen error (10061, 'Connection refused')>"
                or str(e) == "<urlopen error (10065, 'No route to host')>"
                or str(e) == "HTTP Error 502: Bad Gateway"
                or str(e) == "HTTP Error 503: Service Unavailable"
                or str(e) == "HTTP Error 504: Gateway Time-out"
                or str(e) == "HTTP Error 404: Not Found"
                ):
                #出错就重试
                openUrl(proxyAddr)
                return
        except httplib.BadStatusLine, e:
            print proxyAddr + "|" + "httplib.BadStatusLine"
            #出错就重试
            openUrl(proxyAddr)
            return
    print totalS
    #输出10次的平均值,单位秒  
    proxyAddrSpeedList.append(str(totalS / testCount / 1000000.) + u"秒|" + proxyAddr)

#测试的代理地址列表,逗号分隔
proxyAddressArray = "http://218.204.29.110:808,http//58.56.108.35:8080".split(",")
for p in proxyAddressArray:
    openUrl(p)
    print u"已测试地址排序开始"
    tempAddList = []
    tempSpeedList = []
    proxyAddrSpeedList.sort()
    for p1 in proxyAddrSpeedList:
        tempSpeedList.append(p1.split("|")[0])
        tempAddList.append(p1.split("|")[1])
        print p1.split("|")[1]
    print "speed = %s" %(",".join(tempSpeedList))
    #输出:逗号分隔的代理地址
    print "proxyAddressArray = %s" %(",".join(tempAddList))
    print u"已测试地址排序结束"
分享到:
评论

相关推荐

    代理IP获取2.0(可导出测速收藏设置)

    用户可以设定代理类型(如HTTP、HTTPS或SOCKS),配置代理服务器的地址和端口号,以及是否开启代理。这一功能使得用户能够在不同网络环境下灵活切换代理配置。 在安全性方面,尽管程序可能因为使用易语言编写而在...

    获取代理IP检测是否有效-易语言

    在这个项目中,我们将使用易语言编写程序,以获取代理IP并检测其有效性。 首先,我们需要理解代理IP的获取方式。代理IP通常可以通过在线API、数据抓取或购买代理服务来获得。在易语言中,我们可以使用HTTP请求模块...

    易语言-易语言网速测试

    在网速测试程序中,开发者可能会使用这个库来向特定的测速服务器发送数据请求,然后测量数据传输的速度。例如,程序可能会连续发送和接收一定量的数据包,并计算完成整个过程所需的时间,以此估算出下载速度和上传...

    delphi网址测试

    1. **初始化TIdHTTP组件**:开发者需要创建一个TIdHTTP对象实例,并设置其属性,如代理设置、连接超时、重试次数等。 2. **构造HTTP请求**:使用TIdHTTP对象的Get或Post方法,指定待测试的URL。在本例中,可能是...

    易语言-易语言调用迅雷引擎实现网速测试

    迅雷引擎内置了丰富的网络通信功能,包括但不限于HTTP、FTP等协议的支持,这使得开发者可以通过调用迅雷的API来实现各种网络相关的功能,比如测速。 实现网速测试的基本步骤通常包括以下几点: 1. **初始化引擎**...

    VB编程资源大全(源码 网络)

    (3KB) 42,nettools.ZIP &lt;br&gt;十分Cool的程序,一个网络工具箱,可以实现包括主机察看、网络测速、Ping、段口扫描、路由跟踪等功能。不可不看。推荐下载。(71KB) 43,webserver.ZIP 一个利用VB实现的Web ...

    【IAPP源码】仿宇宙多功能工具箱源码.zip

    4. **功能实现**:工具箱中的每个功能都是一个独立的子系统,可能包括文件管理、系统信息查询、网络工具(如测速、代理设置)、图片处理等。这些功能的实现涉及各种API调用、算法和数据结构的运用。 5. **数据存储*...

    运维常用工具和命令

    Linux 下测速** - **命令**: `ping`、`iperf`。 - **应用场景**: 测试网络速度和延迟。 **35. 查看磁盘 IO 几种方式** - **命令**: `iostat`、`sar`、`vmstat`。 - **应用场景**: 监控磁盘 I/O 性能。 **36. ...

Global site tag (gtag.js) - Google Analytics