curl命令详解

吃可爱长大的小学妹 提交于 2020-05-08 19:05:17

概述

可以这么理解curl命令,curl帮忙构建http请求和接受http响应,所以需要了解http报文格式,以及每个结构使用什么参数进行指定

http报文

请求报文
  • 请求行
    • 方法
      • -X 指定方法,可选择GET、POST、HEAD、PUT
      • -I 发起HEAD请求,并打印报文头
    • url 作为curl url的参数
      • -G 指定查询字符串
        • -G -d 'key=value&key=value...' 合并格式
        • -G -d 'key=value' -d 'key=value' 拆分格式
        • --data--urlencode 用于url编码
    • 版本
  • 报文头
    • -H 指定报文头
      • -H 'Content-Type: text/plain' 指定类型
        • Content-Type: text/xml xml格式
        • Content-Type: text/plain文本
        • Content-Type: application/json json格式
        • application/x-www-form-urlencoded 默认格式
    • 特殊报文头
      • -e 指定Referer 表示请求来源
      • -A User-Agent
        • 默认为curl/[version]
      • -b 指定cookie报文头
        • -b 'foo1=bar1;foo2=bar2'
        • -b cookies.txt 读取本地文件
          • ps:可以和后续的-c cookies.txt配合使用
  • 报文体 -d 指定报文体,并且如果没有-G,则默认方法为POST,可以不用指定-X POST
    • 从文件中读取
    • 参数格式
      • 文本格式
        • -d 'key=value&key=value...' 合并格式
        • -d 'key=value' -d 'key=value' 拆分格式
        • --data--urlencode 用于url编码
      • json格式
        • '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json'
      • xml格式
        • -d '<user><login>ann</login><password>123</password></user>' -H 'Content-Type: text/xml'
响应报文
  • 状态行
    • 版本
    • 状态码
      • -i 打印报文头
    • 原因短语
  • 报文头
    • -c 下载cookies到本地文件
  • 响应报文体
    • -o 指定文件保存
    • -O 以url的最后部分当做文件名

其他

文件上传

-F 支持二进制文件上传

  • -F 'file=@filename;type=image/png;filename=xx'
    • file指定本地上传的文件
    • type指定MIME
    • filename指定上传的文件名
重定向支持

-L 支持自动重定向,默认对于3xx是不重定向的

ssl
  • -k 跳过ssl检测
--limit-rate 限流测试

--limit-rate 200k

-s

跳过进度信息和错误信息

-S

只输出错误信息

-x

指定代理

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!