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-urlencodeURL 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