• curl


    一、简介

     curl是一个命令行访问URL的工具,支持文件的上传和下载,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。可以用它构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的

     基本功能,curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。

     二、参数

    参数 说明
    不加参数
    正常访问,返回html信息(get请求方式)
    -I
    只显示http response 的头信息
    -i
    输出时包括protocol头信息
    -v
    输出通信的整个过程,多用于调试
    --tarce
    也可用于调试,还会输出原始的二进制数据
    -L
    会让http请求跟随服务的重定向(curl 默认不跟随重定向)
    -s
    静默模式,不输出错误跟进度信息
    -S
    只输出错误信息,通常与-s一起使用
    -o
    将服务器的回应保存成文件到当前目录下,可加路径保存(相当于wget命令)
    -O  
    将服务器回应保存成文件,并将 URL 的最后部分当作文件名保存当前目录(加http/https,url要精确到某个文件)
    -w  
    用于在一次完整且成功的操作后输出指定格式的内容到标准输出,后接变量(后文列出变量)
    示例  
    curl -o /dev/null -s -w %{http_code} www.nginx.com
    直接获取 HTTP 状态码(可用于脚本判断网站是否正常)
       
    -d

    用于发送 POST 请求的数据体(即传送数据)

    curl -d'login=emma&password=123'-X POST https://google.com/

    使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded

    -d参数可以读取本地文本文件的数据,向服务器发送

    curl -d '@test.txt' https://google.com/

    上面命令读取test.txt文件的内容,作为数据体向服务器发送

    --data-urlencode

    等同于 -d 发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码

    curl --data-urlencode 'comment=hello world' https://google.com/

     -u

    设置服务器认证的用户名和密码

    curl -u 'test:123456' https://www.baidu.com/

    参数
    说明
    示例
    -x
    指定proxy服务器以及其端口,不支持https
    curl -x 127.0.0.1:8080 http://www.baidu.com
    --resolve
    指定域名解析的ip,支持https,支持通配符*
    curl https://www.nginx.com --resolve 148.23.23.*:443
    -X
    指定HTTP请求的方法(GET/POST/PUT/DELETE)
     
    curl -X POST https://www.baidu.com
    -A
    指定User-Agent
     
    curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36" https://www.baidu.com
    -H
    指定请求头
     
    curl -H "" https://www.baidu.com
    -k 允许curl使用非安全的ssl连接并且传输数据(证书不受信)  
    -G 构造URL的查询字符串,如省略,会发送post请求 curl -G -d 'a=test' -d 'count=20' https://nginx.com/search 相当于访问:https://nginx.com/search?a=test&count=20

    三、-w参数变量

    参数 说明
    url_effective
    最终获取的url地址,尤其是当你指定给curl的地址存在301跳转,且通过-L继续追踪的情形
    http_code
    http状态码
    time_total
    总时间,按秒计。精确到小数点后三位
    time_namelookup
    DNS解析时间,从请求开始到DNS解析完毕所用时间
    time_connect
    连接时间,从开始到建立TCP连接完成所用时间,包括前边DNS解析时间,如果需要单纯的得到连接时间,用这个time_connect时间减去前边time_namelookup时间
    time_appconnect
    连接建立完成时间,如SSL/SSH等建立连接或者完成三次握手时间
     
    time_pretransfer
     
    从开始到准备传输的时间
     
    time_redirect
     
    重定向时间,包括到最后一次传输前的几次重定向的DNS解析,连接,预传输,传输时间
     
    time_starttransfer
     
    开始传输时间。在发出请求之后,Web 服务器返回数据的第一个字节所用的时间
       
    size_download
    下载大小
    size_upload
    上传大小
    size_request
    请求的大小
    speed_download
    下载速度,单位-字节每秒
    speed_upload
    上传速度,单位-字节每秒
    num_connects
    最近的的一次传输中创建的连接数目
    num_redirects
     
    在请求中跳转的次数
    ftp_entry_path
     
    当连接到远程的ftp服务器时的初始路径
     
    ssl_verify_result
     
    ssl认证结果,返回0表示认证成功

     四、

    #测试网络
    curl -Lo /dev/null -skw "time_connect: %{time_connect} s\ntime_namelookup: %{time_namelookup} s\ntime_pretransfer: %{time_pretransfer} s\ntime_starttransfer: %{time_starttransfer} s\ntime_redirect: %{time_redirect} s\nspeed_download: %{speed_download} B/s\ntime_total: %{time_total} s\n\n"  http://url -d "{1:1}"
  • 相关阅读:
    [JXOI2018]游戏
    UltraISO制作启动盘安装CentOS7
    龙芯、鲲鹏、飞腾等国产平台的浏览器
    浏览器相关性能测试网址
    有没有一种组合字体,中文是宋体,英文是times new roman?
    中国航天科工集团第二研究院706所招聘
    华为云
    面试阿里P6难在哪?(面试难点)
    Linux下配置环境变量—— .bashrc 和 /etc/profile
    Linux 内存 占用较高问题排查
  • 原文地址:https://www.cnblogs.com/Xinenhui/p/15204779.html
Copyright © 2020-2023  润新知