curl命令行工具---常用方法总结

一.What is curl? (http://curl.haxx.se)

curl is a command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and more.

二.curl常用方法

1.curl --help or curl --manual :查看基本功能

2.显示http请求报文头和响应报文头和返回结果:curl -v 

curl -v http://curl.haxx.se

3.basic认证:curl -u

curl -u username:password http://i.api.weibo.com

4.http get: curl  [URL]?args

参数:birthyear=1905&press=OK

curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"

5.http post: curl -d "args"  [URL]

参数:birthyear=1905&press=%20OK%20, 

%20代表空格:

url编码,对于每个字节,可以用%后面跟ASCII码十六进制, 空格的ASCII码十六进制为0x20;空格也可以用+表示。

curl -d "birthyear=1905&press=%20OK%20" www.hotmail.com/when/junk.cgi

6.File Upload post:curl -F 

curl -F upload=@localfilename -F press=OK  [URL]

7.HTTP PUT: curl -T

curl -T uploadfile [URL]

8.模拟用户代理:curl -A

 curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL]

9.调试 curl --trace-ascii

curl -u user:pwd [URL] --trace-ascii content.log

查看content.log

10.自定义头信息传递给服务器: curl -H "key:value"

curl -H " key:value" [URL]

11.  输出文件

-o/--output 将结果输出到特定文件

-O/--remote-name 把远程文件输出到本目录下

curl  http://10.13.1.139:54321 -o 1.txt

curl -O http://avatar.csdn.net/0/C/F/1_neven7.jpg

12.指定请求命令

-X/--request 指定命令

curl -X GET http://10.13.1.139:54321

13.-w write-out 

在一次完整且成功的操作后输出指定格式的内容到标准输出

url_effective 最终获取的url地址,尤其是当你指定给curl的地址存在301跳转,且通过-L继续追踪的情形。

http_code http状态码,如200成功,301转向,404未找到,500服务器错误等。(The numerical response code that was found in the last retrieved HTTP(S) or FTP(s) transfer. In 7.18.2 the alias response_code was added to show the same info.)

http_connect The numerical code that was found in the last response (from a proxy) to a curl CONNECT request. (Added in 7.12.4)

time_total 总时间,按秒计。精确到小数点后三位。 (The total time, in seconds, that the full operation lasted. The time will be displayed with millisecond resolution.)

time_namelookup DNS解析时间,从请求开始到DNS解析完毕所用时间。(The time, in seconds, it took from the start until the name resolving was completed.)

time_connect 连接时间,从开始到建立TCP连接完成所用时间,包括前边DNS解析时间,如果需要单纯的得到连接时间,用这个time_connect时间减去前边time_namelookup时间。以下同理,不再赘述。(The time, in seconds, it took from the start until the TCP connect to the remote host (or proxy) was completed.)

time_appconnect 连接建立完成时间,如SSL/SSH等建立连接或者完成三次握手时间。(The time, in seconds, it took from the start until the SSL/SSH/etc connect/handshake to the remote host was completed. (Added in 7.19.0))

time_pretransfer 从开始到准备传输的时间。(The time, in seconds, it took from the start until the file transfer was just about to begin. This includes all pre-transfer commands and negotiations that are specific to the particular protocol(s) involved.)

time_redirect 重定向时间,包括到最后一次传输前的几次重定向的DNS解析,连接,预传输,传输时间。(The time, in seconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before the final transaction was started. time_redirect shows the complete execution time for multiple redirections. (Added in 7.12.3))

time_starttransfer 开始传输时间。在发出请求之后,Web 服务器返回数据的第一个字节所用的时间(The time, in seconds, it took from the start until the first byte was just about to be transferred. This includes time_pretransfer and also the time the server needed to calculate the result.)

size_download 下载大小。(The total amount of bytes that were downloaded.)

size_upload 上传大小。(The total amount of bytes that were uploaded.)

size_header  下载的header的大小(The total amount of bytes of the downloaded headers.)

size_request 请求的大小。(The total amount of bytes that were sent in the HTTP request.)

speed_download 下载速度,单位-字节每秒。(The average download speed that curl measured for the complete download. Bytes per second.)

speed_upload 上传速度,单位-字节每秒。(The average upload speed that curl measured for the complete upload. Bytes per second.)

content_type 就是content-Type,不用多说了,这是一个访问我博客首页返回的结果示例(text/html; charset=UTF-8);(The Content-Type of the requested document, if there was any.)

num_connects Number of new connects made in the recent transfer. (Added in 7.12.3)

num_redirects Number of redirects that were followed in the request. (Added in 7.12.3)

redirect_url When a HTTP request was made without -L to follow redirects, this variable will show the actual URL a redirect would take you to. (Added in 7.18.2)

ftp_entry_path The initial path libcurl ended up in when logging on to the remote FTP server. (Added in 7.15.4)

ssl_verify_result ssl认证结果,返回0表示认证成功。( The result of the SSL peer certificate verification that was requested. 0 means the verification was successful. (Added in 7.19.0))

获取状态码:

curl http://10.13.1.139:54321 -w %{http_code}


更多  http://curl.haxx.se/docs/manual.html

你可能感兴趣的:(基础知识,工具)