zoukankan      html  css  js  c++  java
  • 【转】curl命令总结,Http Post_Get 常用

    curl命令总结


    curl 是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。


    1、获得一张页面 


    使用命令:curl http://curl.haxx.se 


    这是最简单的使用方法。用这个命令获得了http://curl.haxx.se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将不显示文件头部,即HTML文档的header。要全部显示,请加参数 -i,要只显示头部,用参数 -I。任何时候,可以使用 -v 命令看curl是怎样工作的,它向服务器发送的所有命令都会显示出来。为了断点续传,可以使用-r参数来指定传输范围。 




    2、表单(Form)的获取 
    web页面中 表单提交数据 GET方法和POST方法。


    2.1 GET方法:
    对于这种网页,curl可以直接处理,例如想获取上面的网页,只要输入:
    curl “www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK” 


    2.2 POST方法,POST方法和GET方法的区别在于GET方法使用的时候,浏览器中会产生目标URL,而POST不会。
      表单用POST方法向服务器提交数据。这时的URL是看不到的,因此需要使用特殊的方法来抓取这个页面: 
      curl -d “birthyear=1905&press=OK” www.hotmail.com/when/junk.cgi 


      文件上传:用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的: 
      curl -F upload=@localfilename -F press=OK URL 


    3、使用PUT方法。 
    HTTP协议文件上传的标准方法是使用PUT,此时curl命令使用-T参数: 
    curl -T uploadfile www.uploadhttp.com/receive.cgi 




    4、有关认证。 


    curl可以处理各种情况的认证页面,例如下载用户名/密码认证方式的页面(在IE中通常是出现一个输入用户名和密码的输入框): 
    curl -u name:password www.secrets.com 
    如果网络是通过http代理服务器出去的,而代理服务器需要用户名和密码,那么输入: 
    curl -U proxyuser:proxypassword http://curl.haxx.se 
    任何需要输入用户名和密码的时候,只在参数中指定用户名而空着密码,curl可以交互式的让用户输入密码。 


    5、引用
    有些网络资源访问的时候必须经过另外一个网络地址跳转过去,这用术语来说是:referer,引用。对于这种地址的资源,curl也可以下载: 
    curl -e http://curl.haxx.se daniel.haxx.se




    6、指定用户客户端。 
    有些网络资源首先需要判断用户使用的是什么浏览器,符合标准了才能够下载或者浏览。此时curl可以把自己“伪装”成任何其他浏览器: 
    curl -A “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)” URL 
    这个指令表示curl伪装成了IE5.0,用户平台是Windows 2000。(对方服务器是根据这个字串来判断客户端的类型的,所以即使使用AIX也无所谓)。使用:
    curl -A “Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)” URL 
    此时curl变成了Netscape,运行在PIII平台的Linux上了。




    7、COOKIES 


    Cookie是服务器经常使用的一种记忆客户信息的方法。如果cookie被记录在了文件中,那么使用命令: 
    curl -b stored_cookies_in_file www.cookiesite.com 
    curl可以根据旧的cookie写出新cookie并发送到网站: 
    curl -b cookies.txt -c newcookies.txt www.cookiesite.com


    8、加密的HTTP——HTTPS。 
    如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问: 
    curl https://that.secure.server.com 












    ----------------------参数总结以及实例
    curl的命令行工具功能非常强大,这些数据交互的功能基本上都是通过URL方式进行的,我们先来看看curl对多个URL的灵活操作,这些规则使我们的批处理需求应用起来非常方便。
       
        1、用{}表示多个URL
        如 http://site.{one,two,three}.com,只要在{}中写上不同的部分,就可以表示3个URL了。
       
        2、用[]表示多个URL
        如 ftp://ftp.numericals.com/file[1-100].txt,ftp://ftp.numericals.com/file[001-100].txt,ftp://ftp.letters.com/file[a-z].txt, []中表示按数字或字母的顺序排列。
        还能表示不连续的排列,如 http://www.numericals.com/file[1-100:10].txt,http://www.letters.com/file[a-z:2].txt,":" 后面的数字表示等差排列的阶跃数。
       
        3、结合起来使用
        如 http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html。
       
       
        curl命令行工具的基本语句为:curl [options] [URL...],即 curl [选项] [下载地址]。因此,如果你想下载百度的首页,最简单的方法启动cmd,进入curl安装目录,输入命令:curl http://www.baidu.com,回车,你的输出窗口将立即出现百度首页的html数据。
        对于所有的布尔型option,基本上--option表示支持这个选项,--no-option表示禁用这个选项。下面总结几个比较有用的 options。
       
        1、-o/--output <file>
        这个基本上要算最常用的选项了,用于将下载的数据保存到某个文件中。如 curl -o baidu.html http://www.baidu.com则将百度首页保存到baidu.html 文件中了。下载过程中标准输出还会显示下载的统计信息,比如进度、下载字节数、下载速度等。如果指定输出为"-",则下载数据会输出到标准输出。
        如果输出的文件是一个多级目录的话,则要配合--create-dirs选项,--create-dirs将自动创建设置的输出目录。
        如果希望保存到本地的文件名和服务器上的相同,就可以直接用-O选项(大写O),而省去指定本地文件名。
        如果下载多个数据文件,可以使用上面提到的多URL规则。下载文件名也可以批量自定义,就是使用"#"。可以将"#"加到文件名当中,这样实际文件名中的#将被多个URL中的当前字符串代替,如 curl http://{site,host}.host[1-5].com -o "#1_#2",#1将被"site"或"host"代替,#2将被1-5之间的数字代替,也就是被当前被处理的URL中的字符串代替。
        另外下载数据的时候,可以加个"-#"选项,用一个进度条来代替文本表示进度。
       
        2、-c/--cookie-jar <file name> 和 -b/--cookie <name=data>
        这是两个操作cookie的选项,很多服务器是需要cookie信息的。用前一个选项可以指定一个文件,将其他文件中的cookie或者从服务器得到的 cookie写到文件中;后一个选项则用来向服务器发送cookie信息,可以用"name=data"的形式,也可以直接跟一个保存cookie的文件名。
       
        3、-x/--proxy <proxyhost[:port]>
        该选项为http指定代理及端口,如果不指定端口,默认为1080。如 curl -x 201.36.208.19:3128 http://curl.haxx.se/。
       
        4、-u/--user <user:password> 和 -U/--proxy-user <user:password>
        登录某些页面或ftp需要先进行认证,输入用户名和密码。curl的这个选项可以直接处理这类操作,用指定的账号和密码进行登录认证。
        后面的选项指定代理的用户名和密码,这样便可以直接用这个代理访问网页了,如  curl -U user:password -x 201.36.208.19:3128 http://curl.haxx.se/。
       
        5、-A/--user-agent <agent string>
        该选项可以指定客户端类型,服务器通过该选项判断用户应用的平台及浏览器信息。如 curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" http://www.clientinfo.com,
    表示告诉服务器,客户端是运行在Windows 2000系统上的IE6.0。


       


        6、-d/--data <data>
        该选项用来以POST方式向http服务器发送特定数据,最常用的就是提交表单。如 curl -d "user=username&password=111" http://www.login.com,表示用账号username和密码111向站点发送登录申请。其中多个数据段可以用"&"进行连接一起发送;如果数据前面加上符号"@",则数据来源为后面指定的文件,如 curl -d password=@D:pw.txthttp://www.login.com。


       


        7、-C/--continue-at <offset>
        改选项提供断点续传功能,与-o选项配合使用。如 curl -c -O http://vfile.home.news.cn/music/public/vd05/200905/31/a8/MUfs052009053117155750a8be70.mp3。如果指定offset,则从offset的位置开始续传。如果未指定offset,或者直接用"-C -",则curl会自己分析该从什么位置开始续传。


       


        8、-r/--range <range>
        该选项指定下载字节的范围,常应用于分块下载文件。range的表示方式有多种,如100-500,则指定从100开始的400个字节数据;-500表示最后的500个字节;5000-表示从第5000个字节开始的所有字节;另外还可以同时指定多个字节块,中间用","分开。如
        curl -r 0-1024000 -o new_divide_1.mp3 http://vfile.home.news.cn/music/public/vd05/200905/31/a8/MUfs052009053117155750a8be70.mp3 &
        curl -r 1024001-2048000 -o new_divide_2.mp3 http://vfile.home.news.cn/music/public/vd05/200905/31/a8/MUfs052009053117155750a8be70.mp3 &
        curl -r 2048001- -o new_divide_3.mp3 http://vfile.home.news.cn/music/public/vd05/200905/31/a8/MUfs052009053117155750a8be70.mp3
        这样就会将目标mp3文件分块下载为3个文件,然后可以用dos的copy命令:copy new_divide_1.mp3/b + new_divide_2.mp3/b + new_divide_3.mp3/b new_divide.mp3即可将3个分块文件合并为一个完整的mp3文件。
       
        9、-w/--write-out <format>
        该选项格式化输出一些用户操作的数据信息,用到的格式化输出符除了" "," "," "这些常见转义符外,还包括"@"和"%"。其中"@filename"表示输出filename文件中的数据,"@-"表示输出用户写入标准输入的数据;"%"标识符后面跟上定义的关键字,则可以输出对应的curl数据,常用的关键字有:
        http_code —— 上次操作返回的响应码;
        time_total —— 上次操作耗时,单位为秒;
        time_connect —— TCP连接远程主机的耗时,单位为秒;
        time_pretransfer —— 文件真正开始传输之前交互耗时,单位为秒,可能主要包括一些命令处理和协议分析的耗时;
        time_starttransfer —— 文件的第一个字节开始传输之前的耗时,单位为秒,包括time_pretransfer和服务器计算结果的时间;
        size_download —— 下载的总字节数;
        size_upload —— 上传的总字节数;
        size_request —— 发送http请求的总字节数;
        speed_download —— curl成功下载的平均下载速度;
        speed_upload —— curl成功上传的平均上传速度;
        举例:curl -o page.html -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://curl.haxx.se/,其中-s表示安静模式,即略去所有状态信息。
       
        10、--connect-timeout <seconds> 和 -m/--max-time <seconds>
        前者表示允许的连接的最长耗时,单位为秒;后者表示允许的整个操作的最长耗时,单位为秒,这个选项对于控制一个批处理操作的时长非常有用。
       
        11、--limit-rate <speed> 、 -Y/--speed-limit <speed> 和 -y/--speed-time <time>
        --limit-rate <speed>指定最大的数据传输率,单位为bytes/s,也可以用'k'或'K'表示kb/s,'m'或'M'表示mb/s,'g'或 'G'表示gb/s,所给的speed为平均传输率,短时间峰值可能会超过此值;
    -Y/--speed-limit <speed>指定最小传输率,单位为bytes/s,如果小于speed值,则传输中止,如此时-y选项没有被设置,默认time为 30;-y/--speed-time <time>指定-Y选项的有效时间段,如果-Y选项没有被设置,默认为1。


     


        12、--max-filesize <bytes>
        该选项指定所要下载的文件的最大长度,如果超过bytes值,则下载并不开始,curl返回退出码63。
       
        13、--retry <num> 、 --retry-delay <seconds> 和 --retry-max-time <seconds>
        当传输过程中出现错误,如超时、FTP 5xx返回码或者HTTP 5xx返回码,curl会进行按照设置进行重试,这几个选项都与重试有关。--retry <num>设置重试次数,--retry-delay <seconds>设置两次重试的间隔时间,--retry-max-time <seconds>设置两次重试间隔的最长时间。默认情况下,curl不进行重试;如果重试,第一次间隔1秒,之后每次都间隔上一次的2倍时间,直到间隔时间达到10分钟,之后的重试都将采用10分钟间隔。如果这3个选项的值被重新设置,则执行设置值。
       
        14、-T/--upload-file <file>
        该选项是上传命令,如向http服务器上传一个文件:curl -T D: ew_divide.mp3 http://www.uploadserver.com/path/;向一个ftp服务器上传文件:curl -T D: ew_divide.mp3 -u user:password ftp://upload_site:port/path/。

    from:http://blog.csdn.net/gubenpeiyuan/article/details/8528747

  • 相关阅读:
    mysq 日期相减
    说说时间观与时间管理——北漂18年(71)
    ionic之切换开关
    ionic之单选框
    SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE locks在RR模式下可以看到最新的记录
    14.5.2.3 Consistent Nonlocking Reads 一致性非锁定读
    14.5.2.2 autocommit, Commit, and Rollback
    14.5.2 事务隔离级别
    对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间
    mysql explain 解释
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/7767458.html
Copyright © 2011-2022 走看看