模块:pycurl
简介:检测访问域名,计算请求时间,返回时间,以及返回head头部状态信息,计算建立时间,数据传输时间等
# coding: utf-8
import pycurl
import os,sys
URL="https://www.laosiji.com" #定义访问URL的变量
def webstatus(URL):
import pycurl
curl=pycurl.Curl() #创建一个对象
curl.setopt(pycurl.URL,URL) #定义配置URL
curl.setopt(pycurl.CONNECTTIMEOUT,5) #定义建立连接超时时间
curl.setopt(pycurl.TIMEOUT,5) #定义连接超时时间
curl.setopt(pycurl.NOPROGRESS,1) #是否屏蔽下载进度条,非0即为屏蔽
curl.setopt(pycurl.MAXREDIRS,5) #指定HTTP重定向的最大数
curl.setopt(pycurl.DNS_CACHE_TIMEOUT,60) #设置保存DNS信息的时间,默认为120秒
curl.setopt(pycurl.FORBID_REUSE,1) #完成交互后强制断开连接,不重用
curl.setopt(pycurl.FRESH_CONNECT,1) #强制获取新的连接,替代缓存中的连接
indexfile=open(os.path.dirname(os.path.realpath(__file__))+"/content.txt","wb") #定义生成indexfile文件对象
curl.setopt(pycurl.WRITEHEADER,indexfile) #将返回的HTTP头部head信息保存indexfile文件对象
curl.setopt(pycurl.WRITEDATA,indexfile) #将HTML内容定向到indexfile文件对象
try:
curl.perform() #提交请求
except Exception as e:
print("connection error:"+str(e))
indexfile.close()
curl.close()
sys.exit()
HTTP_CODE = curl.getinfo(pycurl.HTTP_CODE) #获取HTTP的状态码
NAMELOOKUP_TIME = curl.getinfo(pycurl.NAMELOOKUP_TIME) #获取DNS解析时间
CONNECT_TIME = curl.getinfo(pycurl.CONNECT_TIME) #获取建立时间
PRETRANSFER_TIME = curl.getinfo(pycurl.PRETRANSFER_TIME) #获取从建立到准备传输所消耗的时间
STARTTRANSFER_TIME = curl.getinfo(pycurl.STARTTRANSFER_TIME) #获取从建立连接到传世开始消耗的时间
TOTAL_TIME = curl.getinfo(pycurl.TOTAL_TIME) #获取传输总的时间
SIZE_DOWNLOAD = curl.getinfo(pycurl.SIZE_DOWNLOAD) #获取下载数据包的总大小
HEADER_SIZE = curl.getinfo(pycurl.HEADER_SIZE) #获取HTTP头部的大小
SPEED_DOWNLOAD = curl.getinfo(pycurl.SPEED_DOWNLOAD) #获取平均下载的速度
print("URL路径为:%s" % (URL))
print("HTTP返回状态码: %s" % (HTTP_CODE))
print("HTTP头部大小: %.2f byte" % (HEADER_SIZE))
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 byte" % (SIZE_DOWNLOAD))
print("下载平均速度: %d bytes/s" %(SPEED_DOWNLOAD))
indexfile.close() #关闭文件
curl.close() #关闭连接
#webstatus(URL)