美文网首页
curl 常用命令指南

curl 常用命令指南

作者: 时光已翩然轻擦 | 来源:发表于2020-08-26 14:42 被阅读0次

    curl

    curl:Command Line URL viewer
    curl 是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在“标准输出”(stdout)上面。

    • curl --help 命令可查看帮助信息

    一、查看网页源码

    $ curl www.example.com
    

    输出:

    <!doctype html>
    <html>
    <head>
        <title>Example Domain</title>
    
        <meta charset="utf-8" />
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <style type="text/css">
        body {
            background-color: #f0f0f2;
            margin: 0;
            padding: 0;
            font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
            
        }
        div {
            width: 600px;
            margin: 5em auto;
            padding: 2em;
            background-color: #fdfdff;
            border-radius: 0.5em;
            box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
        }
        a:link, a:visited {
            color: #38488f;
            text-decoration: none;
        }
        @media (max-width: 700px) {
            div {
                margin: 0 auto;
                width: auto;
            }
        }
        </style>    
    </head>
    
    <body>
    <div>
        <h1>Example Domain</h1>
        <p>This domain is for use in illustrative examples in documents. You may use this
        domain in literature without prior coordination or asking for permission.</p>
        <p><a href="https://www.iana.org/domains/example">More information...</a></p>
    </div>
    </body>
    </html>
    
    

    二、保存网页

    • -o 参数:把网页中的文件输出到本地一个文件(自定义文件名)中。等同于wget命令。
    • -O 参数:把网页中的文件输出到本地一个文件(将url的最后部分作为文件名)中。

    1. -o

    $ curl -o output.html www.example.com
    // 保存为output.html
    

    2. -O

    $ curl -O https://www.example.com/foo/bar.html
    // 保存为bar.html
    

    🤔:文件被保存在哪里?

    三、不输出

    • -s参数:不输出错误和进度信息
    • -S参数:指定只输出错误信息,通常与-s 一起使用

    -s

    $ curl -s www.example.com
    // 上面命令一旦发生错误,不会显示错误信息。
    // 不发生错误的话,会正常显示运行结果。
    

    例1:

    image.png

    例2:


    -S

    $ curl -S www.example.com
    // 上面命令没有任何输出,除非发生错误。
    

    四、显示头信息

    • -i 参数:可以显示http response 的头信息,连同网页代码一起。
    • -I 参数:则只显示http response 的头信息。 同 --head

    1. curl -i

    $ curl -i www.sina.com 
    

    输出:

    HTTP/1.1 301 Moved Permanently
    Server: nginx
    Date: Tue, 25 Aug 2020 10:23:22 GMT
    Content-Type: text/html
    Content-Length: 178
    Connection: keep-alive
    Location: http://www.sina.com.cn/
    Expires: Tue, 25 Aug 2020 10:23:45 GMT
    Cache-Control: max-age=120
    X-Via-SSL: ssl.95.sinag1.qxg.lb.sinanode.com
    Edge-Copy-Time: 1598351002111
    Age: 97
    Via: https/1.1 ctc.guangzhou.union.182 (ApacheTrafficServer/6.2.1 [cRs f ]), https/1.1 ctc.ningbo.union.47 (ApacheTrafficServer/6.2.1 [cRs f ])
    X-Via-Edge: 15983510027946ce52478f0beee733509e3da
    X-Cache: HIT.47
    X-Via-CDN: f=edge,s=ctc.ningbo.union.70.nb.sinaedge.com,c=120.36.229.108;f=Edge,s=ctc.ningbo.union.47,c=115.238.190.70
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body bgcolor="white">
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    

    2. curl -I

    $ curl -I www.sina.com 
    // 或者
    $ curl --head www.sina.com
    

    输出:

    HTTP/1.1 301 Moved Permanently
    Server: nginx
    Date: Wed, 26 Aug 2020 01:50:16 GMT
    Content-Type: text/html
    Content-Length: 178
    Connection: keep-alive
    Location: http://www.sina.com.cn/
    Expires: Wed, 26 Aug 2020 01:51:03 GMT
    Cache-Control: max-age=120
    X-Via-SSL: ssl.95.sinag1.qxg.lb.sinanode.com
    Edge-Copy-Time: 1598406615342
    Age: 73
    Via: https/1.1 ctc.guangzhou.union.182 (ApacheTrafficServer/6.2.1 [cRs f ]), https/1.1 ctc.ningbo.union.47 (ApacheTrafficServer/6.2.1 [cRs f ])
    X-Via-Edge: 1598406616333dba8393bf0beee7326154d4c
    X-Cache: HIT.47
    X-Via-CDN: f=edge,s=ctc.ningbo.union.73.nb.sinaedge.com,c=59.57.168.219;f=Edge,s=ctc.ningbo.union.47,c=115.238.190.73
    

    五、显示通信过程

    • -v 参数:可以显示一次http通信的整个过程,包括端口连接和http request头信息。
    • 如果你觉得-v 显示的信息还不够,可以使用 -- trace [输出文件名] 命令或者--trace-ascii [输出文件名]命令查看更详细的内容。
    $ curl -v www.sina.com
    // 或者(以下两个命令运行后请打开output.txt查看)
    $ curl --trace output.txt www.sina.com (含16进制信息)
    $ curl --trace-ascii output.txt www.sina.com (不含16进制信息)
    

    输出

    *   Trying 115.238.190.240...
    * TCP_NODELAY set
    * Connected to www.sina.com (115.238.190.240) port 80 (#0)
    > GET / HTTP/1.1
    > Host: www.sina.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    > 
    < HTTP/1.1 301 Moved Permanently
    < Server: nginx
    < Date: Wed, 26 Aug 2020 02:14:25 GMT
    < Content-Type: text/html
    < Content-Length: 178
    < Connection: keep-alive
    < Location: http://www.sina.com.cn/
    < Expires: Wed, 26 Aug 2020 02:15:13 GMT
    < Cache-Control: max-age=120
    < X-Via-SSL: ssl.22.sinag1.qxg.lb.sinanode.com
    < Edge-Copy-Time: 1598408064302
    < Age: 72
    < Via: https/1.1 ctc.guangzhou.union.182 (ApacheTrafficServer/6.2.1 [cRs f ]), https/1.1 ctc.ningbo.union.47 (ApacheTrafficServer/6.2.1 [cRs f ])
    < X-Via-Edge: 15984080658086ce52478f0beee730184920e
    < X-Cache: HIT.47
    < X-Via-CDN: f=edge,s=ctc.ningbo.union.74.nb.sinaedge.com,c=120.36.229.108;f=Edge,s=ctc.ningbo.union.47,c=115.238.190.74
    < 
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body bgcolor="white">
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    * Connection #0 to host www.sina.com left intact
    * Closing connection 0
    

    六、发送表单信息

    • 发送表单信息有getpost两种方法。
    • get 方法:只要把数据附在网址后面即可。
    • post 方法:必须把数据和网址分开,curl就要用到-data参数。

    1. GET方法

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

    2. POST方法

    $ 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
    

    参考资料

    未完待续……

    相关文章

      网友评论

          本文标题:curl 常用命令指南

          本文链接:https://www.haomeiwen.com/subject/kdvzjktx.html