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. 我的Android进阶之旅------>直接拿来用!最火的Android开源项目

    转载于CSDN,相关链接如下: http://www.csdn.net/article/2013-05-03/2815127-Android-open-source-projects http://w ...

  2. angularJs-HelloWorld

    AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷.AngularJS通过使用我们称为标识符(directives)的结构,让浏览器能够识别新的语法. 1使用双大括号{{ ...

  3. 简单Android代码混淆(转)

    代码混淆步骤: 1,project.properties中打开代码混淆功能,加入proguard.config=proguard.cfg 2,编辑proguard.cfg文件,项目没有自动生成时可手工 ...

  4. Apache NiFi 开发 处理器使用说明

    NIFI的使用: 注意:FlowFile由[属性]和[内容]组成,在解析的过程中这个概念非常重要,因为有些组件操作的是属性,有些组件操作的是内容,在配置组件时Destination配置项的选择很重要, ...

  5. 7-6 公路村村通(30 分) 【prime】

    7-6 公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤10 ...

  6. 让我们再谈谈 iOS 安全

    前言 安全方面的话题总是聊不完的.这不,国外一家有名的专门攻击别人的安全公司 Hacking Team 自己被 Hack 了,结果有 400 多 G 的攻击资料泄漏出来,包括一些 0-day 的漏洞. ...

  7. P1856 [USACO5.5]矩形周长Picture

    P1856 [USACO5.5]矩形周长Picture $len$            $sum$              $num$             $flag\_l$ $flage\_ ...

  8. Spring Boot2.0之整合事物管理

    首先Spring 事务分类 1.声明事务  原理:基于编程事务的 2.编程事务  指定范围 扫包去解决 3.事务原理:AOP技术   通过环绕通知进行了拦截 使用Spring 事务注意事项: 不要tr ...

  9. Discuz X3游客看小图功能导致文字内容隐藏的【修复方法】

    如果帖子内容以图片开始,并且开启了游客看小图功能,那么图片下面的文字也会被隐藏,这是不科学的(在图片上边的文字不会被隐藏)查看DZ源代码,发现是程序猿疏忽漏掉了</div> 下边1314学 ...

  10. JavaScript--Object类

    Object类是所有JavaScript类的基类,提供了一种创建自定义对象的简单方式,不需要程序员再定义构造函数. 主要属性: constructor-对象的构造函数 prototype-获得类的pr ...