首页 > 代码库 > curl命令

curl命令

1.功能作用

cURL是一个非常实用的命令行工具,可以有效的帮助你处理URL相关操作和数据传输。最早这个工具用来帮助大家使用命令行格式来编程实现各种不同协议下的文件传输,如,HTTP,HTTPs,FTP,gopher,sftp等等。我们可以方便的使用批处理或者shell脚本语言来自动处理URL相关的操作。

2.位置

/usr/bin/curl

3.格式用法

curl [options...] 

4.主要参数

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
     --anyauth       可以使用“任何”身份验证方法
-a, --append        上传文件时,附加到目标文件  
     --basic         设置用户代理发送给服务器
     --cacert FILE   CA证书 (SSL)
     --capath DIR    CA目录 (SSL)
-E, --cert CERT[:PASSWD] 客户端证书文件和密码 (SSL)
     --cert-type TYPE 证书文件类型 (DER/PEM/ENG) (SSL)
     --ciphers LIST  SSL密码
     --compressed    要求返回是压缩的形势 (using deflate or gzip)
-K, --config FILE   指定的配置文件读取
     --connect-timeout SECONDS  设置最大请求时间
-C, --continue-at OFFSET  断点续转
-b, --cookie STRING/FILE  cookie字符串或文件读取位置
-c, --cookie-jar FILE  操作结束后把cookie写入到这个文件中
     --create-dirs   建立本地目录的目录层次结构
     --crlf          上传是把LF转变成CRLF
     --crlfile FILE  使用PEM格式从指定文件中读取证书列表
-d, --data DATA     HTTP POST方式传送数据
     --data-ascii DATA  以ascii的方式post数据
     --data-binary DATA  以二进制的方式post数据
     --data-urlencode DATA  HTTP POST data url encoded (H)
     --delegation STRING 设定用户认证等级标准
     --digest        使用数字身份验证  
     --disable-eprt  禁止使用EPRT或LPRT
     --disable-epsv  禁止使用EPSV
-D, --dump-header FILE  把header信息写入到该文件中
     --egd-file FILE  为随机数据(SSL)设置EGD socket路径
     --engine ENGINGE  加密引擎使用 (SSL). "--engine list" for list
-f, --fail          连接失败时不显示http错误
-F, --form CONTENT  模拟http表单提交数据
     --form-string STRING  模拟http表单提交数据
     --ftp-account DATA  设置FTP账号认证信息
     --ftp-alternative-to-user COMMAND  重新设置ftp认证用户名
     --ftp-create-dirs  如果远程目录不存在,创建远程目录
     --ftp-method [MULTICWD/NOCWD/SINGLECWD] 控制CWD的使用
     --ftp-pasv      使用 PASV/EPSV 代替端口
-P, --ftp-port ADR  使用端口地址,而不是使用PASV
     --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
     --ftp-pret      在PASV之前发送一个PRET命令
     --ftp-ssl-ccc   用户认证书后发送CCC
     --ftp-ssl-ccc-mode ACTIVE/PASSIVE  设置CCC模式
     --ftp-ssl-control 使用SSL/TLS方式登陆FTP
-G, --get           以get的方式来发送数据
-g, --globoff       禁用网址序列和范围使用{}和[]
-H, --header LINE   自定义头信息传递给服务器
-I, --head          只显示文档信息
-h, --help          帮助
     --hostpubmd5 MD5  发送md5加密的主机公钥
-0, --http1.0       使用HTTP 1.0
     --ignore-content-length  忽略的HTTP头信息的长度
-i, --include       输出时包括protocol头信息
-k, --insecure      允许不使用证书到SSL站点
     --interface INTERFACE  指定网络接口/地址使用
-4, --ipv4          使用IP4
-6, --ipv6          使用IP4
-j, --junk-session-cookies 读取文件进忽略session cookie
     --keepalive-time SECONDS  设定保持空闲的时间
     --key KEY       私钥文件名 (SSL)
     --key-type TYPE 私钥文件类型 (DER/PEM/ENG) (SSL)
     --krb LEVEL     启用与指定的安全级别krb4
     --libcurl FILE  Dump libcurl equivalent code of this command line
     --limit-rate RATE  设置传输速度
