curl和wget区别

834 阅读3分钟

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

一、CURL对HTTP接口的访问

1. 访问网页

$ curl http://www.baidu.com

回车之后,www.baidu.com 的html 显示在屏幕上了 

2. 保存页面

用curl option: -o

$ curl -o page.html http://www.baidu.com

可以看到屏幕上出现一个下载页面进度指示,等到100%,就保存完成了.页面名字就是page.html
可以指定存放的路径。

二、GET请求

curl www.baidu.com/ # GET请求, 输出 响应内容

curl -I www.baidu.com/ # GET请求, 只输出 响应头

curl -i www.baidu.com/ # GET请求, 输出 响应头、响应内容

curl -v www.baidu.com/ # GET请求, 输出 通讯过程、头部信息、响应内容等

下载文件

指定保存的文件名称下载文件

curl www.baidu.com -o baidu.txt

使用 URL 指定的资源文件名保存下载文件(URL 必须指向具体的文件名)

curl www.baidu.com/index.html -O

指定 Usaer-Agent 和 Referer 请求头的值, 下载文件

curl -A "Mozilla/5.0 Chrome/70.0.3538.110 Safari/537.36" -e "www.baidu.com/" www.baidu.com/index.html -O

指定Authorization请求头的值, 下载文件 参数格式: -H "NAME: VALUE"

curl -H "Authorization: a112121dada" www.baidu.com/index.html -O

三、POST请求

1. 使用 option -d, 

例如:

$ curl -d "param1=value1&param2=value2" www.baidu.com

2.json格式的post请求

$ curl -l -H "Content-type: application/json" -X POST -d '{"phone":"196666666","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 并且自动进行解压缩操作。

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

Wget

  • Wget 仅仅支持命令行方式运行. 没有类库,不提供API等。  
  • 递归!  Wget 与CURL的最大区别也是Wget的最大的优势是可以进行递归的下载,可以一次下载一个HTML页面 或者ftp列表中的所有内容。
  • wget是个职业的下载利器.4个字概括:专注,极致  .
  • 单独在下载上,也各有所长,wget可以递归,支持断点;而curl支持URL中加入变量,因此可以批量下载。
  • 用wget来下载文件,加 -c选项不怕断网;用curl 来跟网站的API 交互,简便清晰。  
  • HTTP 1.0. Wget 仍然仅仅使用 HTTP 1.0,但是它一直工作很好,并且对于最终用户没有任何影响。curl在2001年三月的时候就开始支持 HTTP 1.1 了(仍然保留对 1.0 请求的支持).

参考文章:

  1. blog.csdn.net/u013514928/…