CURL,全称Command Line URL viewer,是一种命令行工具,用来发送网络请求,然后得到和提取数据,显示在标准输出(stdout);
1、查看网页源代码:$ url www.cnblogs.com
2、如果要把网页保存下来,可以使用’-o’参数,相当于使用wget命令:$ curl -o [文件名] www.cnblogs.com
3、自动跳转 -L参数,curl就会自动跳转到新的网址:$ curl -L www.cnblogs.com
4、显示头信息 -i参数,(只)可以显示http response的头信息,后面是网页代码:
$ curl -i www.cnblogs.com
< HTTP/1.1 200 OK
< Date: Wed, 06 Jan 2016 14:07:03 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 45225
< Connection: keep-alive
< Vary: Accept-Encoding
< Cache-Control: public, max-age=96
< Expires: Wed, 06 Jan 2016 14:08:40 GMT
< Last-Modified: Wed, 06 Jan 2016 14:06:40 GMT
< X-UA-Compatible: IE=10
5、显示通信过程 -v参数,可以显示一次http通信的整个过程,包括端口连接和http request的头信息。
$ curl -v www.cnblogs.com
Output:
* Rebuilt URL to: www.cnblogs.com/
* Hostname was NOT found in DNS cache
* Trying 42.121.252.58...
* Connected to www.cnblogs.com (42.121.252.58) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: www.cnblogs.com
> Accept: */*
如果觉得上面的信息不够,可以使用下面这个命令查看更详细的通信过程。$ curl --trace output.txt www.cnblogs.com 或者 $ curl --trace-ascii output.txt www.cnblogs.com运行后,请打开output.txt文件查看。
6、发送表单信息,发送表单信息有GET和POST两种方法。
GET方法相对简单,只要把数据附在网址后面即可。$ curl www.cnblogs.com/form.cgi?data=xxx
POST方法必须把数据和网址分开,curl就要用到–data参数。$ curl -X POST --data "data=xxx" www.cnblogs.com/form.cgi
7、HTTP动词(用的最多)
curl默认支持的HTTP动词是GET,使用-X参数可以支持其他动词。
$ curl -X POST www.cnblogs.com
$ curl -X DELETE www.cnblogs.com
8、文件上传
假设文件上传的表单是下面这样的:
<form method="POST" enctype='multipart/form-data' action="upload.cgi">
<input type=file name=upload>
<input type=submit name=press value="OK">
</form>
可以使用curl这样上传文件:
$ curl --form upload=@localfilename --form press=OK [URL]
9、Referer字段
在http request头信息中,增加一个referer字段,表示你是从哪里过来的。
$ curl --referer http://www.yourblog.com http://www.example.com
10、User Agent字段
这个字段用来表示客户端设备的信息。服务器有时会根据这个字段,针对不同的设备,
返回不同格式的网页,比如手机版和桌面版。
$ curl --user-agent “[User Agent]" [URL]
11、cookie(移动端不支持cookie,现在都用token)
使用--cookie参数,可以让curl发送cookie。
$ curl --cookie "name=xxx" www.cnblogs.com
至于具体的cookie设置,可以从http response头信息中的Set-Cookie字段中得到。
-c cookie-file可以保存服务器返回的cookie到文件,-b cookie-file可以使用这个文件作为cookie信息,
作为后续的请求。
$ curl -c cookies http://www.cnblogs.com
$ curl -b cookes http://www.cnblogs.com
12、增加头信息
有时需要在http request之中,自行增加一个头信息。--header参数就可以起到这个作用。
$ curl --header ”Content-Type:application/json" http://cnblogs.com
13、HTTP认证
有些网域需要HTTP认证,这是需要用到--user参数。
$ curl --user name:password example.com
参考
1.curl网站开发指南
2.Using cURL to automate HTTP jobs