curl常用命令详解

简介:

 工作中用到了curl来获取http返回的状态码,以至于对curl产生了兴趣,想要详细的了解学习一下。其实curl是一个很强大的命令。

1.访问http页面内容,输出到标准输出

 


 
 
  1. root@Ttpod:~# curl http://wbo.a2sy.0755cdy.com/index.htm  
  2. index 

基输出的是文件的源码,像当于在WIN下使用右键,查看源文件看到的内容

 


 
 
  1. root@Ttpod:~# curl http://www.baidu.com                   
  2. <!doctype html><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>百度一下,你就知道      </title><style>html{overflow-y:auto}body{font:12px arial;text-align:center;background:#fff}body,p,form,ul,li{margin:0;padding:0;list-style:none}body,form,#fm{position:relative}td{text-align:left}img{border:0}a{color:#00c}a:active{color:#f60}#u{color:#999;padding:4px 10px 5px 0;text-align:right}#u a{margin:0 5px}#u .reg{margin:0}#m{width:680px;margin:0 auto;}#nv a,#nv b,.btn,#lk{font-size:14px}#fm{padding-left:90px;text-align:left}input{border:0;padding:0}#nv{height:19px;font-size:16px;margin:0 0 4px;text-align:left;text-indent:117px}.s_ipt_wr{width:418px;height:30px;display:inline-block;margin-right:5px;background:url(http://s1.bdstatic.com/r/www/img/i-1.0.0.png) no-repeat -304px 0;border:1px solid #b6b6b6;border-color:#9a9a9a #cdcdcd #cdcdcd #9a9a9a;vertical-align:top}.s_ipt{width:405px;height:22px;font:16px/22px arial;margin:5px 0 0 7px;background:#fff;outline:none;-webkit-appearance:none}.s_btn{width:95px;height:32px;padding-top:2px\9;font-size:14px;background:#ddd url(http://s1.bdstatic.com/r/www/img/i-1.0.0.png);cursor:pointer}.s_btn_h{background-position:-100px 0}.s_btn_wr{width:97px;height:34px;display:inline-block;background:url(http://s1.bdstatic.com/r/www/img/i-1.0.0.png) no-repeat -202px 0;*position:relative;z-index:0;vertical-align:top}#lg img{vertical-align:top;margin-bottom:3px}#lk{margin:33px 0}#lk span{font:14px "宋体"}#lm{height:60px}#lh{margin:16px 0 5px;word-spacing:3px}.tools{position:absolute;top:-4px;*top:10px;right:-13px;}#mHolder{width:62px;position:relative;z-index:296;display:none}#mCon{height:18px;line-height:18px;position:absolute;cursor:pointer;padding:0 18px 0 0;background:url(http://s1.bdstatic.com/r/www/img/bg-1.0.0.gif) no-repeat right -134px;background-position:right -136px\9}#mCon span{color:#00c;cursor:default;display:block}#mCon .hw{text-decoration:underline;cursor:pointer}#mMenu a{width:100%;height:100%;display:block;line-height:22px;text-indent:6px;text-decoration:none;filter:none\9}#mMenu,#user ul{box-shadow:1px 1px 2px #ccc;-moz-box-shadow:1px 1px 2px #ccc;-webkit-box-shadow:1px 1px 2px #ccc;filter: progid:DXImageTransform.Microsoft.Shadow(Strength=2Direction=135Color="#cccccc")\9;}#mMenu{width:56px;border:1px solid #9b9b9b;list-style:none;position:absolute;right:7px;top:28px;display:none;background:#fff}#mMenu a:hover{background:#ebebeb}#mMenu .ln{height:1px;background:#ebebeb;overflow:hidden;font-size:1px;line-height:1px;margin-top:-1px}#cp,#cp a{color:#77c}#seth{display:none;behavior:url(#default#homepage)}#setf{display:none;}#sekj{margin-left:14px;}</style> 
  3. <script type="text/javascript">function h(obj){obj.style.behavior='url(#default#homepage)';var a = obj.setHomePage('http://www.baidu.com/');}</script></head> 
  4.  
  5. <body><div id="u"><a href="http://www.baidu.com/gaoji/preferences.html" name="tj_setting">搜索设置</a>|<a href="https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F" name="tj_login">登录</a><a href="https://passport.baidu.com/v2/?reg&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F" target="_blank" name="tj_reg" class="reg">注册</a></div> 
  6. <div id="m"><p id="lg"><img src="http://www.baidu.com/img/baidu_sylogo1.gif" width="270" height="129" usemap="#mp"><map name="mp"><area shape="rect" coords="40,25,230,95" href="http://hi.baidu.com/baidu/" target="_blank" title="点此进入 百度的空间" ></map></p><p id="nv"><a href="http://news.baidu.com">新&nbsp;闻</a> <b>网&nbsp;页</b> <a href="http://tieba.baidu.com">贴&nbsp;吧</a> <a href="http://zhidao.baidu.com">知&nbsp;道</a> <a href="http://mp3.baidu.com">MP3</a> <a href="http://image.baidu.com">图&nbsp;片</a> <a href="http://video.baidu.com">视&nbsp;频</a> <a href="http://map.baidu.com">地&nbsp;图</a></p><div id="fm"><form name="f" action="/s"><span class="s_ipt_wr"><input type="text" name="wd" id="kw" maxlength="100" class="s_ipt"></span><input type="hidden" name="rsv_bp" value="0"><input type="hidden" name="rsv_spt" value="3"><span class="s_btn_wr"><input type="submit" value="百度一下" id="su" class="s_btn" onmousedown="this.className='s_btn s_btn_h'" onmouseout="this.className='s_btn'"></span></form><span class="tools"><span id="mHolder"><div id="mCon"><span>输入法</span></div></span></span><ul id="mMenu"><li><a href="#" name="ime_hw">手写</a></li><li><a href="#" name="ime_py">拼音</a></li><li class="ln"></li><li><a href="#" name="ime_cl">关闭</a></li></ul></div> 
  7. <p id="lk"><a href="http://hi.baidu.com">空间</a> <a href="http://baike.baidu.com">百科</a> <a href="http://www.hao123.com">hao123</a><span> | <a href="/more/">更多&gt;&gt;</a></span></p><p id="lm"></p><p><a id="seth" onClick="h(this)" href="http://utility.baidu.com/traf/click.php?id=215&url=http://www.baidu.com" onmousedown="return ns_c({'fm':'behs','tab':'homepage','pos':0})">把百度设为主页</a><a id="setf" href="http://www.baidu.com/cache/sethelp/index.html" onmousedown="return ns_c({'fm':'behs','tab':'favorites','pos':0})" target="_blank">把百度设为主页</a><span id="sekj"><a href="http://www.baidu.com/search/baidukuijie_mp.html" target="_blank" onmousedown="return ns_c({'fm':'behs','tab':'kuaijie','pos':1})">把百度添加到桌面</a></span></p> 
  8. <p id="lh"><a href="http://e.baidu.com/?refer=888">加入百度推广</a> | <a href="http://top.baidu.com">搜索风云榜</a> | <a href="http://home.baidu.com">关于百度</a> | <a href="http://ir.baidu.com">About Baidu</a></p><p id="cp">&copy;2012 Baidu <a href="/duty/">使用百度前必读</a> <a href="http://www.miibeian.gov.cn" target="_blank">京ICP证030173号</a> <img src="http://www.baidu.com/cache/global/img/gs.gif"></p></div></body> 
  9.  
  10. <script type="text/javascript" src="http://s1.bdstatic.com/r/www/cache/global/js/home-1.0.js"></script><script>var bdUser = null;var w=window,d=document,n=navigator,k=d.f.wd,a=d.getElementById("nv").getElementsByTagName("a"),isIE=n.userAgent.indexOf("MSIE")!=-1&&!window.opera;for(var i=0;i<a.length;i++){a[i].onclick=function(){if(k.value.length>0){var o=this,h=o.href,q=encodeURIComponent(k.value);if(h.indexOf("qq=")!=-1){o.href=h.replace(/q=[^&\x24]*/,"q="+q)}else{this.href+="?q="+q}}}};(function(){if(/q=([^&]+)/.test(location.search)){k.value=decodeURIComponent(RegExp["\x241"])}})();if(n.cookieEnabled&&!/sug?=0/.test(d.cookie)){bds.se.sug();};function addEV(o, e, f){if(w.attachEvent){o.attachEvent("on" + e, f);}else if(w.addEventListener){ o.addEventListener(e, f, false);}}function G(id){return d.getElementById(id);}function ns_c(q){var p = encodeURIComponent(window.document.location.href), sQ = ''sV = ''mu=''img = window["BD_PS_C" + (new Date()).getTime()] = new Image();for (v in q) {sV = q[v];sQ += v + "=" + sV + "&";} mu"&mu=" + p ;img.src = "http://nsclick.baidu.com/v.gif?pid=201&pj=www&rsv_sid=&" + sQ + "path="+p+"&t="+new Date().getTime();return true;}if(/\bbdime=[12]/.test(d.cookie)){document.write('<script src=http://s1.bdstatic.com/r/www/cache/ime/js/openime-1.0.0.js><\/script>');}(function(){var user = G("user"), userMenu = G("userMenu");if(user && userMenu){user.onmouseover = function(){userMenu.style.display = "block"};user.onmouseout = function(){userMenu.style.display = "none"};}})();(function(){var u = G("u").getElementsByTagName("a"), nv = G("nv").getElementsByTagName("a"), lk = G("lk").getElementsByTagName("a"), un = "";var tj_nv = ["news","tieba","zhidao","mp3","img","video","map"];var tj_lk = ["hi","baike","hao123","more"];un = bdUser == null ? "" : bdUser;function _addTJ(obj){addEV(obj, "mousedown", function(e){var e = e || window.event;var target = e.target || e.srcElement;ns_c({'fm':'behs','tab':target.name||'tj_user','un':encodeURIComponent(un)});});}for(var i = 0; i < u.length; i++){_addTJ(u[i]);}for(var i = 0; i < nv.length; i++){nv[i].name = 'tj_' + tj_nv[i];_addTJ(nv[i]);}for(var i = 0; i < lk.length; i++){lk[i].name = 'tj_' + tj_lk[i];_addTJ(lk[i]);}})();addEV(w,"load",function(){k.focus()});w.onunload=function(){};</script> 
  11.  
  12.  
  13.  
  14. </html> 

2.把curl的结果保存到指定文件

 


 
 
  1. root@Ttpod:~# curl -o /tmp/index.htm http://www.baidu.com 
  2.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current 
  3.                                  Dload  Upload   Total   Spent    Left  Speed 
  4. 100  8023  100  8023    0     0   104k      0 --:--:-- --:--:-- --:--:--  244k 

-o选项用于指定保存文件的位置,然后我们把文件下载到WIN下,使用IE访问一下

 

 

3.指定浏览器信息

可以使用 -A “” 来指定服务器WEB日志里记录的浏览器类型信息

 


 
 
  1. root@Ttpod:~# curl -A "Hello,buddy! " http://wbo.a2sy.0755cdy.com/index.htm  
  2. index 

来看下服务器日志记录


 
 
  1. 180.173.110.152`wbo.a2sy.0755cdy.com`HTTP/1.1`GET`80`234`/index.htm`?-`200`0.000`[11/Jun/2012:14:18:33 +0800]`-`Hello,buddy! 
  2. 180.173.110.152`wbo.a2sy.0755cdy.com`HTTP/1.1`GET`80`234`/index.htm`?-`200`0.000`[11/Jun/2012:14:18:38 +0800]`-`Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1145.0 Safari/537.1 
  3. 180.173.110.152`wbo.a2sy.0755cdy.com`HTTP/1.1`GET`80`214`/favicon.ico`?-`200`0.000`[11/Jun/2012:14:18:38 +0800]`-`Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1145.0 Safari/537.1 

4.批量下载文件

 


 
 
  1. root@Ttpod:~# curl  -o /tmp/{1..666}.mp3  http://wbo.a2sy.0755cdy.com/[0-9]/[0-9][0-9]/[0-9][0-9]/[a-z][0-9].mp3 

批量爬取网站上的mp3文件,支持globing通配,如果globing通配写的好,就能得到自己想要的结果。

5.分块下载

 

curl -r 0-1024 http://www.xxx.com/aa.zip

curl -r 1025- http://www.xxx.com/aa.zip

先下1M,然后再下剩下的

 

6. 访问FTP

curl -u username:password ftp://www.xxx.com

 

上传文件到ftp

curl -T /tmp/test.mp3 -u username:password ftp://www.xxx.com

7.测试参数

 

测试连接www.google.com花费了多少时间


 
 
  1. curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} www.google.com 

 

