ref: http://www.linuxidc.com/Linux/2015-05/117381.htm

Linux工具之curl与wget高级使用

Linux工具之curl与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,--remote-name:按照服务器上的文件名,存在本地
--l,--head:仅返回头部信息
-u,--user[user:pass]:设置http认证用户和密码
-T,--upload-file:上传文件
-e,--referer:指定引用地址
-x,--proxy:指定代理服务器地址和端口
-w,--write-out:输出指定格式内容
--retry:重试次数
--connect-timeout:指定尝试连接的最大时间/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指定下载目录
# wgethttp://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

Ubuntu 用户安装下载器 cURL 7.36.0  http://www.linuxidc.com/Linux/2014-05/102269.htm

Linux curl使用简单介绍 http://www.linuxidc.com/Linux/2008-01/10891.htm

Unix下Curl的使用方法及常用功能记录分享 http://www.linuxidc.com/Linux/2012-08/69154.htm

curl命令使用 http://www.linuxidc.com/Linux/2014-09/107018.htm

Linux wget命令详解 http://www.linuxidc.com/Linux/2012-08/67837.htm

Linux 下使用 wget/aria2 进行离线迅雷批量下载 http://www.linuxidc.com/Linux/2011-10/46052.htm

Linux使用wget请求地址时报错 http://www.linuxidc.com/Linux/2011-07/39345.htm

Linux下载命令wget使用详解 http://www.linuxidc.com/Linux/2011-01/30980.htm

wget 使用大全 http://www.linuxidc.com/Linux/2008-09/15722.htm

Linux 命令行下载工具 wget 的使用技巧 http://www.linuxidc.com/Linux/2007-10/8293.htm

wget 命令实例 http://www.linuxidc.com/Linux/2014-10/108733.htm

ref: http://blog.chinaunix.net/uid-20613650-id-3269728.html

curl 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也是有优势的,呵呵)

ref:http://daniel.haxx.se/docs/curl-vs-wget.html
看着它们的man page里面对HTTP支持的描述,我又了解到了一点HTTP1.0和HTTP1.1的区别,HTTP1.1中增加的持续性连接(Persist Connection)与块编码(Chunked Encoding)技术。
块传输编码(Chunked Transfer Coding)
块 编码(chunked encoding)改变消息主体使消息主体(message body,译注:消息主体与实体主体是有区别的,后面章节将会介绍)成块发送。每一个块有它自己的大小(size)指示器,在所有的块之后会紧接着一个可 选的包含实体头域的尾部(trailer)。这允许发送端能动态生成内容,并能携带有用的信息,这些信息能让接收者判断消息是否接收完整。

ref: http://www.cnblogs.com/mfryf/p/3901327.html

使用curl / wget命令上传下载FTP

curl可以在shell下轻松上传下载ftp上的文件,相比ftp命令更具有优势,因为它能在单命令条件下,下载或者上传一个ftp文件,甚至可以删除文件。

下面看实例:

1、列出ftp服务器上的目录列表:

1
2
3
curl  ftp : //www .quany.info/ --user name: passwd
curl  ftp : //www .quany.info/ –u name: passwd #简洁写法
curl  ftp : //name : passwd @www.quany.info  #简洁写法2

2、只列出目录,不显示进度条

1
curl  ftp : //www .quany.info –u name: passwd -s

3、下载一个文件:

1
curl  ftp : //www .quany.info /size .zip –u name: passwd -o size.zip

4、上载一个文件:

1
curl –u name: passwd -T size.mp3  ftp : //www .quany.info /mp3/

5、从服务器上删除文件(使用curl传递ftp协议的DELE命令):

1
curl –u name: passwd ftp : //www .quany.info/ -X  'DELE mp3/size.mp3'

6、另外curl不支持递归下载,不过可以用数组方式下载文件,比如我们要下载1-10.gif连续命名的文件:

1
curl –u name: passwd ftp : //www .quany.info /img/ [1-10].gif –O  #O字母大写

7、要连续下载多个文件:

1
curl –u name: passwd ftp : //www .quany.info /img/ [one,two,three].jpg –O  #O字母大写

8、wget下载文件:

用户账户:quany
用户密码:123456
ftp下载

1
wget  ftp : //quany :123456@www.quany.info /xxx .zip

http下载

1
wget --http-user=quany --http- passwd =123456 http: //www .quany.info /xxx .zip

9、wget参数:

wget的参数较多,但大部分应用只需要如下几个常用的参数:
-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-N 时间戳:该参数指定wget只下载更新的文件,也就是说,与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载。
-m 镜像:相当于同时使用-r和-N参数。
-l 设置递归级数;默认为5。-l1相当于不递归;-l0为无穷递归;注意,当递归深度增加时,文件数量将呈指数级增长。
-t 设置重试次数。当连接中断(或超时)时,wget将试图重新连接。如果指定-t0,则重试次数设为无穷多。
-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才需要指定此参数。

使用举例:

1
wget -m -l4 -t0 http: //www .quany.info/

将在本地硬盘建立http://www.quany.info/的镜像,镜像文件存入当前目录下一个名为www.quany.info的子目录中(你也可以使用-nH参数指定不建立该子目录,而直接在当前目录下建立镜像的目录结构),递归深度为4,重试次数为无穷(若连接出现问题,wget将坚韧不拔地永远重试下去,知道任务完成!)

