该命令行选项将激活cookie引擎,使curl记录并使用cookies 。激活它的另一种方法是使用 -b, --cookie 选项 。
如果不能创建或写入cookie jar,那么整个curl操作就不会失败,甚至不能清楚地报告错误 。使用 -v 会得到一个警告,但这是你得到的关于这种可能致命的情况的唯一可见反馈 。
如果多次使用此选项,将使用最后指定的文件名 。
--connect-timeout <seconds>连接服务端的超时时间 。这只限制了连接阶段,一旦curl连接了此选项就不再使用了 。
也可参见:-m, --max-time 选项 。
1 # 当前 https://www.zhangXX.com 是国外服务器,访问受限2 [root@iZ28xbsfvc4Z ~]# curl --connect-timeout 10 https://www.zhangXX.com | head3% Total% Received % XferdAverage SpeedTimeTimeTimeCurrent4DloadUploadTotalSpentLeftSpeed500000000 --:--:--0:00:10 --:--:--06 curl: (28) Connection timed out after 10001 milliseconds
--create-dirs当与 -o 选项一起使用时,curl将根据需要创建必要的本地目录层次结构 。
这个选项只创建与 -o 选项相关的dirs,没有其他内容 。如果 -o 文件名没有使用dir,或者其中提到的dir已经存在,则不会创建dir 。
示例
curl -o ./hexo04/index.html --create-dirs http://www.zhangblog.com/2019/06/16/hexo04
-C, --continue-at <offset>按给定偏移量继续/恢复以前的文件传输 。给定的偏移量是将被跳过的确切字节数,从源文件的开头开始计算,然后再将其传输到目标文件 。
使用 “-C -“「注意有空格和无空格的情况」,告诉curl自动找出在哪里/如何恢复传输 。然后,它使用给定的输出/输入文件来解决这个问题 。
1 # 下载一个 2G 的文件,可以反复测试,查看结果2 curl -C - -o tmp.data http://www.zhangblog.com/uploads/tmp/tmp.data
-d, --data <data>使用该选项,那么默认请求方式为 POST 。(HTTP)在POST请求中向HTTP服务器发送指定的数据,与浏览器在用户填写HTML表单并按下submit按钮时所做的相同 。这将导致curl使用content-type application/x-www-form-urlencoded将数据传递给服务器 。也可参见:-F,-form。
如果这些命令在同一个命令行使用多次,这些数据片段将使用指定的分隔符 & 合并 。因此,使用 ‘-d name=daniel -d skill=lousy’ 将生成一个类似 ‘name=daniel&skill=lousy’ 的post块,也可以直接这样合并使用 。
-d, --data 与 --data-ascii 相同 。post数据为纯粹的二进制数据时,那么使用 --data-binary 选项 。要对表单字段的值进行url编码,可以使用 --data-urlencode 。
如果您以字母@开始数据,那么其余的应该是一个文件名,以便从其中读取数据 。或者 - 如果您希望curl从stdin【标准输入】读取数据 。文件的内容必须已经是url编码的 。还可以指定多个文件 。因此,Posting数据名为 “foobar” 的文件将使用 --data @foobar 完成 。
示例
请求信息:
1 [root@iZ28xbsfvc4Z 20190712]# curl -sv --local-port 9000 -d 'user=zhang&pwd=123456' http://www.zhangblog.com/2019/06/24/domainexpire/ | head -n12 * About to connect() to www.zhangblog.com port 80 (#0) 3 *Trying 120.27.48.179... 4 * Local port: 9000 5 * Connected to www.zhangblog.com (120.27.48.179) port 80 (#0) 6 > POST /2019/06/24/domainexpire/ HTTP/1.1# 可见请求方式为POST 7 > User-Agent: curl/7.29.0 8 > Host: www.zhangblog.com 9 > Accept: */*10 > Content-Length: 2111 > Content-Type: application/x-www-form-urlencoded12 > 13 } [data not shown]14 * upload completely sent off: 21 out of 21 bytes15 < HTTP/1.1 405 Not Allowed16 < Server: Nginx/1.14.217 < Date: Fri, 12 Jul 2019 13:34:20 GMT18 < Content-Type: text/html19 < Content-Length: 17320 < Connection: keep-alive21 < 22 { [data not shown]23 * Connection #0 to host www.zhangblog.com left intact24 <html>
抓包信息
[root@iZ28xbsfvc4Z tcpdump]# tcpdump -i any port 9000 -A -s 0
文章插图
--data-ascii <data>参见 -d, --data
--data-binary <data>(HTTP) POST数据完全按照指定的方式,没有任何额外的处理 。
如果您以字母@开始数据,其余的应该是文件名 。数据是以类似于 --data-ascii 的方式发布的,只不过保留了换行,而且永远不会进行转换【数据不转换】 。
如果多次使用此选项,第一个选项后面的选项将按照 -d, --data 中的描述追加数据 。
--data-urlencode <data>(HTTP)这个Post 数据,与另一个 --data 选项类似,除执行url编码以外 。
-D, --dump-header <file>将响应协议头写入指定的文件 。
推荐阅读
- CentOS命令行修改IP地址
- linux 调优各项监控指标
- 图解Linux的IO模型和相关技术
- Linux技巧:介绍设置定时周期执行任务的方法
- linux awk使用方法
- 9种最佳Microsoft Windows CMD黑客命令
- Linux中10大常用命令之sort使用案例
- 你对Linux文件的色码知多少?
- 在 Linux 上使用开源软件创建 SDN
- 浅谈Linux中一切皆文件