查看http_code,可以查看http的返回状态码


 
 
  1. root@Ttpod:~# curl -o /dev/null -s -w %{http_code} http://hcw3.pz8.itaround.com/index.htm
  2. 200

查看网页文件的大小


 
 
  1. root@Ttpod:~# curl -o /dev/null -s -w %{size_header} http://hcw3.pz8.itaround.com/index.htm 
  2. 228 

常用http变量

 


 
 
  1. http_code:http返回类似404,200,500等 
  2.  
  3. time_total:总相应时间 
  4.  
  5. time_namelookup:域名解析时间 
  6.  
  7. time_connect:连接到目标地址耗费的时间 
  8.  
  9. time_pretransfer:从执行到开始传输文件的时间间隔 
  10.  
  11. time_starttransfer:从执行到开始传输文件的时间间隔 
  12.  
  13. size_download:下载网页或文件大小 
  14.  
  15. size_upload:上传文件大小 
  16.  
  17. size_header:响应头 
  18.  
  19. size_request:发送请求参数大小 
  20.  
  21. speed_download:传输速度 
  22.  
  23. speed_upload:平均上传速度 
  24.  
  25. content_type:下载文件类型. 

 

8.指定超时时间

用一个简单的脚本来说明

 


 
 
  1. #!/bin/bash 
  2.  
  3. while read url; do 
  4.  
  5. service_status=$(curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} $url)  
  6.  
  7. echo $url $service_status 
  8.  
  9. done < domain.txt 

