`

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不输出任何信息。

分享到:
评论

相关推荐

    curl_wget.zip

    curl wget 工具

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

    主要给大家介绍了Linux中curl命令和wget命令使用以及这两者之间的区别比较的相关资料,curl和wget命令都是Linux下的工具,可以用来下载文件。文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来...

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

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

    CurlWget-crx插件

    语言:English,Français 为“ curl / wget”工具...CurlWget是一个小插件,可帮助提供“ curl”或“ wget”命令行字符串,以在无法使用图形用户界面浏览器的纯控制台会话(如unix / linux远程shell)上进行复制/粘贴。

    Windows32 wget.exe&curl;.exe 命令行下载工具(附dll文件)

    wget和curl在linux下使用再平常不过了,这里的是Windows32位操作系统的 wget.exe和curl.exe。 附带了使用说明和参数解释,包括了附属的dll文件。 绝对不容错过!

    24. Linux开发-curl调用网络接口.pdf

    介绍Linux下curl命令、wget命令常见用法,使用curl获取一些常见的HTTP接口返回的数据,再利用CJSON库进行解析。最后的一个小节介绍了Linux下摄像头的简单操作流程并编译了`mjpg-streamer-r63`库,运行网页监控项目,

    linux命令行下使用curl命令查看自己机器的外网ip

    您可能感兴趣的文章:Linux 中 CURL常用命令详解linux下为php添加curl扩展的方法Linux下命令行cURL的10种常见用法示例linux curl命令详解及实例分享Linux中curl命令和wget命令的使用介绍与比较linux shell中curl ...

    Linux抓取网页实例

    Linux抓取网页,简单方法是直接通过curl或wget两种命令。curl和wget命令,目前已经支持Linux和Windows平台,后续将介绍。curl支持http,https,ftp,ftps,scp,telnet等网络协议,详见手册mancurlwget支持http,...

    CURL的学习和应用(附多线程实现)

    取消下在的注释extension=php_curl.dll linux下面安装:复制代码 代码如下:# wget http://curl.haxx.se/download/curl-7.17.1.tar.gz# tar zxvf curl-7.17.1.tar.gz //解压#cd curl-7.17.1# ./configure –prefix=/...

    fast:最小的零依赖实用程序,用于从终端测试您的互联网下载速度

    curl -L https://github.com/ddo/fast/releases/download/v0.0.4/fast_linux_amd64 -o fast # or wget wget https://github.com/ddo/fast/releases/download/v0.0.4/fast_linux_amd64 -O fast # then chmod chmod +x...

    联通asdl帐号转换forlinux and macOSX

    网通 联通 asdl 帐号 转换 for linux 使用说明: for Linux(请确认安装了必要的编译工具) wget http://www.voidcode.com/cnc_adsl/cnc.cpp g++ cnc.cpp -o cnc ./cnc 按照提示操作即可 for Mac OS X(请确认安装...

    用Gow在Windows使用Linux命令 (Gow – The lightweight alternative to Cygwin)

    下载工具 : cURL, wget FTP: NcFTP 编辑器 :vim 字处理 : grep, agrep, less, cat, tail, head 文件工具: mv, cp, du, ls, pwd, rmdir, whereis 开发工具: make, diff, diff3, sleep, cvs, dos2unix,...

    zap:令人愉快的AppImage包管理器

    可以使用curl或wget通过运行以下命令之一来安装Zap软件包管理器,也可以手动完成下载Zap AppImage并与系统集成的工作。 通过curl sh -c " $( curl -fsSL https://git.io/zapinit ) " 通过wget sh -c

    conda_envs:Linux macOS中的conda环境设置用于InSAR数据处理

    conda_envs 在Linux / macOS上设置InSAR数据处理代码。... cd ~ /tools# download, install and setup (mini/ana)conda# for Linux, use Miniconda3-latest-Linux-x86_64.sh# for macOS, opt 2: curl ...

    OSCP备忘单:我的OSCP速查表

    [下载文件(Curl / Wget)] [使用PowerShell下载文件] 常用命令 Python HTTP服务器: python -m SimpleHTTPServer [PORT] Python FTP服务器: python -m pyftpdlib -p 21 Linux侦听器: nc -lnvp [PORT] ...

    compile-ffmpeg-osx-linux:在OSX Linux和Linux的obs-studio下构建用于编译ffmpeg的脚本

    对于Linux(ubuntu / debian)是必需的: sudo apt install autoconf automake build-essential libtool pkg-config texi2html yasm cmake curl mercurial git wget gperf (debian需要sudo将nasm安装到/ usr / ...

Global site tag (gtag.js) - Google Analytics