curl是一种命令行工具,支持多种协议,作用是发出网络请求,然后得到和提取数据,显示在stdout上面。
在服务器端,使用curl查看请求地址是否返回数据来判断是nginx配置问题还是程序服务配置问题不失为一种好方式(curl -i "...")!
一、查看网页源码
直接在curl命令后加上网址,就可以看到网页源码:
curl www.sina.com
301 Moved Permanently
301 Moved Permanently
nginx
如果要把这个网页保存下来,可以使用-o参数,这就相当于使用wget命令了。
curl -o [文件名] www.sina.com
二、自动跳转
有的网址是自动跳转的。使用-L参数,curl就会跳转到新的网址。
curl -L www.sina.com
键入上面的命令,结果就自动跳转为www.sina.com.cn并显示源码。
三、显示头信息
-I参数则是只显示http response的头信息。
-i参数可以显示http response的头信息,连同网页代码一起。
curl -I www.sina.com
curl -i www.sina.com
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Wed, 17 Jun 2015 13:54:42 GMT
Content-Type: text/html
Location: http://www.sina.com.cn/
Expires: Wed, 17 Jun 2015 13:56:42 GMT
Cache-Control: max-age=120
Age: 102
Content-Length: 178
X-Cache: HIT from xd33-96.sina.com.cn
301 Moved Permanently
301 Moved Permanently
nginx
四、显示通信过程
-v参数可以显示一次http通信的整个过程,包括端口连接和http request头信息。
curl -v www.sina.com
查看更详细的通信过程:
curl --trace output.txt www.sina.com
或者
curl --trace-ascii output.txt www.sina.com
运行后,请打开output.txt文件查看。
五、发送表单信息
发送表单信息(GET):
curl example.com/form.cgi?data=xxx
发送表单信息(POST):
curl --data "data=xxx" example.com/form.cgi
发送表单信息,数据编码(POST):
curl --data-urlencode "date=April 1" example.com/form.cgi
六、HTTP动词
curl默认的HTTP动词是GET,使用-X参数可以支持其他动词。
curl -X POST www.example.com
curl -X DELETE www.example.com
七、Referer字段
有时需要在http request头信息中,提供一个referer字段,表示是从哪里跳转过来的。
curl --referer http://www.example.com http://www.example.com
八、User Agent字段
这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页。
curl --user-agent "[User Agent]" [URL]
九、cookie
curl发送cookie:
curl --cookie "name=xxx" www.example.com
十、增加头信息
有时需要在http request之中,自行增加一个头信息。--header参数可以起到这个作用。
curl --header "Content-Type:application/json" http://example.com
十一、HTTP认证
有些网域需要HTTP认证,这时curl需要用到--user参数。
curl --user name:password example.com
参考自: http://www.ruanyifeng.com/blog/2011/09/curl.html