curl 命令是一个利用 URL 规则在命令行下工做的文件传输工具。它支持文件的上传和下载,因此是综合传输工具,但按传统,习惯称 curl 为下载工具。css
它支持包括 HTTP、HTTPS、ftp等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。html
-o
将文件保存为命令行中指定的文件名的文件中-O
使用URL中默认的文件名保存文件到本地linux
# 将文件下载到本地并命名为 mygettext.html curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html # 将文件保存到本地并命名为gettext.html,后面的 url 能够写正则 curl -O http://www.gnu.org/software/gettext/manual/gettext.html # -O -O 能够同时下载多个文件 # 不加这个选项会直接打印到标准输出
有些网页,好比 www.sina.com
, 发生了跳转,直接 curl 的话没法得到网页源码,这时须要加 -L
选项sql
# 遇到重定向时,使用该选项能够将请求重定向到新的地址上 curl -L www.sina.com
当 curl 网页时中途终端,可使用 -C
选项来接着已经完成的下载,已经下载过的文件不会被从新下载。cookie
# 当文件在下载完成以前结束该进程 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20.1% $ curl -C -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21.1%
-i
显示 http response 的头信息,连同网页代码一块儿。-I/--head
只显示 response 头部信息。-v
显示一次http通讯的整个过程,包括端口链接和http request头信息。
或者使用下面的命令得到更详细的通讯过程:curl --trace output.txt www.sina.com
curl
对于 GET 方法,因为参数数据在 url 上,所以,能够直接 curl,这也是 curl 默认方法。
对于其余方法,则须要使用 -X
选项进行指定,如 POST、DELETE 等。工具
$ curl -X POST --data "data=xxx" example.com
--data
等同于 -d
,有如下几种用法:网站
-d @file # 将提交的参数放在文件里 -d "string" # 多参数形式为 xxx&xxx --data "string" --data-ascii "string" --data-binary "string" --data-urlencode "string # 含有特殊符号的须要进行 url 编码
-e/--referer <url>
选项能够伪造来源网址。google
# 伪装是从 http://www.google.com 页面跳转到目的页面的 $ curl --referer http://www.google.com http://man.linuxde.net
-A/--user-agent <string>
选项能够伪造 UA。编码
curl URL -A "Mozilla/5.0"
-H/--header
自定义头部信息
curl -H "Host:man.linuxde.net" -H "accept-language:zh-cn" <url>
-x/--proxy <host[:port]>
设置代理
-b/--cookie <name=val/file>
选项用来设置 cookie 或者从指定文件中读取 cookie 信息发起 http 请求。
$ curl --cookie "name=xxx;pass=xxx" www.example.com
-c/--cookie-jar <file>
选项能够将 cookies 保存到指定文件。
-u/--user <user[:password]>
进行 http/ftp 的认证
$ curl -u name:password www.example.com $ curl -O ftp://name:passwd@ip:port/demo/curtain/bbstudy_files/style.css
$ curl -T test.sql ftp://name:passwd@ip:port/demo/curtain/bbstudy_files/
--limit-rate <rate>
选项设置传输速度
curl URL --limit-rate 50k
--max-filesize <bytes>
选项设置最大下载的文件总量
curl URL --max-filesize bytes