Curl
时间 : 2017-04-20 16:14:22
参考:
curl 命令介绍#
用于和网络服务器进行通信、数据下载等。
curl 语法#
选项
-v
: 输出通信的整个过程。-o, --output <file>
: 把获取到的数据都写入到文件中。-O, --remote-name
: 使用服务器上的文件名字保存本地文件。-s, --silent
: 安静模式,不显示进度条或错误信息。-S, --show-error
: 当使用-s
模式的时候,使用-S
可以显示错误信息。--limit-rate <speed>
: 限制下载速度,速度单位(B,K,M,G)。-L
: 如果网页的Header里面指定重定向地址,请求会重定向到指定的地址。-c,--cookie-jar <file name>
:把操作完成之后的 cookie 写入到指定文件。如果文件名是-
cookie 将写入到控制台。-C,--continue-at <offset>
: 断点续传,-C -
自动查找中断点。-z,--time-cond <date expression>|<file>
:获取一个文件,这个文件的变更时间在给定时间之后或之前,默认之后,如果没有匹配日期表达式,则会以表达式为名字获取对应文件的修改日期。时间表达式以-
开头,获取变更时间在给定时间前的文件。-y,--speed-time <time>
:如果下载速度小于speed-limit
的时间超过指定时间,则停止下载。如果speed-limit
没有设置则为1。-Y,--speed-limit <speed>
: 如果下载速度小于指定速度(bytes per second),并且下载时间超过speed-time
指定的时间,则终止下载。如果speed-time
没有设置则为30。-u,--user <username:password;options>
:指定用户明和密码登录,如果密码没有指定,后面会询问。-x,--proxy <[protocol://][user:password@]proxyhost[:port]>
:代理访问。-d,--data
: Post请求发送指定的数据到服务器。使用'-d name=daniel -d skill=lousy'
将发送name=daniel&skill=lousy
。如果data以字母@开头,将会从对应的文件中读取。-D,--dump-header <file>
:把协议头信息写入指定文件。-b,--cookie <name=data>
:吧数据当成cookie发送给服务器,如果没有=
号,则会从文件中读取。-A,--user-agent <agent string>
: 用户代理,什么类型的浏览器。-I, --head
: 只获取HTTP响应头
curl 具体使用#
-
请求指定网址,请求内容显示在命令行。
-
GET 请求
-
GET 请求,加参数
-
POST 请求,
-d
指定参数。Content-Type: application/x-www-form-urlencoded
-
POST 请求,
--data-urlencode
URL Encode 参数。Content-Type: application/x-www-form-urlencoded
-
POST 请求,
form-data
, -F 指定参数。Content-Type: multipart/form-data
-
POST 请求, 发送JSON参数。
Content-Type: application/json
-
POST 请求,上传文件。
Content-Type: multipart/form-data
-
Header 请求
-
指定代代理头
-
发送Cookie
-
设置 Referer
-
添加HEADER
-
显示响应的HTTP头
-
跳过ssl检测
-
支持重定向
-
限制带宽
-
把网址内容保存到指定文件中。
-
使用服务器上的文件名自动保存在本地,(如果文件在服务器不是以文件存在,则会出错)。
-
从ftp服务器下载文件
-
上传文件
-
查询单词意思或翻译
-
统计HTTP请求各阶段接口耗时
curl -w "\n\n\n\n\n响应:\n url_effective: %{url_effective} error_msg: %{errormsg} exit_code: %{exitcode} content_type: %{content_type} http_code: %{http_code} http_connect: %{http_connect} http_version: %{http_version} local_ip: %{local_ip} remote_ip: %{remote_ip} remote_port: %{remote_port} response_code: %{response_code} size_request: %{size_request} \tbyte size_download: %{size_download} \tbyte size_header: %{size_header} \tbyte size_upload: %{size_upload} \tbyte speed_download: %{speed_download} \tbyte/s speed_upload: %{speed_upload} \tbyte/s time_namelookup: %{time_namelookup} s (DNS 域解析耗时) time_connect: %{time_connect} s (TCP 三次握手耗时) time_appconnect: %{time_appconnect} s (SSL/SSH 等上层协议建立连接) time_redirect: %{time_redirect} s (重定向步骤耗时) time_pretransfer: %{time_pretransfer} s (从请求开始到向服务器发送第一个 GET/POST 请求开始之前的耗时) time_starttransfer: %{time_starttransfer} s (从请求开始到第一个字节将要传输的时> 间) ---------- time_total: %{time_total} s (从请求开始到完成的总耗时) ------------------------------------------------------------------ 备注: DNS 解析查询时间:time_namelookup TCP 建立连接时间:time_connect - time-namelookup 服务器处理时间:time_starttransfer - time_pretransfer 内容传输时间:time_total - time_starttransfer\n" -S -s -L -k -o /dev/null https://www.baidu.com
等价命令,可以把输出内容写到文件中:
1 |
|
url_effective: %{url_effective}\n
error_msg: %{errormsg}\n
exit_code: %{exitcode}\n
content_type: %{content_type}\n
http_code: %{http_code}\n
http_connect: %{http_connect}\n
http_version: %{http_version}\n
local_ip: %{local_ip}\n
remote_ip: %{remote_ip}\n
remote_port: %{remote_port}\n
response_code: %{response_code}\n
size_request: %{size_request} \tbyte\n
size_download: %{size_download} \tbyte\n
size_header: %{size_header} \tbyte\n
size_upload: %{size_upload} \tbyte\n
speed_download: %{speed_download} \tbyte/s\n
speed_upload: %{speed_upload} \tbyte/s\n
time_namelookup: %{time_namelookup} s (DNS 域解析耗时)\n
time_connect: %{time_connect} s (TCP 三次握手耗时)\n
time_appconnect: %{time_appconnect} s (SSL/SSH 等上层协议建立连接)\n
time_redirect: %{time_redirect} s (重定向步骤耗时)\n
time_pretransfer: %{time_pretransfer} s (从请求开始到向服务器发送第一个 GET/POST 请求开始之前的耗时
)\n
time_starttransfer: %{time_starttransfer} s (从请求开始到第一个字节将要传输的时间)\n
----------\n
time_total: %{time_total} s (从请求开始到完成的总耗时)\n
------------------------------------------------------------------\n
备注:\n
DNS 解析查询时间:time_namelookup\n
TCP 建立连接时间:time_connect - time-namelookup\n
服务器处理时间:time_starttransfer - time_pretransfer\n
内容传输时间:time_total - time_starttransfer\n