curl由于可自定义各种请求参数所以在模拟web请求调试网页方面更擅长;wget由于支持ftp和Recursive所以在下载文件方面更擅长。类比的话curl是浏览器,而wget是迅雷9。

  在下载上,也各有所长,wget可以递归,支持断点;而curl支持URL中加入变量,因此可以批量下载。

  个人用途上,我经常用wget来下载文件,加 -c选项不怕断网;使用curl 来跟网站的API 交互,简便清晰。

1.下载文件

curl -O http://man.linuxde.net/text.iso                    #O大写,不用O只是打印内容不会下载
wget http://www.linuxde.net/text.iso #不用参数,直接下载文件

2.下载文件并重命名

curl -o rename.iso http://man.linuxde.net/text.iso         #o小写
wget -O rename.zip http://www.linuxde.net/text.iso #O大写

3.断点续传

curl -O -C -URL http://man.linuxde.net/text.iso            #C大写
wget -c http://www.linuxde.net/text.iso #c小写

4.限速下载

curl --limit-rate 50k -O http://man.linuxde.net/text.iso
wget --limit-rate=50k http://www.linuxde.net/text.iso

5.显示响应头部信息

curl -I http://man.linuxde.net/text.iso
wget --server-response http://www.linuxde.net/test.iso

6.wget利器--打包下载网站

wget --mirror -p --convert-links -P /var/www/html http://man.linuxde.net/

curl(文件传输工具)

  1. 1

    常用参数如下:

    -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

  2. 2

    使用示例:

    例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 本文所有的概念都可以从《Linux就该这么学》中找到详细的解释。#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 #下载

wget(文件下载工具)

  1.  常用参数如下:

    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:分号分割不被下载域的列表

  2.  使用示例:例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/filenam

    区别

    它们的区别,我看到的有如下几点:
    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则没有这个功能。

参考博文:

https://jingyan.baidu.com/article/eb9f7b6d63f092869264e856.html

https://blog.csdn.net/xiaoliuliu2050/article/details/53410298

linux命令之curl,wget的更多相关文章

  1. Linux命令学习-curl

    作用 curl是利用URL语法的一款强大的网络工具,你可以使用它完成上传下载文件等操作. curl http://www.cnblogs.com 上诉的命令即可将页面内容打印到屏幕上. 常用参数 -o ...

  2. Linux命令之乐--curl

    参数: -I   获取头部信息 -s/--silent      Silent mode. Don't output anything 沉默模式 --connect-timeout <secon ...

  3. Linux下命令行cURL的10种常见用法示例

    curl的命令行工具功能非常强大,这些数据交互的功能基本上都是通过URL方式进行的,下面这篇文章主要给大家分享了在Linux中命令行cURL的10种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...

  4. 【转载】每天一个Linux命令

    目  录 每天一个linux命令(1)  : ls 命令 每天一个linux命令(2)  : cd 命令 每天一个linux命令(3)  : pwd 命令 每天一个linux命令(4)  : mkdi ...

  5. 分布式进阶(十) linux命令行下载文件以及常用工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel

    linux命令行下载文件以及常用工具:wget.Prozilla.MyGet.Linuxdown.Curl.Axel 本文介绍常用的几种命令行式的下载工具:wget.Prozilla.MyGet.Li ...

  6. Linux命令发送Http的get或post请求(curl和wget两种方法)

    Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求.下面就来介绍一下Linux系统如何模拟Http ...

  7. 每天一个linux命令(61):wget命令

    Linux系统​中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP ...

  8. linux命令 wget

    Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP协 ...

  9. 每天一个linux命令(53):wget命令

    Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP协 ...

随机推荐

  1. SD 相关表

    一.客户主数据基本数据放在KNA1里:公司代码放在KNB1里:销售视图放在KNVV里:合作伙伴放在KNVP里: 二.信用主数据KNKK里有信贷限额.应收总额.特别往来:S066里是未清订单值:S067 ...

  2. 使用expect实现shell自动交互

    expect 是一个自动交互功能的工具.expect 是开了一个子进程,通过 spawn 来执行 shell 脚本,监测到脚本的返回结果,通过 expect 判断要进行的交互输入内容. expect ...

  3. TensorFlow框架(6)之RNN循环神经网络详解

    1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主 ...

  4. 《C prime plus (第五版)》 ---第11章 字符串和字符串函数---3

    字符串函数总结: 下面是头文件 string.h 中定义的函数: 序号 函数 & 描述 1 void *memchr(const void *str, int c, size_t n)在参数  ...

  5. WebStorm中SVN配置

    近期在使用WebStorm进行网页开发,值得一提的是WebStorm的确是一个不错的IDE,尽管可能内存开销较大,但是在编写JS的时候提供了很多包括自动完成等强大的功能. 好了,步入正题:在实际项目开 ...

  6. 关于for 循环里 线程执行顺序问题

    最近在做项目时遇到了 这样的需求 要在一个for循环里执行下载的操作, 而且要等 下载完每个 再去接着走循环.上网查了一些 觉得说的不是很明确.现在把我用到的代码 贴上 希望可以帮到有此需求的开发者  ...

  7. Tips:PowerDesigner16.5 图表显示Code以及 Columns新增Commet显示

  8. Jmeter-线程日志查看

    jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多. 1.  压测时,使用top命令查看哪个java进行占用了较多的CPU资源: 上图中可以看出p ...

  9. Seal Report_20160923

    Seal Report算是报表工具中比较好用的一个,它提供了一个完整的从其他任何数据库产生报表的架构.该产品主要关注于容易安装和报表设计,一旦安装好,报表很快就可以建立并且发布.该组件完全开源,使用C ...

  10. hdu 2222 Keywords Search——AC自动机

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2222 第一道AC自动机! T了无数边后终于知道原来它是把若干询问串建一个自动机,把模式串放在上面跑:而且只 ...