zoukankan      html  css  js  c++  java
  • curl 常用操作总结

    curl-logo

    前言

    curl 是一个强大的命令行工具,支持 HTTP, HTTPS, SCP 等多种协议,本文主要总结一下其常用的功能,方便及时查阅。

    curl --version
    curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
    Release-Date: 2020-01-08
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
    Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets
    

    命令行选项

    短选项

    curl -v baidu.com # 显示中间的操作过程
    curl -L baidu.com # 跟随 HTTP 重定向
    curl -vL baidu.com # vL 可以写在一起
    curl -v -L baidu.com # v L 可以分开
    curl baidu.com -vL # vL 可以放在目标后面
    

    长选项

    虽然短选项写起来简单快速,但是英文字母是有限的,所以能控制的功能开关也是有限的。

    长选项虽然写起来慢点,但能控制的功能更多,且代码可读性会更好。

    curl --verbose --location baidu.com
    

    带参数选项

    不是所有的功能都像开关似的,只有 true 和 false 两种值,有些功能需要传递参数。

    curl -d '{"username":"xyz","password":"abc"}' example.com
    curl -d @info.json example.com # 也可以直接从文件中读取
    

    HTTP 基本操作

    GET

    curl www.baidu.com
    

    POST

    curl -d 'name=xiaoming&age=18' baidu.com
    

    -d 参数会默认生成 request header Content-Type: application/x-www-form-urlencoded

    使用 -H 参数定制 request header

    curl -v -H 'Content-Type: application/json' -d '{"name":"xiaoming","age":"18"}' baidu.com
    
    curl --data-binary @filename baidu.com # 发送原始2进制文件
    

    PUT DELETE

    使用 -X 来改变 http request method

    curl -d "data" -X PUT http://example.com
    curl -d  -X PUT http://example.com
    
    # 将请求获取的 cookie 保存到 cookie.txt 文本中
    curl --cookie-jar cookie.txt --data '{"name":"abc","password":"xyz"}' example.com
    
    # 携带 cookie 请求其他接口
    curl --cookie cookie.txt example.com
    

    获取响应状态码

    code=$(curl -o /dev/null --silent --write-out "%{http_code}
    " baidu.com)
    echo $code
    

    -o /dev/null 将返回内容输出到空设备

    output-to-dev/null

    --silent 静默模式,即没有以上的统计信息

    --write-out 在请求完成后,将一些特定信息打印到控制台上,比如:methodhttp_coderemote_ip

    url encode

    curl --get --data-urlencode 'targets=["www.baidu.com"]' example.com
    # example.com?targets=%5B%22www.baidu.com%22%5D
    

    此处双引号和括号都需要进行 url 编码后,服务端才能正常解析

    参考

    Everything curl

    man curl

    github

  • 相关阅读:
    Centos7安装Zabbix4.0步骤
    linux异常处理:selinux配置错误导致无法重启
    自学Python5.4-类 _init_方法
    自学Python5.3-类和对象的简单操作
    自学Linux Shell9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级
    自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包
    自学Linux Shell9.2-基于Red Hat系统工具包存在两种方式之一:RPM包
    JS 对象API之修改、删除对象的属性
    JS 对象API之判断自有属性、共有属性
    JS 对象API之判断父对象是否在子对象的原型链上
  • 原文地址:https://www.cnblogs.com/yahuian/p/summary-of-common-curl-operations.html
Copyright © 2011-2022 走看看