Linux curl命令详解
关于
【转自:http://aiezu.com/article/linux_curl_command.html】
语法
curl [options] [URL...]
curl命令参数详解:
参数组 | 参数 | 描述 |
---|---|---|
url | url | 需要抓取的一到多个URLs;
支持多个通配符方式:
|
请求头 | -H "name: value"
--header "name: value" |
(HTTP)添加一个http header(http请求头); |
-H "name:"
--header "name:" |
(HTTP)移除一个http header(http请求头); | |
-A "string"
--user-agent "string" |
(HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。
| |
-e <URL>
--referer <URL> |
(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面;
| |
响应头 | -I
--head |
(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。
|
-i<
--include |
(HTTP)输出HTTP头和返回内容; | |
-D <file>
--dump-header <file> |
(HTTP)转储http响应头到指定文件; | |
cookie | -b name=data
--cookie name=data |
(HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2";
|
-c filename
--cookie-jar file name |
(HTTP)完成操作后将服务器返回的cookies保存到指定的文件;
| |
-j
--junk-session-cookies |
(HTTP)告诉curl放弃所有的"session cookies";
| |
代理 | -x host:port
-x [protocol://[user:pwd@]host[:port] --proxy [protocol://[user:pwd@]host[:port] |
使用HTTP代理访问;如果未指定端口,默认使用8080端口。
|
-p
--proxytunnel |
将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp; | |
--socks4 <host[:port]>
--socks4a <host[:port]> |
使用 SOCKS4 代理;
使用 SOCKS4A 代理;
| |
--proxy-anyauth
--proxy-basic |
http代理认证方式,参考:
| |
-U <user:password>
--proxy-user <user:password> |
设置代理的用户名和密码; | |
数据传输 | -G
--get |
如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,将附加在 url 上,以 GET 的方式请求; |
-d @file
-d "string" |
(HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded")
| |
-F name=@file
-F name=<file |
(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。
如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如:
如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com; | |
--form-string <key=value> | (HTTP)类似于“--form”,但是“@”、“<”无特殊含义; | |
-T file
--upload-file file |
通过“put”的方式将文件传输到远程网址;
| |
断点续传 | -C <offset>
--continue-at <offset> |
断点续转,从文件头的指定位置开始继续下载/上传;
|
-r <range>
--range <range> |
(HTTP/FTP/SFTP/FILE) 只传输内容的指定部分:
| |
认证 | --basic | (HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时)。
|
--ntlm | (HTTP)使用NTLM身份验证方式,用于HTTP协议;
| |
--digest | (HTTP)使用HTTP Digest authentication加密,用于HTTP协议;
| |
--negotiate | (HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议;
| |
--anyauth | (HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式; | |
-u user:password
--user user:password |
使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项;
| |
证书 | -E <证书[:密码]>
--cert <证书[:密码]> |
(SSL)指定“PEM”格式的证书文件和证书密码; |
--cert-type <type> | (SSL)告诉curl所提供证书的类型:PEM、DER、ENG等;
| |
--cacert <CA证书> | (SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式; | |
--capath <CA证书路径> | (SSL)告诉curl所以指定目录下的CA证书用来验证;
| |
--crlfile <file> | (HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表; | |
-k
--insecure |
(SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。 | |
SSL其他 | --ciphers <list of ciphers> | (SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”; |
--engine <name> | 设置一个OpenSSL加密引擎用于加密操作;
| |
--random-file | (SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为; | |
--egd-file <file> | (SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名; | |
-1/--tlsv1
--tlsv1.0 |
(SSL)使用 TLS版本2 与远程服务器通讯; (SSL)使用 TLS 1.0 版本与远程服务器通讯; | |
私钥公钥 | --key <key> | (SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、“./id_dsa”; |
--key-type <type> | (SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM; | |
--pass <phrase> | (SSL/SSH)指定私钥文件的密码; | |
--pubkey <key> | (SSH)使用指定文件提供的您公钥; | |
FTP | -P
--ftp-port <接口> |
(FTP)FTP主动模式时,设置一个地址等待服务器的连接,如:
网卡: |
--crlf | (FTP)上传时将换行符(LF)转换为回车换行(CRLF); | |
--ftp-account [data] | (FTP)ftp帐号信息; | |
--ftp-method [method] | (FTP)可选值:multicwd / nocwd / singlecwd; | |
--ftp-pasv | (FTP)使用使用PASV(被动)/EPSV模式; | |
--ftp-skip-pasv-ip | (FTP)使用PASV的时,跳过指定IP; | |
--ftp-create-dirs | (FTP)上传时自动创建远程目录; | |
-l
--list-only |
(FTP)列出ftp文件列表; | |
-B
--use-ascii |
(FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。 | |
--disable-epsv | (FTP)告诉curl在PASV(被动模式)时不要使用EPSV; | |
--disable-eprt | (FTP)告诉curl在主动模式时禁用EPRT和LPRT; | |
限速 | --limit-rate <speed> | 限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”。
|
-y
--speed-time <time> |
如果在一个快速时间内,下载速度低于每秒速度限制字节数,则下载将中止。
| |
-Y
--speed-limit <speed> |
如果下载速度低于此给定速度(以字节/秒为单位)达数秒,则会中止下载。
| |
其他选项 | -0/--http1.0 | (HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1; |
--interface <name> | 使用指定的网卡接口访问;
| |
-X <command>
--request <command> |
(HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET; | |
--keepalive-time <seconds> | 设置keepalive时间 | |
--no-keepalive | 关闭keepalive功能; | |
--no-buffer | 禁用对输出流缓冲; | |
--buffer | 启用输出流缓冲; | |
-L
--location |
(HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面;
(在http响应码为3XX时使用,如301跳转、302跳转) | |
--location-trusted | (HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码; | |
--compressed | (HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压; | |
--connect-timeout <seconds> | 指定最大连接超时,单位“秒”; | |
-m seconds
--max-time seconds |
限制整个curl操作的最长时间,单位为秒; | |
-s
--silent |
安静模式。不要显示进度表或错误消息; | |
-#
--progress-bar |
显示进度条; | |
错误选项 | -f
--fail |
(HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”; |
--retry <num>
--retry-delay <seconds> |
失败重试次数;
重试间隔时间; | |
-S
--show-error |
安静模式下显示错误信息; | |
--stderr <file> | 错误信息保存文件; | |
输出 | -o file
--output file |
将返回内容输出到文件。
|
-O
--remote-name |
将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录); | |
--create-dirs | 与“-o”参数配合使用,创建必要的本地目录层次结构 | |
-w
--write-out format |
操作完成后在返回信息尾部追加指定的内容;
| |
调试 | -trace <file> | 转储所有传入和传出的数据到文件,包括描述信息;
|
--trace-ascii file | 转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读;
| |
--trace-time | 转储文件中添加时间信息; | |
-K
--config <config file> |
从配置文件中读取参数。 | |
-v
--verbose |
显示更详细的信息,调试时使用; | |
帮助 | -M
--manual |
显示完整的帮助手册; |
-h
--help |
linux curl用法帮助; |
命令 | 描述 |
---|---|
相关方法: