美文网首页
linux命令之 curl

linux命令之 curl

作者: 黑曼巴yk | 来源:发表于2019-10-06 21:34 被阅读0次

    前言

    CURL是一个命令行工具,curl中的c表示client。用于通过指定URL来上传或者下载数据,并将数据展示出来。

    Verbose模式

    如果curl得到的结果不是期望的结果,我们可以使用-v或者--verbose进入verbose模式获取更多的信息

    1. 查看通信的过程
    curl -v www.baidu.com
    

    得到通信的过程

    * Rebuilt URL to: www.baidu.com/
    *   Trying 14.215.177.39...
    * TCP_NODELAY set
    * Connected to www.baidu.com (127.0.0.1) port 80 (#0)
    > GET / HTTP/1.1
    > Host: www.baidu.com
    > User-Agent: curl/7.54.0
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Accept-Ranges: bytes
    < Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
    < Connection: Keep-Alive
    < Content-Length: 2381
    < Content-Type: text/html
    < Date: Sun, 06 Oct 2019 12:44:39 GMT
    < Etag: "588604dd-94d"
    < Last-Modified: Mon, 23 Jan 2017 13:27:57 GMT
    < Pragma: no-cache
    < Server: bfe/1.0.8.18
    < Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
    
    1. 更加详细的信息
      如果觉得-v信息还不够的话,还可以使用--trace-ascii [filename]选项将完整流程保存到filename
    curl --trace-ascii dump www.baidu.com
    

    结果如下:

    == Info: Rebuilt URL to: www.baidu.com/
    == Info:   Trying 14.215.177.39...
    == Info: TCP_NODELAY set
    == Info: Connected to www.baidu.com (127.0.0.1) port 80 (#0)
    => Send header, 77 bytes (0x4d)
    0000: GET / HTTP/1.1
    0010: Host: www.baidu.com
    0025: User-Agent: curl/7.54.0
    003e: Accept: */*
    004b:
    <= Recv header, 17 bytes (0x11)
    0000: HTTP/1.1 200 OK
    <= Recv header, 22 bytes (0x16)
    0000: Accept-Ranges: bytes
    <= Recv header, 76 bytes (0x4c)
    0000: Cache-Control: private, no-cache, no-store, proxy-revalidate, no
    // ...
    

    浏览器到curl

    image.png

    HTTP和curl

    1. GET/POST/DELETE/PUT等方法
    get:
        curl -v 192.168.33.1:8080/girls/age/18
    
    post:
        curl -v 192.168.33.1:8080/girls -d 'age=14&cupSize=C'
        curl -v -X POST 192.168.33.1:8080/girls -d 'age=14&cupSize=C'
    
    put:
        curl -v -X PUT -d "age=19&cupSize=C" 192.168.33.1:8080/girls/3
    
    delete:
        curl -v -X DELETE 192.168.33.1:8080/girls/3
    
    1. 传递自定义Header
      提交application/jsonJSON 格式的数据
    curl -d 'name=dankun' -H 'Content-Type: application/json' http://example.com
    

    Cookies

    http是一种无状态的协议,为了在会话中保存一些状态,可以使用Cookies.服务器通过set-cookie来设置Cookie,客户端就可以在下一次请求中带上这些数据

    1. 设置cookie
    curl --cookie 'name=dankun' http://example/com
    
    1. 从文件中读取cookies
      curl 默认不会记住服务器设置的Cookie,也不会在下一次的请求中携带Cookie。我们可以把之前的Cookies保存到一个文件中,然后下一次请求中指定curl读取文件中的cookies
    curl -b cookie.jar.txt www.baidu.com
    
    1. 写cookies到文件中
      www.baidu.com的cookie写入到cookie.jar.txt文件中。
    curl -c cookie.jar.txt www.baidu.com
    

    我们可以既从文件中读取Cookies也需要同时保存服务器设置的Cookies。可以使用-b, -c选项:

    curl -b cookies.txt -c cookie.jar.txt www.baidu.com
    

    代理配置

    可以通过配置代理服务器进行网络访问

    curl -x 123.45.67.89:1080 www.baidu.com
    

    忽略输出

    -o代表输出设备,我们将输出设备为空。

    curl -v -o /dev/null www.baidu.com
    

    相关文章

      网友评论

          本文标题:linux命令之 curl

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