首页 > 代码库 > 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、设置来源页面referercurl -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、使用PUTcurl -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