有关于curl的用法 参考:http://www.ruanyifeng.com/blog/2011/09/curl.html

一,查看网页源码

直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码可以):

  $ curl www.sina.com

  <!DOCTYPE HTML PUBLIC“-// IETF // DTD HTML 2.0 // EN”> 
  <html> <head> 
  <title> 301永久移动</ title> 
  </ head> <body> 
  <h1>永久移动</ h1> 
  <p>文档已移到<a href="http://www.sina.com.cn/">此处</a>。</ p> 
  </ body> </ html>

如果要把这个网页保存下来,可以使用`-o`参数,则相当于使用wget命令了。

  $ curl -o [文件名] www.sina.com

二,自动加速

使用`-L`参数,curl就会跳转到新的网址。

  $ curl -L www.sina.com

键入上面的命令,结果就自动替换为www.sina.com.cn。

三,显示头信息

-i参数可以显示http response的头信息,结合网页代码一起。

  $ curl -i www.sina.com

  HTTP / 1.0 301永久移动
  日期:2011年9月3日星期六23:44:10 GMT 
  服务器:Apache / 2.0.54(Unix)
  位置:http://www.sina.com.cn/ 
  缓存控制:max-age = 3600 
  过期:Sun,2011年9月4日00:44:10 GMT更改
  :接受编码
  内容长度:231 
  内容类型:text / html;charset = iso-   8859-1年龄
  :3239 
X缓存:sh201-9.sina.com.cn的HIT 
  连接:关闭

  <!DOCTYPE HTML PUBLIC“-// IETF // DTD HTML 2.0 // EN”> 
  <html> <head> 
  <title> 301永久移动</ title> 
  </ head> <body> 
  <h1>永久移动</ h1> 
  <p>文档已移到<a href="http://www.sina.com.cn/">此处</a>。</ p> 
  </ body> </ html>

`-I`参数则是只显示http response的头信息。

四,显示通信过程

-v参数可以显示一次HTTP通信的整个过程,包括端口连接和http request头信息。

  $ curl -v www.sina.com

  *关于connect()到www.sina.com端口80(#0)
  *正在尝试61.172.201.195 ...已连接
  *已连接到www.sina.com(61.172.201.195)端口80(#0)
  > GET / HTTP /1.1 
  >用户代理:curl / 7.21.3(i686-pc-linux-gnu)libcurl / 7.21.3 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 
  >主机:www.sina.com 
  >接受: * / * 
  > 
  * HTTP 1.0,假定在正文之后关闭
  <HTTP / 1.0 301永久移动
  <日期:2011年9月4日,星期日00:42:39 GMT 
  <服务器:Apache / 2.0.54(Unix)
  <位置:http:/ /www.sina.com.cn/ 
  <缓存控制:max-age = 3600 
  <到期:Sun,2011年9月4日01:42:39 GMT 
  <变化:接受编码
  <内容长度:231
  <内容类型:text / html; 字符集= ISO-8859-1 
  <X-缓存:MISS从sh201-19.sina.com.cn 
  <连接:关闭
  < 
  <!DOCTYPE HTML PUBLIC “ - // IETF // DTD HTML 2.0 // EN”> 
  <HTML > <head> 
  <title> 301永久移动</ title> 
  </ head> <body> 
  <h1>永久移动</ h1> 
  <p>文档已移动<a href =“ http://www.sina。 com.cn /“>此处</a>。</ p> 
  </ body> </ html> 
  *关闭连接#0

如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。

  $ curl --trace output.txt www.sina.com

或者

  $ curl --trace-ascii output.txt www.sina.com

运行后,请打开output.txt文件查看。

五,发送表单信息

发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在网址后面就行。

  $ curl example.com/form.cgi?data=xxx

POST方法必须把数据和网址分开,curl就要用到--data参数。

  $ curl -X POST --data“ data = xxx” example.com/form.cgi

如果你的数据没有经过表单编码,还可以让curl为你编码,参数是`--data-urlencode`。

  $ curl -X POST--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

七,文件上传

预先文件上传的表单是下面这样:

  <form method =“ POST” enctype ='multipart / form-data'action =“ upload.cgi”> 
    <input type =文件名= upload> 
    <input type =提交名= press value =“ OK”> 
  </ form >

你可以用curl这样上传文件:

  $ curl --form upload = @ localfilename --form press = OK [URL]

八,参照栏

有时你需要在http request头信息中,提供一个referer细分,表示你是从哪里替换过来的。

  $ curl --referer http://www.example.com http://www.example.com

九,用户代理范围

这个分区是用来表示客户端的设备信息。服务器有时会根据此分区,针对不同设备,返回不同格式的网页,某些手机版和桌面版。

iPhone4的用户代理是

  Mozilla / 5.0(iPhone; U; CPU iPhone OS 4_0,例如Mac OS X; zh-cn)AppleWebKit / 532.9(KHTML,例如Gecko)版本/4.0.5移动版/ 8A293 Safari / 6531.22.7

curl可以这样模拟:

  $ curl --user-agent“ [用户代理]” [URL]

十,cookie

使用`--cookie`参数,可以让curl发送cookie。

  $ curl --cookie“ name = xxx” www.example.com

相对具体的Cookie的值,可以从http响应头信息的`Set-Cookie`细分中得到。

-c cookie文件可以保存服务器返回的cookie到文件,-b cookie文件可以使用该文件作为cookie信息,进行后续的请求。

  $ curl -c cookie http://example.com 
  $ curl -b cookie http://example.com

十一,增加头信息

有时需要在http请求之中,自行增加一个头信息。`--header`参数就可以施加这个作用。

  $ curl --header“ Content-Type:application / json” http://example.com

十二,HTTP认证

有些网域需要HTTP认证,这时curl需要用到`--user`参数。

  $ curl-用户名:密码example.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值