Linux curl 命令详解( 三 )


如果多次使用此选项,则将使用最后一个选项 。
当你想要存储HTTP站点发送给你的头文件时,使用此选项非常方便 。
1 [root@iZ28xbsfvc4Z 20190703]# curl -D baidu_header.info www.baidu.com 2 ………………3 [root@iZ28xbsfvc4Z 20190703]# ll4 total 45 -rw-r--r-- 1 root root 400 Jul3 10:11 baidu_header.info# 生成的头文件之后第二次curl调用通过 -b, --cookie 选项,可以从头部读取 cookies。然而 -c, --cookie-jar 选项是存储 cookies 更好的方法 。
常用选项三--digest(HTTP)启用HTTP摘要身份验证 。这是一种身份验证方案,可以防止密码以明文通过网络发送 。将此选项与普通的 -u, --user 选项组合使用,以设置用户名和密码 。相关选项请参见 --ntlm, --negotiate 和 --anyauth 。
如果多次使用此选项,则只使用第一个选项 。
-e, --referer <URL>(HTTP)将 “Referer Page” 【从哪个页面跳转过来的】信息发送到HTTP服务器 。当然也可以使用 -H, --header 标志来设置 。
如果多次使用此选项,则将使用最后一个选项 。
curl -e 'https:www.baidu.com' http://www.zhangblog.com/2019/06/24/domainexpire/-f, --fail(HTTP)在服务器错误上静默失败(完全没有输出) 。这主要是为了使脚本等更好地处理失败的尝试 。
在通常情况下,当HTTP服务器无法交付文档时,它会返回一个HTML文档,说明原因(通常还会描述原因) 。此标志将阻止curl输出该值并返回错误22 。
【Linux curl 命令详解】 1 [root@iZ28xbsfvc4Z 20190713]# curl http://www.zhangblog.com/201912312 2 <html> 3 <head><title>404 Not Found</title></head> 4 <body bgcolor="white"> 5 <center><h1>404 Not Found</h1></center> 6 <hr><center>nginx/1.14.2</center> 7 </body> 8 </html> 9 [root@iZ28xbsfvc4Z 20190713]# curl -f http://www.zhangblog.com/20191231210 curl: (22) The requested URL returned error: 404 Not Found-F, --form <name=content>(HTTP)这允许curl模拟用户按下submit按钮后填充的表单 。
该情况让curl 可使用Content-Type multipart/form-data POST数据 。也可以上传二进制文件等 。
@文件名:使一个文件作为文件上传附加在post中 。<文件名:从文件中获取该文本字段的内容 。
例如,要将密码文件发送到服务器,其中“password”是表单字段的名称,/etc/passwd将作为输入:
curl -F password=@/etc/passwd www.mypasswords.com 
您还可以使用 ‘type=’ 告诉curl使用什么 Content-Type,方法类似于:
curl -F "web=@index.html;type=text/html" url.com或curl -F "name=daniel;type=text/foo" url.com 
可以通过设置 filename= 更改本地上传的文件名,如下:
curl -F "file=@localfile;filename=nameinpost" url.com上传的文件名从改为了 nameinpost
如果文件名/路径包括 ‘,’ 或 ‘;’,必须用双引号括起来:
curl -F "file=@"localfile";filename="nameinpost"" url.com或curl -F 'file=@"localfile";filename="nameinpost"' url.com最外层可用单引号或双引号 。
这个选项可以多次使用 。
 
请勿如下使用
curl -F 'user=zhang&password=pwd' url.com# 这种用法是错误的 
--form-string <name=string>(HTTP)类似于 --form,只是命名参数的value字符串按字面意思使用 。在值中以 ‘@’ 和 ‘<’ 开头的字符,以及 ‘;type=’ 字符串没有特殊的含义 。
如果字符串值有可能意外触发 --form 的 “@” 或 “<” 特性,请优先使用此选项 。
-g, --globoff这个选项关闭了“URL全局解析器” 。当您设置这个选项时,您可以指定包含字母 {}[] 的url,而不需要curl本身来解释它们 。
注意,这些字母不是正常的合法URL内容,但是它们应该按照URI标准进行编码 。
-G, --get使用此选项时,将使所有使用 -d, --data 或 --data-binary 指定的数据在HTTP GET请求中使用,而不是在POST请求中使用 。数据将被追加到URL的一个 ‘?’ 的分隔符后 。
如果与 -I 结合使用,POST数据将被替换追加到带有HEAD请求的URL中 。
如果多次使用此选项,则只使用第一个选项 。
示例
1 [root@iZ28xbsfvc4Z 20190712]# curl -sv -G --local-port 9000 -d 'user=zhang&pwd=123456' http://www.zhangblog.com/2019/06/24/domainexpire/ | head -n12 或则 3 [root@iZ28xbsfvc4Z 20190713]# curl -sv --local-port 9000 "http://www.zhangblog.com/2019/06/24/domainexpire/?user=zhang&pwd=123456" | head -n1 4 * About to connect() to www.zhangblog.com port 80 (#0) 5 *Trying 120.27.48.179... 6 * Local port: 9000 7 * Connected to www.zhangblog.com (120.27.48.179) port 80 (#0) 8 > GET /2019/06/24/domainexpire/?user=zhang&pwd=123456 HTTP/1.1# 可见请求方式为 GET,且参数追加到了URI后 9 > User-Agent: curl/7.29.010 > Host: www.zhangblog.com11 > Accept: */*12 > 13 < HTTP/1.1 200 OK14 < Server: nginx/1.14.215 < Date: Fri, 12 Jul 2019 14:04:19 GMT16 < Content-Type: text/html17 < Content-Length: 5138518 < Last-Modified: Tue, 09 Jul 2019 13:55:19 GMT19 < Connection: keep-alive20 < ETag: "5d249cc7-c8b9"21 < Accept-Ranges: bytes22 < 23 { [data not shown]24 * Connection #0 to host www.zhangblog.com left intact25 <!DOCTYPE html>


推荐阅读