查看“Linux curl命令详解”的源代码
←
Linux curl命令详解
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:curl]] == 关于 == 【转自:'''[http://aiezu.com/article/linux_curl_command.html http://aiezu.com/article/linux_curl_command.html]'''】 == 语法 == <syntaxhighlight lang="bash" highlight=""> curl [options] [URL...] </syntaxhighlight> == curl命令参数详解: == {| class="wikitable" style="width:70%;" |- ! style="width:10%;" | 参数组 ! style="width:35%;" | 参数 ! style="width:55%;" | 描述 |- | rowspan="1" | url | url | rowspan="1" | 需要抓取的一到多个URLs; 支持多个通配符方式: # <syntaxhighlight lang="http" inline>http://{www,ftp,mail}.aiezu.com</syntaxhighlight> # <syntaxhighlight lang="http" inline>http://aiezu.com/images/[001-999].jpg</syntaxhighlight> # <syntaxhighlight lang="http" inline>http://aiezu.com/images/[1-999].html</syntaxhighlight> # <syntaxhighlight lang="http" inline>ftp://aiezu.com/file[a-z].txt</syntaxhighlight> |- | rowspan="4" | 请求头 | -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”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。 * 也可以使用<code>-H</code>,<code>--header option</code>设置此选项; |- | -e <URL> --referer <URL> | (HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面; * <code>-e "xxx.com"</code>相当于<code>-H "Referer: www.xxx.com"</code>; |- | rowspan="3" | 响应头 | -I --head | (HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。 * 用于HTTP服务时,获取页面的http头; *:(如:<code>curl -I http://aiezu.com</code>) * 用于FTP/FILE时,将会获取文件大小、最后修改时间; *:(如:<code>curl -I file://test.txt</code>) |- | -i< --include | (HTTP)输出HTTP头和返回内容; |- | -D <file> --dump-header <file> | (HTTP)转储http响应头到指定文件; |- | rowspan="3" | cookie | -b name=data --cookie name=data | (HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2"; * 如果行中没有“=”,将把参数值当作cookie文件名; * 这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的; |- | -c filename --cookie-jar file name | (HTTP)完成操作后将服务器返回的cookies保存到指定的文件; * 指定参数值为“-”将定向到标准输出“如控制台”; |- | -j --junk-session-cookies | (HTTP)告诉curl放弃所有的"session cookies"; * 相当于重启浏览器; |- | rowspan="5" | 代理 | -x host:port -x [protocol://[user:pwd@]host[:port] --proxy [protocol://[user:pwd@]host[:port] | 使用HTTP代理访问;如果未指定端口,默认使用8080端口。 * protocol默认为http_proxy,其他可能的值包括:http_proxy、HTTPS_PROXY、socks4、socks4a、socks5; *: 如: *: --proxy 8.8.8.8:8080; *: -x "http_proxy://aiezu:123@aiezu.com:80" |- | -p --proxytunnel | 将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp; |- | --socks4 <host[:port]> --socks4a <host[:port]><br/> --socks5 <host[:port]> | 使用 SOCKS4 代理; 使用 SOCKS4A 代理;<br/> 使用 SOCKS5 代理;<br/> * 此参数会覆盖“-x”参数; |- | --proxy-anyauth --proxy-basic<br/> --proxy-diges<br/> --proxy-negotiate<br/> --proxy-ntlm | http代理认证方式,参考: : --anyauth : --basic : --diges : --negotiate : --ntlm |- | -U <user:password> --proxy-user <user:password> | 设置代理的用户名和密码; |- | rowspan="5" | 数据传输 | -G --get | 如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,将附加在 url 上,以 GET 的方式请求; |- | -d @file -d "string"<br/> --data "string"<br/> --data-ascii "string"<br/> --data-binary "string"<br/> --data-urlencode "string" | (HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded") : -d,--data:HTTP方式 POST 数据; : --data-ascii:HTTP方式 POST ascii数据; : --data-binary:HTTP方式 POST 二进制数据; : --data-urlencode:HTTP方式 POST 数据(进行urlencode); * 如果数据以“'''@'''”开头,后紧跟一个文件,将post文件内的内容; |- | -F name=@file -F name=<file<br/> -F name=content<br/> --form name=content<br/> | (HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。 如果字段内容以“'''@'''”开头,剩下的部分应该是文件名,curl将会上传此文件,如: : <code>curl -F "pic=@pic.jpg" http://aiezu.com;</code> : <code>curl -F "page=@a.html;type=text/html" http://aiezu.com</code> : <code>curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com</code> 如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com; |- | --form-string <key=value> | (HTTP)类似于“--form”,但是“@”、“<”无特殊含义; |- | -T file --upload-file file | 通过“put”的方式将文件传输到远程网址; * 选项参数只使用字符"'''-'''",将通过stdin读入文件内容; *: 如: *: <code>cat test.txt|curl "http://aiezu.com/a.php" -T -</code> *: <code>curl "http://aiezu.com/a.php" -T - <test.txt</code> * 此参数也可以使用通配符: *: <code>curl -T "{file1,file2}" http://aiezu.com</code> *: <code>curl -T "img[1-1000].png" http://aiezu.com</code> |- | rowspan="2" | 断点续传 | -C <offset> --continue-at <offset> | 断点续转,从文件头的指定位置开始继续下载/上传; * offset续传开始的位置,如果offset值为“'''-'''”,curl会自动从文件中识别起始位置开始传输; |- | -r <range> --range <range> | (HTTP/FTP/SFTP/FILE) 只传输内容的指定部分: : 0-499:最前面500字节; : -500:最后面500字节; : 9500-:最前面9500字节; : 0-0,-1:最前面和最后面的1字节; : 100-199,500-599:两个100字节; |- | rowspan="6" | 认证 | --basic | (HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时)。 * 这是默认认证方式; |- | --ntlm | (HTTP)使用NTLM身份验证方式,用于HTTP协议; * 一般用于IIS使用NTLM的网站; |- | --digest | (HTTP)使用HTTP Digest authentication加密,用于HTTP协议; * 配合“<code>-u/--user</code>”选项,防止密码使用明文方式发送; |- | --negotiate | (HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议; * 它主要目的是为它的主要目的是为 kerberos5 认证提供支持支持; |- | --anyauth | (HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式; |- | -u user:password --user user:password | 使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项; * 如果你只提供用户名,curl将要求你输入密码; * 如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证; * 此参数相当于设置http头“Authorization:”; |- | rowspan="6" | 证书 | -E <证书[:密码]> --cert <证书[:密码]> | (SSL)指定“PEM”格式的证书文件和证书密码; |- | --cert-type <type> | (SSL)告诉curl所提供证书的类型:PEM、DER、ENG等; * 默认为“PEM”; |- | --cacert <CA证书> | (SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式; |- | --capath <CA证书路径> | (SSL)告诉curl所以指定目录下的CA证书用来验证; * 这些证书必须是“PEM”格式; |- | --crlfile <file> | (HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表; |- | -k --insecure | (SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。 |- | rowspan="5" | SSL其他 | --ciphers <list of ciphers> | (SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”; |- | --engine <name> | 设置一个OpenSSL加密引擎用于加密操作; * 使用“curl --engine list”查看支持的加密引擎列表; |- | --random-file | (SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为; |- | --egd-file <file> | (SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名; |- | -1/--tlsv1 --tlsv1.0<br/> --tlsv1.1<br/> --tlsv1.2<br/> -2/--sslv2<br/> -3/--sslv3<br/> | (SSL)使用 TLS版本2 与远程服务器通讯;<br/> (SSL)使用 TLS 1.0 版本与远程服务器通讯;<br/> (SSL)使用 TLS 1.1 版本与远程服务器通讯;<br/> (SSL)使用 TLS 1.2 版本与远程服务器通讯;<br/> (SSL)使用 SSL版本2 与远程服务器通讯;<br/> (SSL)使用 SSL版本3 与远程服务器通讯;<br/> |- | rowspan="4" | 私钥公钥 | --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)使用指定文件提供的您公钥; |- | rowspan="11" | FTP | -P --ftp-port <接口> | (FTP)FTP主动模式时,设置一个地址等待服务器的连接,如: 网卡:<code>eth1</code> IP:<code>8.8.8.8</code> 主机名:<code>xxx.com</code> 可以加端口号:<code>eth1:20000-21000;</code> |- | --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; |- | rowspan="3" | 限速 | --limit-rate <speed> | 限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”。 * 你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”; |- | -y <nowiki>--speed-time <time></nowiki> | 如果在一个快速时间内,下载速度低于每秒速度限制字节数,则下载将中止。 * 如果使用<code>speed-time</code>,默认速度限制将为 1,则除非使用<code>-Y</code>设置。 * 该选项控制传输,因此不会影响慢速连接等。如果您对此感到担忧,请尝试<code>--connect-timeout</code>选项。 |- | -Y --speed-limit <speed> | 如果下载速度低于此给定速度(以字节/秒为单位)达数秒,则会中止下载。 <code>speed-time</code>使用<code>-y</code>设置,如果未设置,则为30。 |- | rowspan="14" | 其他选项 | -0/--http1.0 | (HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1; |- | --interface <name> | 使用指定的网卡接口访问; : <code>curl --interface eth0 http://xxx.com</code> : <code>curl --interface 10.0.0.101 http://xxx.com</code> |- | '''-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 | 显示进度条; |- | rowspan="4" | 错误选项 | -f --fail | (HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”; |- | --retry <num> --retry-delay <seconds><br/> --retry-max-time <seconds> | 失败重试次数; 重试间隔时间;<br/> 最大重试时间; |- | -S --show-error | 安静模式下显示错误信息; |- | --stderr <file> | 错误信息保存文件; |- | rowspan="4" | 输出 | -o file --output file | 将返回内容输出到文件。 * 如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如: *: <code>curl "http://xxx.com/{a,b}.txt" -o "#1.txt";</code> *: 将保存为:“a.txt”,“b.txt”; *: <code>curl "http://xxx.com/{a,b}_[1-3].txt" -o "#1#2.txt";</code> *: 将保存为:a1.txt、a2.txt、a3.txt、b1.txt、b2.txt、b3.txt * 如果要根据规则创建保存目录,参考:“--create-dirs” * 指定“-”将定向到标准输出“如控制台”; |- | -O --remote-name | 将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录); |- | --create-dirs | 与“-o”参数配合使用,创建必要的本地目录层次结构 |- | -w --write-out format | 操作完成后在返回信息尾部追加指定的内容; * 要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-”; * 格式参数中可以用%{variable_name} 方式使用响应信息的相关变量; *: 如:<code>%{content_type}</code>、<code>%{http_code}</code>、<code>%{local_ip}</code>... *: 更多变量参考“man curl”获取; * 格式参数可以使用“\n”、“\r”、“\t”等转义字符; |- | rowspan="5" | 调试 | -trace <file> | 转储所有传入和传出的数据到文件,包括描述信息; * 使用“'''-'''”作为文件名将输出发送到标准输出。 |- | --trace-ascii file | 转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读; * 使用“'''-'''”作为文件名将输出发送到标准输出。 * 这个选项会覆盖之前使用的 <code>-v</code>、 <code>--verbose</code>、 <code>--trace-ascii</code> 选项; |- | --trace-time | 转储文件中添加时间信息; |- | -K --config <config file> | 从配置文件中读取参数。 * 参考:http://curl.haxx.se/docs/ |- | '''-v''' --verbose | 显示更详细的信息,调试时使用; |- | rowspan="2" | 帮助 | -M --manual | 显示完整的帮助手册; |- | -h --help | linux curl用法帮助; |} <syntaxhighlight lang="bash" highlight=""> </syntaxhighlight> {| class="wikitable" ! 命令 !! 描述 |- | | |- | | |} -------------------------------------------------------- '''相关方法:'''
返回至“
Linux curl命令详解
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息