curl是利用URL语法在命令行方式下工作的开源文件传输工具。作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面,它支持多种协议。
1、基本用法
直接在curl命令后加上网址,就可以看到网页源码。
curl www.baidu.com
回车之后,www.baidu.com 的源码就显示在屏幕上了。
2、保存页面信息
保存页面信息有两种方式
(1)使用linux的重定向功能保存
curl http://www.baidu.com >> baidu.html
(2)使用curl的内置option:-o(小写)保存网页
curl -o baidu.html www.baidu.com
3、显示头信息
-i
参数可以显示http response的头信息,连同网页代码一起。-I
参数则是只显示http response的头信息。
curl -i www.baidu.com
curl -I www.baidu.com
4、发送表单信息
发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在url后面就行。(linux get方法多个参数需转义&符号)
curl example.com/index.php?data=xxx\&status=success
POST方法必须把数据和网址分开,curl就要用到--data参数。
curl -X POST --data "data=xxx" example.com/index.php
如果你的数据没有经过表单编码,还可以让curl为你编码,参数是--data-urlencode
。
curl -X POST --data-urlencode "date=test 1" example.com/index.php
5、HTTP动词
curl默认的HTTP动词是GET,使用-X
参数可以支持其他动词。
curl -X POST www.example.com
curl -X DELETE www.example.com
curl -X PUT www.example.com
6、伪造referer(盗链)
很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗链了
curl中内置option:-e可以让我们设定referer
curl -e "www.linux.com" http://mail.linux.com
这样就会让服务器其以为你是从www.linux.com点击某个链接过来的
7、模仿浏览器(User Agent字段)
curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com
这样服务器端就会认为是使用IE8.0去访问的
8、cookie
使用--cookie
参数,可以让curl发送cookie。
curl --cookie "name=xxx" www.example.com
-c cookie-file
可以保存服务器返回的cookie到文件,-b cookie-file
可以使用这个文件作为cookie信息,进行后续的请求。
curl -c cookies http://example.com
curl -b cookies http://example.com
9、增加头信息
有时需要在http request之中,自行增加一个头信息。--header
参数就可以起到这个作用。
curl --header "Content-Type:application/json" http://example.com
10、指定proxy服务器以及其端口
很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),可以通过使用内置option:-x来支持设置代理
curl -x 192.168.100.100:1080 http://example.com