curl与wget
curl 和wget 区别 使用方法
可参考 curl vs Wget
1.curl是libcurl这个库支持的,wget是一个纯粹的命令行命令。
2.curl支持更多的协议。curl supports FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP and RTSP at the time of this writing. Wget supports HTTP, HTTPS and FTP.
3.curl 默认支持HTTP1.1(也支持1.0),而wget仅仅支持HTTP1.0规范。引用wget的man page中的一段话吧,Please be aware that Wget needs to know the size of the POST data in advance. It's not quite clear how to work around this limitation inherent in HTTP/1.0. Although HTTP/1.1 introduces chunked transfer that doesn't require knowing the request length in advance, a client can't use chunked unless it knows it's talking to an HTTP/1.1 server. And it can't know that until it receives a response, which in turn requires the request to have been completed -- a chicken-and-egg problem.
4.curl在指定要下载的链接时能够支持URL的序列或集合,而wget则不能这样;
5.wget支持递归下载,而curl则没有这个功能。(这是wget的一个主要好处,wget也是有优势的,呵呵)
1、curl(文件传输工具)
常用参数如下:
-c,--cookie-jar:将cookie写入到文件
-b,--cookie:从文件中读取cookie
-C,--continue-at:断点续传
-d,--data:http post方式传送数据
-D,--dump-header:把header信息写入到文件
-F,--from:模拟http表达提交数据
-s,--slient:减少输出信息
-o,--output:将信息输出到文件(区别于-O,该选项相当于将下载的文件重命名)
-O,--remote-name:按照服务器上的文件名,存在本地(wget命令不用,直接跟下载文件地址即可)
--l,--head:仅返回头部信息
-u,--user[user:pass]:设置http认证用户和密码
-T,--upload-file:上传文件
-e,--referer:指定引用地址
-x,--proxy:指定代理服务器地址和端口
-w,--write-out:输出指定格式内容
--retry:重试次数
--connect-timeout:指定尝试连接的最大时间/s
-m : 数据传输的最大允许时间,单位秒(s)
使用示例:
例1:抓取页面到指定文件,如果有乱码可以使用iconv转码
# curl -o baidu.html www.baidu.com
# curl –s –o baidu.html www.baidu.com |iconv -f utf-8 #减少输出信息
例2:模拟浏览器头(user-agent)
# curl -A "Mozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.0)" www.baidu.com
例3:处理重定向页面
# curl –L http://192.168.1.100/301.php #默认curl是不处理重定向
例4:模拟用户登陆,保存cookie信息到cookies.txt文件,再使用cookie登陆
# curl -c ./cookies.txt -F NAME=user -F PWD=*** URL #NAME和PWD是表单属性不同,每个网站基本都不同
# curl -b ./cookies.txt –o URL
例5:获取HTTP响应头headers
# curl -I http://www.baidu.com
# curl -D ./header.txt http://www.baidu.com #将headers保存到文件中
例6:访问HTTP认证页面
# curl –u user:pass URL
例7:通过ftp上传和下载文件
# curl -T filename ftp://user:pass@ip/docs #上传
# curl -O ftp://user:pass@ip/filename #下载
2、wget(文件下载工具)
常用参数如下:
2.1 启动参数
-V,--version:显示版本号
-h,--help:查看帮助
-b,--background:启动后转入后台执行
2.2 日志记录和输入文件参数
-o,--output-file=file:把记录写到file文件中
-a,--append-output=file:把记录追加到file文件中
-i,--input-file=file:从file读取url来下载
2.3 下载参数
-bind-address=address:指定本地使用地址
-t,-tries=number:设置最大尝试连接次数
-c,-continue:接着下载没有下载完的文件
-O,-output-document=file:将下载内容写入到file文件中
-spider:不下载文件
-T,-timeout=sec:设置响应超时时间
-w,-wait=sec:两次尝试之间间隔时间
--limit-rate=rate:限制下载速率
-progress=type:设置进度条
2.4 目录参数
-P,-directory-prefix=prefix:将文件保存到指定目录
2.5 HTTP参数
-http-user=user:设置http用户名
-http-passwd=pass:设置http密码
-U,--user-agent=agent:伪装代理
-no-http-keep-alive:关闭http活动链接,变成永久链接
-cookies=off:不使用cookies
-load-cookies=file:在开始会话前从file文件加载cookies
-save-cookies=file:在会话结束将cookies保存到file文件
2.6 FTP参数
-passive-ftp:默认值,使用被动模式
-active-ftp:使用主动模式
2.7 递归下载排除参数
-A,--accept=list:分号分割被下载扩展名的列表
-R,--reject=list:分号分割不被下载扩展名的列表
-D,--domains=list:分号分割被下载域的列表
--exclude-domains=list:分号分割不被下载域的列表
使用示例:
例1:下载单个文件到当前目录下,也可以-P指定下载目录
# wget http://nginx.org/download/nginx-1.8.0.tar.gz
例2:对于网络不稳定的用户可以使用-c和--tries参数,保证下载完成
# wget --tries=20 -c http://nginx.org/download/nginx-1.8.0.tar.gz
例3:下载大的文件时,我们可以放到后台去下载,这时会生成wget-log文件来保存下载进度
# wget -b http://nginx.org/download/nginx-1.8.0.tar.gz
例4:可以利用—spider参数判断网址是否有效
# wget --spider http://nginx.org/download/nginx-1.8.0.tar.gz
例5:自动从多个链接下载文件
# cat url_list.txt #先创建一个URL文件
http://nginx.org/download/nginx-1.8.0.tar.gz
http://nginx.org/download/nginx-1.6.3.tar.gz
# wget -i url_list.txt
例6:限制下载速度
# wget --limit-rate=1m http://nginx.org/download/nginx-1.8.0.tar.gz
例7:登陆ftp下载文件
# wget --ftp-user=user --ftp-password=pass ftp://ip/filename
curl与wget的更多相关文章
- linux包-下载-curl与wget
[root@localhost ~]# rpm -qa|grep curllibcurl-7.19.7-37.el6_4.x86_64python-pycurl-7.19.0-8.el6.x86_64 ...
- Linux学习:curl 与 wget命令
curl和wget命令都是Linux下的工具,可以用来下载文件. 一.wget 例1: wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip 下载 ...
- Shell curl 和 wget 使用代理IP
Linux Shell 提供两个非常实用的命令来爬取网页,它们分别是 curl 和 wget curl 和 wget 使用代理 curl 支持 http.https.socks4.socks5 wge ...
- curl和wget的区别和使用
curl和wget基础功能有诸多重叠,如下载等. 非要说区别的话,curl由于可自定义各种请求参数所以在模拟web请求方面更擅长:wget由于支持ftp和Recursive所以在下载文件方面更擅长.类 ...
- curl 与wget的区别
CURL与wget的区别 当想要直接通过linux 命令行下载文件,马上就能想到两个工具:wget 和 CURL.它们有很多一样的特征,可以很轻易的完成一些相同的任务,虽然它们有一些相似的特征,但它们 ...
- 开源http协议库curl和wget的区别和使用
curl和wget基础功能有诸多重叠,如下载等. 在高级用途上的curl由于可自定义各种请求参数所以长于模拟web请求,用于测试网页交互(浏览器):wget由于支持ftp和Recursive所以长于下 ...
- linux下载利器之curl和wget的区别
linux下载利器-------curl和wget的区别 curl和wget基础功能有诸多重叠,如下载等. 在高级用途上的curl由于可自定义各种请求参数所以长于模拟web请求,用于测试网页交互(浏览 ...
- Linux命令发送Http的get或post请求(curl和wget两种方法)
Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求.下面就来介绍一下Linux系统如何模拟Http ...
- curl 转 wget
curl 转 wget // sed -e 's@-H @--header=@g;s@^curl @wget @g;s@--compressed$@@g' $crf var curlStr = `cu ...
随机推荐
- shell命令相关
1.服务端登录退出 登录服务器 ssh kayan.sjc@xx.xx.xx.67 退出登录:logout 192.168.0.10 2.目录管理 显示目录 pwd 创建目录 mkdir resour ...
- C-Lodop对大小写敏感 不要使用大小混写
C-Lodop是对大小写敏感的,而以前的Lodop控件,对于大小混写有可能可以用,而目前由于高版本的火狐谷歌不再支持np插件,为了兼容所有浏览器,就要使用c-lodop,或像Lodop官网的样例一样, ...
- Linux 学习 (一) Linux简介
Linux达人养成计划 I 学习笔记 Linux 内核官网:www.kernel.org 内核版本说明:主版本.次版本.末版本,如2.6.18 Linux 主要发行版本 RedHat: 服务器领域,部 ...
- Spring Boot 构建电商基础秒杀项目 (二) 使用 Spring MVC 方式获取用户信息
SpringBoot构建电商基础秒杀项目 学习笔记 修改 DOMapper 在 UserPasswordDOMapper.xml 添加: <select id="selectByUse ...
- codeforces263B
Squares CodeForces - 263B Vasya has found a piece of paper with a coordinate system written on it. T ...
- HTML5-MathML-基础篇
MathML是数学标记语言,是一种基于XML(标准通用标记语言的子集)的标准.用来在互联网上书写数学符号和公式的置标语言. 注意:大部分浏览器都支持MathML标签,如果你的浏览器不支持该标签,可以使 ...
- BZOJ2561最小生成树——最小割
题目描述 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条边权为L的边(u,v),那么需要删掉最 ...
- 数据库 -- mysql记录操作
一,概括 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
- python学习日记(练习,流程控制+数据结构)
简易计算器 #简易计算器,蠢新一枚,功能尚不完善,本为个人练习,仅供参考 while 1: a = input('请输入第一个运算数:').strip()#可输入前后带空格的数字 if a.lower ...