Linux curl命令的使用
参考官方文档
一、什么是cURL
wikipedia中的解释如下:
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。
cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。
简单的说,cURL就是把发出请求然后得到响应并把响应数据显示到标准输出上的一个命令行工具
。
语法:
curl [option] [URL]
二、cURL的用法
1. 保存curl的结果到文件
curl -o [filename] [URL]
比如要保存 http://zeusjava.com
到blog.html中,可以使用
curl -o blog.html http://zeusjava.com
当然,也可以直接用
curl http://zeusjava.com >blog.html
1 | $ curl -o blog.html http://zeusjava.com |
使用 -o
也可以用于下载文件
curl -o android-studio-2.0.exe https://dl.google.com/dl/android/studio/install/2.0.0.20/android-studio-bundle-143.2739321-windows.exe
使用 -O
可以将下载的文件名自动命名为服务器端文件的名字
curl -O https://dl.google.com/dl/android/studio/install/2.0.0.20/android-studio-bundle-143.2739321-windows.exe
2.显示http response的Header信息
curl -i [URL]
比如 curl -i http://zeusjava.com
服务器返回的Header信息如下:
1 | HTTP/1.1 200 OK |
由于使用过的是Github Pages 所以Server是Github.com
3.显示Http request和 response的Header信息
curl -v [URL]
-v
选项可以向标准输出中打印和Server的通信过程的信息,包括 http request和http response的信息
下面是和zeusjava.com的通信过程的头部信息:
1 | * Rebuilt URL to: http://www.zhihu.com/ |
4. HTTP动词
Http的动词有,GET,POST,PUT,DELETE等
curl -X [动词] [URL]
curl默认的动作为 GET
3.1 FORM GET请求
curl [-X GET] zeusjava.com/articles?article_id=1
3.2 FORM POST请求
curl -X POST --data[-urlencode] "article_id=1" zeusjava.com
如果需要对表单参数进行编码的话,在–data后再加上-urlencode选项
5. 使用Cookies
curl --cookie "key=value" [URL]
cookie是客户端保存的服务端的一些信息,形式为key-value键值对,可以从Server的response的Set-Cookie
中获得
使用 -c
选项,可以保存服务器的cookie到本地的文件中
curl -c [cookies file] [URL]
比如我保存 知乎的cookie到本地的cookies中
curl -c cookies.txt http://www.zhihu.com
得到的cookies.txt如下:
1 | # Netscape HTTP Cookie File |
使用 -b
选项,将本地的cookies文件发送至服务器端
curl -b cookies.txt http://www.zhihu.com
6.使用User-Agent
User Agent:字面意思就是用户代理,可以简单理解为访问设备的一种标识(这个标识指所代表的平台(黑莓、iPhone、Windows等)、浏览器(Chrome、IE、Safari等)、以及浏览器的版本等等),其实它包含的信息是比较多的。
下面是一个User-Agent的例子:
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Mozilla声明了一个基于Mozilla的浏览器User-Agent,比如firefox,netscape等,Windows NT 10.0表示操作系统为 Windows 10
等
curl -A [User-Agent] [URL]
curl --user-agent "[User-Agent]" [URL]
很多网站都会根据浏览器的User-Agent来响应不同的页面风格,叫做响应式设计,比如ipad请求 www.zhihu.com
浏览器就会根据ipad的页面尺寸来适配ipad的屏幕大小。
7.文件上传
使用curl来模拟表单的文件上传
1 | <form method="POST" enctype='multipart/form-data' action="upload.do"> |
$ curl –form headimage=@localfile –form click=点击上传 [URL]
三、总结
当然curl的命令不止这么多,用到哪些在做补充 ==