您的位置:首页 > 其它

curl基本用法,curl和wget区别

2017-04-01 11:02 260 查看
摘要: curl常用命令

Curl是一个很强大的http命令行工具,功能十分强大,非常有用.

一、CURL对HTTP接口的访问

1. 访问网页

$ curl http://www.baidu.com
回车之后,www.baidu.com 的html 显示在屏幕上了

2. 保存页面

用curl option: -o

$ curl -o page.html http://www.linuxidc.com
可以看到屏幕上出现一个下载页面进度指示,等到100%,就保存完成了.页面名字就是page

二、GET请求

GET模式什么option都不用,只需要把变量写在url里面就可以了,

curl "http://www.baidu.com" 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地

curl -i "http://www.baidu.com" 显示全部信息

curl -l "http://www.baidu.com" 只显示头部信息

curl -v "http://www.baidu.com" 显示get请求全过程解析

三、POST请求

1. 使用 option -d,

例如:

$ curl -d "param1=value1¶m2=value2" "http://www.baidu.com"

2.json格式的post请求

$ curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password":"test"}' http://test/apis/users.json.
有人会问curl和wget都可以下载,那到底有什么区别呢?下面是简单的一点介绍:

CURL

基于libcurl库,libcurl是一个稳定的跨平台的类库,任何人可以免费使用其API进行开发。CURL继承了libcurl库的优良设计,这是它能成为优秀的命令行工具的重要原因。

管道Pipes). CURL不仅仅遵循 传统UNIXstyle, 它在对输入和输出做更多的处理,贯彻了 "everything is a pipe" 的设计思想。

返回值(Return codes). curl为一系列应用返回多种结果(错误),适用于很多情况。

单点传送 curl仅仅单点传送数据。它只会传送用户指定的URLS,并不包含任何递归下载的逻辑,也不对html进行任何解析。

多协议支持. curl 支持的协议有: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP 和 RTSP 在写这篇文章时,Wget仅仅支持 HTTP, HTTPS 和 FTP.

适应更多的平台: curl比wget运行在更多的平台上面,虽然curl设计当初并没有打算这样。比如: OS/400, TPF 和其他很多非UNIX的平台。

更强大的SSL库. curl能应用于多个不同的 SSL/TLS 库, 并提供了更多的可控性和对协议的广泛支持。

curl支持更多的 HTTP 认证方式

双向通信. curl 提供了上传能力,Wget仅仅支持HTTP post 方式

HTTP multipart/form-data 的发送能力, 这使得用户可以进行HTTP上传,模拟浏览器的行为和HTTP认证等,提供了更多操作的可能。

压缩. curl 支持GZIP和 inflate Content-Encoding 并且自动进行解压缩操作。

Wget

Wget 仅仅支持命令行方式运行. 没有类库,不提供API等。

递归! Wget 与CURL的最大区别也是Wget的最大的优势是可以进行递归的下载,可以一次下载一个HTML页面 或者ftp列表中的所有内容。

参与开发的人员相对较. 我打赌,任何参与这两个项目的人都能感觉到这一点。

HTTP 1.0. Wget 仍然仅仅使用 HTTP 1.0,但是它一直工作很好,并且对于最终用户没有任何影响。curl在2001年三月的时候就开始支持 HTTP 1.1 了(仍然保留对 1.0 请求的支持).

GPL. Wget 100% 遵循 GPL v3 协议,. curl 则是 MIT licensed.

GNU. Wget 是 GNU 项目的一部分 并且所有的版权归于 FSF. curl项目则是独立的,独立于任何组织,所有的版权属于Daniel。(哇!)

Wget 不需要任何额外参数 就能从URL下载文件到本地, 而curl需要至少 -o 或者 -O这两个参数.

总结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规范。HTTP1.0和HTTP1.1的区别,HTTP1.1中增加的持续性连接(Persist Connection)与块编码(Chunked Encoding)技术.
4.curl在指定要下载的链接时能够支持URL的序列或集合,而wget则不能这样;
5.wget支持递归下载,而curl则没有这个功能。

尺有所长,寸有缩短.一句话,看怎么用罢了.

个人心得:

url可以下载,功能比较多,但是长项不在于下载,而在于模拟提交web数据,POST/GET请求,调试网页,等等。

wget是个职业的下载利器.4个字概括:专注,极致 .

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

用wget来下载文件,加 -c选项不怕断网;用curl 来跟网站的API 交互,简便清晰。

参阅:

1.http://man.linuxde.net/wget

2.http://cuijianlingbest.blog.163.com/blog/static/12275283320125135362129/

3.http://www.cnblogs.com/wangkangluo1/archive/2012/04/17/2453946.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息