在介绍完cURL简介和需要的HTTP协议概述之后。终于可以回归正题,进入curl的使用方法。
curl命令格式
基本的使用用法如下:curl [选项] [URL...]
GET一个网页
curl http://www.baidu.com
网页源码将被打印出来。
-o/--output <file>
指定保存目录
为便于后续处理,我们将网页内容保存在文件中:curl -o stackeye.html http://www.stackeye.com
此时仍会显示进度条等信息。
-s/--silent
静默模式
通过脚本结合curl可以实现很复杂的功能,而在脚本中调用curl,我们不需要进度条等信息。如执行:curl -s -o stackeye.html http://www.stackeye.com
将不会显示任何信息。
-v/–verbose查看通信过程、调试。
这个参数可以清晰的查看到curl的通信过程,以便于调试,如执行:curl -v http://www.baidu.com
返回结果如下,可以清晰的看到curl发出的HTTP请求及服务器返回的HTTP响应:
* About to connect() to www.baidu.com port 80 (#0) |
以下所有命令都可以通过加入-v选项,查看具体通信过程。
更详细的调试信息可以使用–trace-ascii选项,如:curl --trace-ascii debug.txt http://www.baidu.com
-A/–user-agent指定User-Agent字段
此选项字段用于指定HTTP请求头的User-Agent字段,即客户端(如浏览器)类型。
很多网站为了防止自动化程序采集,仅允许浏览器访问,最简单的办法就是通过User-Agent字段识别客户端类型做出处理。而如下命令:
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" |
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
为firefox的UserAgent值。
通过-A指定User-Agent字段,使curl伪装成Firefox,从而绕过网站的检测。
User-Agent字段可以通过抓包分析得到,或者通过chrome的Developer Tools、Firefox的Firebug等工具得到。
而如果一个网站对浏览器的限制也很严格的话,那我们甚至可以通过修改User-Agent伪装成百度蜘蛛或者googlebot突破限制,因为基于SEO的考虑,网站对搜索引擎蜘蛛的限制很小。
-e/–referer设置Referer
此选项字段用于指定HTTP请求头中的Referer字段,即来源网页。
为了防盗链,很多网页尤其是图片等可下载资源会检测Referer字段,对于非自己站内的来源全部屏蔽掉,此时我们就需要这个参数。
通过执行:
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" |
cookie使用
cookie的介绍参考上一篇。
我们登录网站后,为保持登录状态,需要使用cookie信息。
-D/–dump-header 保存协议头部信息
-D/--dump-header <file>
保存协议头部信息
头部信息中包含最常使用的cookie信息,如执行:
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" |
会将头部信息保存至stackeyecookie.txt中。
-b/–cookie 指定cookie
-b/--cookie <name=data>/<file>
指定cookie
-b后可直接加-D保存的文件,curl会自动从中读取出cookie值,而且-b选项不会修改此文件。如执行:
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" |
会自动将stackeyecookie.txt中cookie信息附加至HTTP请求头中。
结合-D和-b参数,即可完成cookie的保存和后续使用。
cookie的形式就是“属性:值”对形式,-b后可直接以“属性=值”的形式给出cookie,当有多个属性时以分号间隔且包含在双引号中。如执行:
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" |
会将cookie信息user=Adeploy;pass=password
附加在HTTP请求头中。
Redirects重定向
打开某些网页,网页会显示“ 3XX Moved Permanently ”,即网页被移动到其他位置,新位置一般由HTTP响应头中的Location字段给出。
重定向一般是因为网站结构调整后,避免用户访问原来页面出现404错误。
而另一类常见的用法就是在登陆成功后,网页显示成功信息,然后将用户重定向至内容页面。-L/--location
选项可以自动跟踪重定向。
总结
本篇只介绍简单的curl使用选项,下篇将结合实例具体说明。