另外一些使用频率稍低的参数如下:
-A acclist / -R rejlist:
这两个参数用于指定wget接受或排除的文件扩展名,多个名称之间用逗号隔开。例如,假设我们不想下载MPEG视频影像文件和.AU声音文件,可使用如下参数:
-R mpg,mpeg,au

其它参数还有:
-L 只扩展相对连接,该参数对于抓取指定站点很有用,可以避免向宿主主机的其他目录扩散。例如,某个人网站地址为:http://www.quany.info/~ppfl/,使用如下命令行:

1
wget -L http: //www .quany.info/~ppfl/

则只提取该个人网站,而不涉及主机www.quany.info上的其他目录。

-k 转换连接:HTML文件存盘时,将其中的非相对连接转换成为相对连接。
-X 在下载FTP主机上的文件时,排除若干指定的目录

另外,下面参数用于设置wget的工作界面:
-v 设置wget输出详细的工作信息。
-q 设置wget不输出任何信息。

Linux_curl Vs wget相关推荐

  1. Ubuntu使用wget下载zabbix的扩展源

    找到源放置的路径wget+路径+资源名 wget https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu/pool/main/z/zabbix-rele ...

  2. linux命令行中curl和wget自动解压功能对比

    在linux的终端环境下, 我们经常使用curl或是wget来快速下载网页, 其实它们之间还是有很多细微区别的, 比如http 1.1的兼容问题,  gzip解压缩功能等等. 下面是我在实践中遇到的w ...

  3. python wget_python-如何获取wget下载的文件的文件名

    我正在使用os.system('wget'链接)从网站检索文件.下载后,我想根据源链接进一步处理这些文件. 大多数链接都是这种形式 htttp://example.com/-/filename.zip ...

  4. 使用wget在linux服务器上下载oracle软件

    今天需要在远程几台服务器上安装oracle软件,本地的网络不是很好,如果同本地下载,然后再上传到服务器上比较耗时.所以就想直接在服务器上直接下载软件,这样不光速度比较快,而且还节省了很多时间. 我是这 ...

  5. Winodws 10 如何安装wget

    首先我们应该明确wget是什么软件? wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP.HTTPS.FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理.&quo ...

  6. wget使用代理下载

    echo "http_proxy = http://1.255.53.81:80" >>  ~/.wgetrc 1.在bash shell中设定代理 .basrhc: ...

  7. oracle网站wget下载

    1.登录oracle站点 2.chrome,f12,点击下载链接 3.找到有"AuthParam="的这个url 4.复制到linux shell,使用wget 下 [root@X ...

  8. 从命令行使用 wget 调试网页错误

    调试 Web 服务器的一种方法是使用 wget 命令行程序,使用 -S 选项来显示所有的服务器响应.当使用 wget 进行调试时,我也喜欢使用 -O 选项将输出保存到一些临时文件中,以备以后需要查看其 ...

  9. linux查看网络带宽_每天一个Linux命令之~wget命令

    " 勤能补拙是良训,一分辛劳一分才." 01 - 命令介绍 wget 命令用于在终端中下载网络文件 功能和特点 支持断点下传功能 同时支持FTP和HTTP下载方式 程序小,完全免费 ...

最新文章

  1. 红牛开发板模拟器简要说明_V1.0
  2. 用Eclipse开发PHP项目
  3. risc-v 操作系统教程
  4. 任务调度与上下文切换时间测试
  5. 2021年春季学期期末统.考试 公司概论 试题
  6. 前端学习(2852):简单秒杀系统学习之鼠标点击方法
  7. mysql 有一组经纬度 返回在某个区域内_Qt编写地图综合应用17-地址经纬度互转
  8. (笔记)网络技术学习交流会
  9. php多进程并发,php多进程模拟并发事务
  10. 2019.7.26数组
  11. LWP 轻量级线程的意义与实现
  12. Linux中zip和tar处理软链接的差异与选择
  13. 《Effective C#》读书笔记——条目23:理解接口方法和虚方法的区别使用C#表达设计...
  14. 3DMax渲染常见问题
  15. RUBY之父松本行弘:我的编程人生
  16. 今天解封了,该递交作业了,我做了个智能机器人
  17. 利用beego开发网站(一)
  18. 建筑CAD基础设计【1】
  19. 优锘科技:物联森友会发布助物联网企业加速成长
  20. 综述摘要怎么写?(含7大容易被忽略的注意事项及80%综述文章常见句型汇总)...

热门文章

  1. Unity UGUI引导镂空效果,添加背景遮罩带内倒角镂空
  2. C# Console.WriteLine堵塞
  3. Qt自定义类使用QSS换肤
  4. Android版本介绍 1
  5. 转载:一碗牛肉面的思考
  6. sql语句中的函数使用
  7. AnolisOS 8 安装 epel源
  8. layer tips的偏移设置
  9. html统计表合并单元格的快捷键,合并单元格快捷键,小编教你excel怎么合并单元格快捷键...
  10. matlab外接显卡,联想发布首款外接显卡坞,可让笔记本性能暴增