-l, --list-only     列出ftp目录下的文件名称
     --local-port RANGE  强制使用本地端口号
-L, --location      跟随URL跳转
     --location-trusted like --location and send auth to other hosts (H)
-M, --manual        显示全手动
     --mail-from FROM  Mail from this address
     --mail-rcpt TO  Mail to this receiver(s)
     --max-filesize  设置最大下载的文件总量
     --max-redirs NUM  设置最大读取的目录数
-m, --max-time SECONDS  设置最大传输时间
     --negotiate     使用HTTP身份验证
-n, --netrc         从netrc文件中读取用户名和密码
     --netrc-optional 使用 .netrc 或者 URL来覆盖-n
     --netrc-file FILE  Set up the netrc filename to use
-N, --no-buffer     禁用缓冲输出
     --no-keepalive  Disable keepalive use on the connection
     --no-sessionid  Disable SSL session-ID reusing (SSL)
     --noproxy       List of hosts which do not use proxy
     --ntlm          使用 HTTP NTLM 身份验证
-o, --output FILE   把输出写到该文件中
     --pass PASS     私钥密码 (SSL)
     --post301       Do not switch to GET after following a 301 redirect (H)
     --post302       Do not switch to GET after following a 302 redirect (H)
-#, --progress-bar  用进度条显示当前的传送状态
     --proto PROTOCOLS  Enable/disable specified protocols
     --proto-redir PROTOCOLS  Enable/disable specified protocols on redirect
