本文最后更新于:星期六, 三月 14日 2020, 5:40 下午

curl命令行工具的用法

curl简介

curl是一个开源的用于数据传输的命令行工具与库,主要用来发出网络请求,然和得到和提取数据,最后显示在“标准输出”上。它使用URL语法格式,支持很多种协议,如 DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS 等等。curl库提供了很多功能,可以用来进行HTTP/HTTPS请求,上传/下载文件等,并且它还支持Cookie、认证、代理、限速等。

curl的使用

访问URL

curl命令后面直接加上要访问的网址,就可以看到网页的源码 ,它不加任何参数时发出的请求是GET请求。

image-20200313103600691

如果想将这个网页保存下来,可以使用’-o’参数,指定保存的文件名

image-20200313103910537

  • 重定向跟踪

    如果页面使用了重定向,可以使用‘-L’参数来跟踪URL重定向,curl就会跳转到新网址

  • 查看头信息

    如果需要查看访问的页面可以使用 参数 ‘-i’, 如果只需要查看头信息可以用参数’-I’

    image-20200313110455978

    image-20200313110513410

  • 显示通信过程

    ‘-v’参数可以显示一次http通信的完整过程,包括端口连接,以及http request头信息

    image-20200313110902622

    如果需要更加详细的信息,可以使用’–trace’ 或者’–trace-ascii’参数,这两个参数后面加要保存的文件名

指定请求方式

curl通过’-X’参数来指定请求方式,默认不加这个参数时使用GET请求

  • GET请求

    不加参数或者使用’-X GET’指定

    curl -X GET URL
    

    假设表单源码为

    <form name="input" action="demo.php" method="GET" >
        <input type="text" name="nickname">
        <input type="password" name="passwd">
        <input type="submit" value="Submit">
    </form>
    

    直接将参数附在网址后面就可以了

    curl http://192.168.45.129/demo1.html?nickname=zs0zrc&&passwd=123
    
  • POST请求

    curl使用POST提交表单数据时,除了使用’-X’指定请求方法,还要用’-d’ 指定请求数据。如果数据没有经过URL编码,可以用’–data-urlencode’来对数据进行编码

    假设表单源码为

    <form name="input" action="demo.php" method="POST" enctype="multipart/form-data">
        <input type="text" name="nickname">
        <input type="password" name="passwd">
        <input type="submit" value="Submit">
    </form>
    

    命令:

    curl -X POST -d "nickname=zs0zrc&passwd=123" http://192.168.45.129/demo1.html
    curl -X POST --data-urlnecode "nickname=zs 0zrc&passwd=123" http://192.168.45.129/demo1.html
    

    因为使用了’-d’参数后,HTTP请求会自动添加Content-Type: application/x-www-form-urlencoded

    并且会自动将请求方法转换为POST,所以可以直接这样用

    curl -d "nickname=zs0zrc&passwd=123" http://192.168.45.129/demo1.html
    

    -d参数可以直接读取本地文件的内容,作为数据体向服务器传送

    curl -d "@data.txt" http://192.168.45.129/demo1.html
    

    如果要以json的格式上传参数,要使用’-H’指定header

    curl -H "Content-Type:application/json" -X POST -d '{"username":"zs0zrc","passwd":"123"}' [URL]
    
  • 指定cookie

    使用’–cookie’参数可以让curl发送cookie

    curl --cookie "usrname=zs0zrc" www.example.com
    

    curl可以通过’-c’参数保存服务器返回的cookie值到文件,然后通过’-b’参数指定目标文件作为cookie信息

    curl -c cookies http://example.com
    curl -b cookies http://example.co
    
  • 增加header信息

    使用’–header’参数,后面加需要添加的头信息

    curl --header "Content-Type:application/json"  http://example.com
    
  • HTTP基本认证

    使用’–user’参数,指定name和password

    curl --user name:password http://example.com
    

REFERENCE


tool     

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!