一个 web 网站的好坏主要看可用性和响应速度, 直接影响用户体验, 让我们来探测一下自己公司网站速度和质量到底怎么样!
- import pycurl
- import os ,sys
- import time
- URL ='http://www.baidu.com' #探测目标的 url
- c =pycurl.Curl() #创建一个 curl 对象
- c.setopt(pycurl.URL,URL)# 定义请求 url 的常量
- c.setopt(pycurl.CONNECTTIMEOUT,10) #连接等待时间
- c.setopt(pycurl.TIMEOUT,10) #超时时间
- c.setopt(pycurl.NOPROGRESS,0) #是否屏蔽进度条
- c.setopt(pycurl.MAXREDIRS,5) #指定 http 重定向最大数
- c.setopt(pycurl.FORBID_REUSE,1) #完成交互后强制断开, 不重用
- c.setopt(pycurl.DNS_CACHE_TIMEOUT,60) #DNS 保存信息时间
- #c.setopt(pycurl.URL,'http://www.auvgo.com') #指定请求的 URL
- #c.setopt(pycurl.USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 2.0.50324)") #配置 HTTP 请求头
- # 创建一个文件对象, 用'wb'方式打开, 用来存储 http 头部和页面内容
- indexfile =open(os.path.dirname(os.path.realpath(__file__))+"/context.txt",'wb')
- c.setopt(pycurl.WRITEHEADER,indexfile) #将返回的 http header 定向到 indexfile 文件对象
- c.setopt(pycurl.WRITEDATA,indexfile)# 将返回的 http 数据内容定向到 indexfile 文件对象
- try:
- c.perform() #提交请求
- except Exception as e:
- print('连接错误:'+str(e))
- indexfile.close()
- c.close()
- sys.exit()
- NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME) #获取 dns 解析时间
- CONNECT_TIME = c.getinfo(c.CONNECT_TIME)# 获取建立连接时间
- PRETRANSFER_TIME = c.getinfo(c.PRETRANSFER_TIME)# 获取从建立连接到准备传输所消耗的时间
- STARTTRANSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME)# 获取从建立连接到传输所消耗的时间
- TOTAL_TIME =c.getinfo(c.TOTAL_TIME)# 获取传输的总时间
- HTTP_CODE = c.getinfo(c.HTTP_CODE)# 获取 HTTP 状态码
- SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD)# 获取下载数据包的大小
- HEADER_SIZE = c.getinfo(c.HEADER_SIZE)# 获取 HTTP 头部大小
- SPEED_DOWNLOAD = c.getinfo(c.SPEED_DOWNLOAD)# 获取平均下载速度
- # 打印输出相关数据
- print('HTTP 状态码: %s' %(HTTP_CODE))
- print('DNS 解析时间:%.2f ms' %(NAMELOOKUP_TIME*1000))
- print('建立连接时间:%.2f ms' %(CONNECT_TIME*1000))
- print('准备传输时间:%.2f ms' %(PRETRANSFER_TIME*1000))
- print('传输开始时间:%.2f ms' %(STARTTRANSFER_TIME*1000))
- print('传输结束总时间:%.2f ms' %(TOTAL_TIME*1000))
- print('下载数据包大小:%d bytes/s' %(SIZE_DOWNLOAD))
- print('HTTP 头部大小:%d bytes/s' %(HEADER_SIZE))
- print('平均下载速度:%d bytes/s' %(SPEED_DOWNLOAD))
- # 关闭文件及 curl 对象
- indexfile.close()
- c.close()
来源: http://www.bubuko.com/infodetail-3475452.html