-x, --proxy [PROTOCOL://]HOST[:PORT] 在给定的端口上使用HTTP代理
     --proxy-anyauth 选择任一代理身份验证方法
     --proxy-basic   在代理上使用基本身份验证
     --proxy-digest  在代理上使用数字身份验证
     --proxy-negotiate Use Negotiate authentication on the proxy (H)
     --proxy-ntlm    在代理上使用ntlm身份验证
-U, --proxy-user USER[:PASSWORD]  设置代理用户名和密码
     --proxy1.0 HOST[:PORT]  Use HTTP/1.0 proxy on given port
-p, --proxytunnel   使用HTTP代理
     --pubkey KEY    Public key file name (SSH)
-Q, --quote CMD     文件传输前,发送命令到服务器
     --random-file FILE  读取(SSL)的随机文件
-r, --range RANGE   检索来自HTTP/1.1或FTP服务器字节范围
     --raw           Do HTTP "raw", without any transfer decoding (H)
-e, --referer       来源网址
-J, --remote-header-name Use the header-provided filename (H)
-O, --remote-name   把输出写到该文件中,保留远程文件的文件名
     --remote-name-all Use the remote file name for all URLs
-R, --remote-time   在本地生成文件时,保留远程文件时间
-X, --request COMMAND  指定什么命令
     --resolve HOST:PORT:ADDRESS  Force resolve of HOST:PORT to ADDRESS
     --retry NUM   传输出现问题时,重试的次数
     --retry-delay 传输出现问题时,设置重试间隔时间
     --retry-max-time 传输出现问题时,设置最大重试时间
-S, --show-error    显示错误
-s, --silent        静音模式。不输出任何东西
     --socks4 HOST[:PORT]  用socks4代理给定主机和端口
     --socks4a HOST[:PORT]  用sock4a代理给定主机和端口
     --socks5 HOST[:PORT]  用socks5代理给定主机和端口
     --socks5-hostname HOST[:PORT] SOCKS5 proxy, pass host name to proxy
     --socks5-gssapi-service NAME  SOCKS5 proxy service name for gssapi
     --socks5-gssapi-nec  Compatibility with NEC SOCKS5 server
-Y, --speed-limit RATE  停止传输速度的限制,速度时间‘秒
-y, --speed-time SECONDS  放弃限速所要的时间。默认为30
     --ssl           Try SSL/TLS (FTP, IMAP, POP3, SMTP)
     --ssl-reqd      Require SSL/TLS (FTP, IMAP, POP3, SMTP)
-2, --sslv2         使用SSLv2的(SSL)
-3, --sslv3         使用SSLv3的(SSL)
     --stderr FILE   Where to redirect stderr. - means stdout
     --tcp-nodelay   使用TCP_NODELAY选项
-t, --telnet-option OPT=VAL  Telnet选项设置
     --tftp-blksize VALUE  Set TFTP BLKSIZE option (must be >512)
-z, --time-cond TIME  传送时间设置
-1, --tlsv1         使用TLSv1(SSL)
     --trace FILE    对指定文件进行debug
     --trace-ascii FILE  对指定文件进行debug,跟踪但没有hex输出
     --trace-time    跟踪/详细输出时,添加时间戳
     --tr-encoding   Request compressed transfer encoding (H)
-T, --upload-file FILE  上传文件
     --url URL       设定请求URL参数
-B, --use-ascii     使用ASCII /文本传输
-u, --user USER[:PASSWORD]  设置服务器的用户和密码
     --tlsuser USER  TLS username
     --tlspassword STRING TLS password
     --tlsauthtype STRING  TLS authentication type (default SRP)
-A, --user-agent STRING  设定发送给服务器的User-Agent
-v, --verbose       显示详尽的输出
-V, --version       显示版本信息
-w, --write-out FORMAT  什么输出完成后
     --xattr        Store metadata in extended file attributes
-q                 If used as the first parameter disables .curlrc

 

5.应用实例

1、请求URL,结果显示在标准输出屏幕上
curl http://www.lampblog.net/
curl --url http://www.lampblog.net/

2、把请求结果记录下来
curl -o page.html http://www.lampblog.net
curl http://www.lampblog.net > page.html

3、用option可以指定http访问所使用的proxy服务器及其端口
curl -x 123.45.67.89:1080 -o page.html http://www.lampblog.net

4、保存cookie信息到文件里
curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.lampblog.net

5、将cookie信息添加到http请求中
curl -D cookie0002.txt -b cookie0001.txt http://www.lampblog.net

6、浏览器信息
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" http://www.lampblog.net

7、设置来源页面referer
curl -e "mail.linuxidc.com" http://www.lampblog.net

8、开启gzip请求
curl -H Accept-Encoding:gzip,defalte http://www.sina.com.cn/

9、模拟POST表单方式请求
curl -d "birthyear=1905&press=OK" www.hotmail.com/when/junk.cgi

10、模拟POST表单提交文件
curl -F upload=@localfilename -F press=OK URL

11、使用PUT
curl -T uploadfile www.uploadhttp.com/receive.cgi

HTTP协议文件上传的标准方法是使用PUT,此时curl命令使用-T参数

12、curl处理认证页面
curl -u name:password www.secrets. com

13、代理服务器认证用户名和密码
curl -U proxyuser:proxypassword http://curl.haxx.se

14、采用本地证书认证
curl -E mycert.pem https://that.secure.server.com

15、跟踪重定向页面
curl -L http://www.gbin1.com/404

16、重用正测表达式下载多个页面
curl http://www.gbin1.com/bloghome.html?firstentry=[1-15]

17、读取头信息
curl --head http://www.gbin1.com/

18、把header信息写入到该文件中
curl --dump-header headers.txt http://www.gbin1.com/

19、请求FTP目录
curl ftp://username:password@gbin1.com/technology/
curl -u username:password ftp://gbin1.com/technology/

20、上传文件到FTP目录
curl -T uploadfilename -u username:password ftp://gbin1.com/somefilename

21、断点续传
curl -C http://www.sina.com.cn/

22、显示抓取错误
curl -f http://www.sina.com.cn/asdf

23、比较大的文件分段下载
curl -r 0-100 -o img.part1http://i2.f.itc.cn/thumb/180/bj/6018/b_60178154.jpg
curl -r 100-200 -o img.part2http://i2.f.itc.cn/thumb/180/bj/6018/b_60178154.jpg
curl -r 200- -o img.part3http://i2.f.itc.cn/thumb/180/bj/6018/b_60178154.jpg
cat img.part* >img.jpg

24、不显示下载进度信息
curl -s http://www.lampblog.net/aaa.jpg

25、显示下载进度信息
curl -# http://www.lampblog.net/aaa.jpg