从文件domain.txt里面读入URL,然后用curl命令来测试,把测试的结果给变量service_status,然后输出URL 输出http状态

参数解释

  -o 上面说过,指定文件保存文件

  -s  静默模式,不输出到标准输出

  -m  指定文件传输的超时时间,单位为秒



本文转自 gm100861 51CTO博客,原文链接:http://blog.51cto.com/gm100861/895417

相关文章
|
算法 安全 Java
即时通讯安全篇(一):正确地理解和使用Android端加密算法
本文主要讨论针对Android这样的移动端应用开发时,如何正确的理解目前常用的加密算法,为诸如即时通讯应用的实战开发,如何在合适的场景下选择适合的算法,提供一些参考。
387 0
五、ArkTS 常用组件-文本显示 (Text / Span)
本文档介绍了ArkTS中的文本显示组件(Text/Span),包括其基本概念、参数设置、常用属性(如字体大小、粗细、颜色、对齐方式)、最大行数及超长处理方法,以及子组件Span的使用方法。Text组件支持多种参数类型,包括字符串、资源引用等,并提供了丰富的属性设置选项以满足不同的文本显示需求。Span组件则主要用于在Text组件内部实现更精细的文本格式化,如设置不同的字体颜色、大小、装饰线等,同时支持点击事件的添加。
1023 2
|
开发者 容器
鸿蒙next版开发:ArkTS组件通用属性(文本通用)
在HarmonyOS 5.0中,ArkTS提供了丰富的文本通用属性,如textAlign、maxLines、textOverflow、fontSize、fontColor、fontStyle、fontWeight、fontFamily、lineHeight、letterSpacing和decoration等,用于实现多样的文本显示和样式效果。本文详细解读了这些属性,并提供了示例代码,帮助开发者更好地利用这些工具,提升应用界面的美观和实用性。
990 8
|
存储 算法 数据库连接
如何避免硬编码
如何避免硬编码
|
存储 数据库 数据库管理
SQLite支持哪些数据类型?
【7月更文挑战第31天】SQLite支持哪些数据类型?
1490 8
|
存储 jenkins Java
CentOS上安装Jenkins
CentOS上安装Jenkins
583 0
无需下载!上无影云开启《黑神话:悟空》
上无影云开启《黑神话:悟空》
386 8
|
编译器
【收藏】内核级利用通用Hook函数方法检测进程
【收藏】内核级利用通用Hook函数方法检测进程
|
存储 数据采集 机器学习/深度学习
知识管理:从文档到数据的技术之旅
【6月更文挑战第25天】知识管理正由文档转向数据,克服传统方式如信息碎片化和检索效率低下的问题。借助大数据和AI,实现知识体系化、智能检索和数据价值挖掘。技术路径涉及数据采集、存储、挖掘、分析及可视化。未来,知识图谱、智能问答系统和个性化推荐将推动知识管理进一步发展,提升企业竞争力。
MPAndroidChart 教程:突出显示值 Highlighting Values
本节主题是重点介绍通过tap-gesture和基于发行版v3.0.0以编程方式突出显示图表中条目。 启用/禁用突出显示 setHighlightPerDragEnabled(boolean enabled):在Chart 上将此设置为true,以便在完全缩小时在图表表面上进行每次拖动时突出显示,默认值:true setHighlightPerTapEnabled(boolean enabled):在Chart 上将此设置为false,以防止通过点击手势突出显示值。
2539 0

热门文章

最新文章