`

Linux_curl Vs wget

 
阅读更多

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可以在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:passwdftp://www.quany.info/ -X 'DELE mp3/size.mp3'

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

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

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

1
curl –u name:passwdftp://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不输出任何信息。

分享到:
评论

相关推荐

    HTTP.rar_http linux_http client_http linux_made

    在Linux环境中,HTTP客户端是指能够发起HTTP请求的程序,例如curl、wget或通过编程语言如Python的requests库。这些工具或库允许用户从命令行或代码中轻松获取HTTP资源。"HTTP client made really easy"可能指的是这...

    curl_wget.zip

    在给定的压缩包"curl_wget.zip"中,包含了几个关键的命令行工具,它们对于Linux用户来说极其重要。这些工具分别是telnet、zip、curl、wget和iperf。现在我们将详细探讨每个工具的功能及其应用场景。 1. **curl**:...

    Linux_txt.zip_linux txt_linux t_linux.txt_linux运行txt

    “常用工具”可能指的是如`vi/vim`这样的文本编辑器,`bash` shell脚本编写,`find`查找文件,`top`或`htop`监控系统资源,`curl`或`wget`下载网络资源,以及`tar`打包和解压文件等。这些工具极大地扩展了Linux的...

    Linux中curl命令和wget命令的使用介绍与比较

    在Linux操作系统中,curl命令和wget命令是两个用于下载文件的实用工具,它们都有各自的优点和适用场景。本文将详细讲解这两个命令的使用方法及两者之间的差异。 首先,wget是Linux环境中广泛使用的下载工具,其基本...

    Linux_commond.rar_linux_linux commond_tcl

    在IT领域,Linux操作系统是开发者和系统管理员的重要工具,尤其对于初学者来说,掌握基本的Linux命令行操作至关重要。"Linux_command.rar" 提供了一个针对Linux初学者的学习资源,主要聚焦于60个常用命令的教学,...

    在 Linux 中发送 HTTP 请求的多种方法:使用 curl、wget 和 Python 示例

    在 Linux 中发送 HTTP 请求的多种方法:使用 curl、wget 和 Python 示例

    手机练习linux命令_linux_手机练习linux_

    网络相关命令如`ping`、`curl`、`wget`也有其独特用途,可用于测试网络连接或下载文件。 在手机上练习Linux命令还能涉及版本控制,如使用`git`进行代码版本管理和协作。安装Git后,可以创建仓库、克隆远程项目、...

    linux_utilities_for_windows.zip

    9. **wget**:类似curl,wget是一个下载工具,但其支持后台下载和断点续传,尤其适合大型文件的下载。 10. **Apache或Nginx**:这些是流行的Web服务器软件,Windows上的版本让用户在本地测试和部署Web应用。 通过...

    Linux下模拟http的get/post请求(curl or wget)详解

    Linux下模拟http的get/post请求(curl or wget)详解 背景 最近项目中需要测试接口,但是测试服务器通过堡垒机才能访问,暂时又没有通过Nginx进行转发,只好直接在Linux上模拟http请求进行测试。 方法 get请求 curl ...

    Windows平台下的wget和curl工具包

    在Windows操作系统中,wget和curl是两个非常重要的命令行工具,它们主要用于从互联网上下载文件。这两个工具在Linux系统中广泛使用,但在Windows环境中,它们通常以可执行文件的形式提供。下面将详细介绍这两个工具...

    linux_learn_notes_linux_学习笔记_

    - `curl`/`wget`:下载网页内容或文件。 三、vi编辑器常用指令说明 vi(Visual Editor)是Linux下的一个强大文本编辑器,分为命令模式和插入模式。 1. 命令模式: - `i`:进入插入模式。 - `Esc`:退出插入...

    Nessus8.9.1_Linux_CentOS7版本.rar

    wget http://your_downloaded_file_path/Nessus8.9.1_Linux_CentOS7_version.rpm ``` 4. 使用yum命令安装Nessus: ``` sudo yum localinstall Nessus8.9.1_Linux_CentOS7_version.rpm ``` 5. 安装完成后,...

    快乐的linux命令行_linux_

    - `wget`: 同样用于下载,更适合自动化脚本。 以上只是Linux命令行使用的一小部分,通过不断实践和学习,你可以更熟练地掌握这个强大的工具。"快乐的Linux命令行"的学习资料将帮助你进一步理解这些概念,提升你的...

    Linux_order.rar_linux

    此外,`wget`和`curl`用于下载网络资源。 系统信息和诊断命令如`df`查看磁盘空间,`du`统计目录或文件占用的空间,`free`查看内存使用情况,`uname`提供系统信息,`dmesg`则用于查看内核启动信息。 此外,软件安装...

    linux_html.7z

    "ifconfig"用于配置网络接口,"ping"测试网络连通性,"curl"或"wget"下载网页内容,而"ss"或"netstat"显示网络连接状态。 此外,Linux中还有许多其他实用工具,如文本编辑器"vi"或"nano",打包和压缩工具"tar"和...

    linux_http.rar_linux http 下载

    此外,`curl`也是一个功能强大的命令行工具,可以执行类似的下载任务。 除了命令行工具,还可以使用C语言编写程序实现HTTP下载。这涉及使用套接字编程,通过socket接口与服务器通信。首先创建一个socket,然后连接...

    Linux_commmand.zip_300

    在Linux操作系统中,掌握命令行工具是提升效率的关键。标题中的"Linux_command.zip_300"表明这是一个包含了300多个Linux命令的资源包,旨在帮助用户全面了解和掌握这些命令。描述中提到,这个资源包收录了常用的基础...

    Linux 终端工具_oh-my-zsh_linux_zip

    Oh-My-Zsh的安装通常通过curl或wget命令在终端进行,首先需要确保系统中已经安装了Zsh。安装过程包括下载Oh-My-Zsh的源代码,然后运行安装脚本。安装完成后,用户可以选择Oh-My-Zsh提供的各种主题来改变终端的显示...

Global site tag (gtag.js) - Google Analytics