python curl模块_Python的pycurl模块

0x00 关于cURL

cURL可以使用URL的语法模拟浏览器来传输数据,它支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE以及LDAP等多种协议。

利用cURL可以实现:HTTPS认证、HTTP POST方法、HTTP PUT方法、FTP上传、keyberos认证、代理服务器、cookies、用户名/密码认证、下载文件断点续传、上传文件断点续传、http代理服务器管道等等。

0x01 pycurl常见方法

创建curl对象

c = pycurl.Curl() #创建一个curl对象

设置请求

c.setopt(pycurl.URL,"http://www.baidu.com") #指定请求的URL

c.setopt(pycurl.CONNECTTIMEOUT, 5) #连接的等待时间,设置为0则不等待

c.setopt(pycurl.TIMEOUT, 5) #请求超时时间

c.setopt(pycurl.USERAGENT,"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0") #配置User-Agent

c.setopt(pycurl.NOPROGRESS, 0) #是否屏蔽下载进度条,非0则屏蔽

c.setopt(pycurl.MAXREDIRS, 5) #指定HTTP重定向的最大数

c.setopt(pycurl.FORBID_REUSE, 1) #完成交互后强制断开连接,不重用

c.setopt(pycurl.FRESH_CONNECT,1) #强制获取新的连接,即替代缓存中的连接

c.setopt(pycurl.DNS_CACHE_TIMEOUT,60) #设置保存DNS信息的时间,默认为120秒

c.setopt(pycurl.HEADERFUNCTION, getheader) #将返回的HTTP HEADER定向到回调函数getheader

c.setopt(pycurl.WRITEFUNCTION, getbody) #将返回的内容定向到回调函数getbody

c.setopt(pycurl.WRITEHEADER, fileobj) #将返回的HTTP HEADER定向到fileobj文件对象

c.setopt(pycurl.WRITEDATA, fileobj) #将返回的HTML内容定向到fileobj文件对象

部分返回信息

c.getinfo(pycurl.HTTP_CODE) #返回的HTTP状态码

c.getinfo(pycurl.HEADER_SIZE) #HTTP头部大小

c.getinfo(pycurl.TOTAL_TIME) #传输结束所消耗的总时间

c.getinfo(pycurl.NAMELOOKUP_TIME) #DNS解析所消耗的时间

c.getinfo(pycurl.CONNECT_TIME) #建立连接所消耗的时间

c.getinfo(pycurl.PRETRANSFER_TIME) #从建立连接到准备传输所消耗的时间

c.getinfo(pycurl.STARTTRANSFER_TIME)#从建立连接到传输开始消耗的时间

c.getinfo(pycurl.REDIRECT_TIME) #重定向所消耗的时间

c.getinfo(pycurl.SIZE_UPLOAD) #上传数据包大小

c.getinfo(pycurl.SIZE_DOWNLOAD) #下载数据包大小

c.getinfo(pycurl.SPEED_DOWNLOAD) #平均下载速度

c.getinfo(pycurl.SPEED_UPLOAD) #平均上传速度

0x02 简单使用

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import pycurl

import StringIO

buf = StringIO.StringIO()

c = pycurl.Curl()

c.setopt(pycurl.URL, "http://127.0.0.1/site/range/sqli/sqli1.php")

c.setopt(pycurl.TIMEOUT, 15)

c.setopt(pycurl.FOLLOWLOCATION, 1) #允许跟踪来源

c.setopt(pycurl.MAXREDIRS, 5)

c.setopt(pycurl.SSL_VERIFYPEER, 0)

c.setopt(pycurl.SSL_VERIFYHOST, 0)

c.setopt(pycurl.USERAGENT,"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0")

c.setopt(pycurl.WRITEFUNCTION, buf.write) #将返回的内容定向到回调函数write

c.perform()

status_code = c.getinfo(pycurl.HTTP_CODE) #返回的HTTP状态码

content_size = c.getinfo(pycurl.SIZE_DOWNLOAD) #返回的数据的大小

content =buf.getvalue()

print status_code

print content_size

print content

若未作声明则文章版权归本人(@reber)所有,转载请注明原文链接:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值