不久前用libcurl写了个简易的中间件(动态链接库),现在总结一下curl工具的简单使用, 上传下载文件等不做介绍,其他的具体细节方面请参考manual文档。

curl - transfer a URL

CURL是一个利用URL语法在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称CURL为下载工具。


1 二话不说,先从这里开始吧!内容直接显示在屏幕上。

curl http://www.yahoo.com

2 存储页面内容,用curl的内置option: -o

curl -o page.html http://www.yahoo.com

3 指定http访问所使用的proxy服务器及其端口: -x

curl -x 123.45.67.89:1080 -o page.html http://www.yahoo.com

4 有些网站使用cookie来记录session信息,option: -D 可以把http的response里面的cookie信息存到一个特别的文件中去

curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.yahoo.com

页面被存到page.html的同时,cookie信息也被存到了cookie0001.txt里面了

5 那么,下一次访问的时候,如何继续使用上次留下的cookie信息呢?要知道,很多网站都是靠监视你的cookie信息,来判断你是不是不按规矩访问他们的网站的。我们使用这个option来把上次的cookie信息追加到http request里面去: -b

curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.yahoo.com

我们就可以几乎模拟所有的IE操作,去访问网页了!

6 指定浏览器信息:有些网站总要我们使用某些特定的浏览器去访问他们,有时候还要使用某些特定的版本。curl给我们提供了一个有用的option -A,可以让我们随意指定自己这次访问所宣称的自己的浏览器信息。

curl -A “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)” -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.yahoo.com

这样,服务器端接到访问的要求,会认为你是一个运行在Windows 2000上的IE6.0,嘿嘿嘿,其实也许你用的是苹果机呢!

而”Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686”则可以告诉对方你是一台PC上跑着的Linux,用的是Netscape 4.73,呵呵呵

7 另外一个服务器端常用的限制方法,就是检查http访问的referer。比如你先访问首页,再访问里面所指定的下载页,这第二次访问的 referer地址就是第一次访问成功后的页面地址。这样,服务器端只要发现对下载页面某次访问的referer地址不是首页的地址,就可以断定那是个盗链了。

curl给我们提供了设定referer的option: -e

curl -A “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)” -x 123.45.67.89:1080 -e “mail.yahoo.com” -o page.html -D cookie0001.txt http://www.yahoo.com

这样,就可以骗对方的服务器,你是从mail.yahoo.com点击某个链接过来的。