Linux命令行工具:curl详解(与服务器之间传输数据)

目录

一、命令概述

二、curl的基本功能和特点

1、文件传输工具

2、综合传输工具

3、丰富的功能

三、curl的语法、参数和选项

1、基本语法

2、参数和选项

3、帮助

三、curl的主要功能

1. 发送HTTP请求

2. 下载文件

3. 上传文件

4. 设置请求头和参数

5. 代理和认证

6. 验证服务器证书

7. 异常处理和调试

四、基本用法示例

1. 获取网页内容

2. 将输出保存到文件

3. 发送 POST 请求

4. 发送带有头部的请求

5. 使用 HTTP Basic 认证

6. 下载文件

7. 显示响应头信息

8. 使用 cookies

9. 跟随重定向

五、高级用法示例

1. 处理 HTTP 认证

2. 代理支持

3.  Socks5 代理

4. 上传文件

5. HTTPS 站点访问

6. curl 结合脚本

7. 使用 HTTP/2

8. 头部信息

9. 时间戳和断点续传

10. 处理 cookies

11. 调试和错误输出

六、总结


一、命令概述

        Linux下的curl工具是一个功能强大的、用于与服务器之间传输数据的命令行工具。支持许多常见的协议,如 HTTPHTTPSFTP 等。curl 命令在开发、测试和日常使用中广泛使用,它可以帮助用户检查服务器的响应、上传或下载数据,以及进行各种网络相关的操作。

二、curl的基本功能和特点

1、文件传输工具

        curl是一个利用URL规则在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等。

2、综合传输工具

        curl不仅支持文件的下载,还支持文件的上传,以及通过HTTP POST等方式发送表单数据。

3、丰富的功能

        curl提供了一系列非常有用的功能,包括代理访问、用户认证、cookie支持、断点续传等。

三、curl的语法、参数和选项

1、基本语法

        curl [options] [URL] [data]

        解释如下:

        [options]  是 curl 提供的各种选项,用于控制传输的行为。

        [URL]      是想要访问的 URL,可以是一个网页、一个文件、一个 API 端点等。

        [data]      是发送给服务器的数据,通常在 POST 请求中使用。

2、参数和选项

        curl提供了丰富的参数和选项,以满足不同的需求。以下是一些常用的参数和选项:

 -A/ --user-agent <string>:设置用户代理发送给服务器。

 -b/ --cookie <name=string/file>:cookie字符串或文件读取位置。

 -c/ --cookie-jar <file>:操作结束后把cookie写入到这个文件中。

 -d/ --data:发送POST请求时,用于指定请求体的数据。

-D/ --dump-header:将响应的 HTTP 头保存到文件中。

 -F/ --form:用于上传文件。

 -H/ --header:直接指定请求头。

 -I/ --head:仅请求页面的头部信息,不返回页面内容。

 -k/ --insecure:允许连接HTTPS时跳过证书验证(不安全,慎用)。

 -o/ --output:把输出写到该文件中。

 -O/ --remote-name:把输出写到该文件中,保留远程文件的文件名。

 -s/ --silent:静音模式,不输出任何东西。

 -u/ --user <user[:password]>:设置服务器的用户和密码。

 -x/ --proxy <host[:port]>:在给定的端口上使用HTTP代理。

3、帮助

        使用如下命令:

        curl  -h

        查看帮助信息,如下图所示:

三、curl的主要功能

1. 发送HTTP请求

   - curl可以发送不同类型的HTTP请求,如GET、POST、PUT、DELETE等。

   - 通过设置不同的参数和选项,curl可以模拟各种HTTP请求场景。

2. 下载文件

   - curl可以通过HTTP、HTTPS、FTP等协议下载文件,并将文件保存到本地。

   - 支持断点续传功能,确保在传输过程中遇到中断时可以从断点处继续传输。

3. 上传文件

   - curl可以通过HTTP、FTP等协议上传文件到指定的服务器。

   - 支持多种上传方式,如通过表单提交上传文件等。

4. 设置请求头和参数

   - curl可以设置请求头信息,如User-Agent、Referer等。

   - 可以通过命令行参数或文件参数设置请求参数,如URL参数、POST数据等。

5. 代理和认证

   - curl支持设置代理服务器,可以方便地通过代理访问网络资源。

   - 支持用户认证功能,可以保护敏感资源的安全访问。

6. 验证服务器证书

   - curl可以验证服务器的证书,确保数据传输的安全性。

   - 支持证书链的验证,进一步提高安全性。

7. 异常处理和调试

   - curl可以处理服务器返回的不同状态码,如301、302、401等。

   - 支持详细的请求和响应输出,方便进行调试和排查问题。

四、基本用法示例

1. 获取网页内容

        使用如下命令:

             curl https://www.csdn.net/qc

        输出结果如下:

[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# curl https://www.csdn.net/qc
<!doctype html><html lang="zh" data-server-rendered="true"><head><title>CSDN质量分数</title> <meta name="keywords" content="CSDN质量分数"> <meta name="description" content="CSDN质量分数"> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> <meta name="referrer" content="always"> <!----> <!----> <!----> <!----> <!----> <!----> <!----> <link rel="shortcut icon" href="https://g.csdnimg.cn/static/logo/favicon32.ico" type="image/x-icon"> <!----> <!---->
          <meta name="toolbar" content={"el":".csdn-index-toobar","type":"0","model":"mini"} />

          <meta name="report" content={"spm":"1000.2507"} />
       <script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js,user-tooltip/2.7/user-tooltip.js,lib/qrcode/1.0.0/qrcode.min.js"></script> <script src='//g.csdnimg.cn/common/csdn-report/report.js' type='text/javascript'></script>
         <script src="https://g.csdnimg.cn/user-ordercart/2.0.1/user-ordercart.js?ts=2.0.1"></script>
       <!---->
          <script src="https://g.csdnimg.cn/common/csdn-login-box/csdn-login-box.js" defer></script>

         <script src="https://g.csdnimg.cn/user-ordertip/3.0.2/user-ordertip.js?t=3.0.2"></script>
       <!----> <!----> <!----> <!----> <!----> <!---->
         <script src="https://g.csdnimg.cn/common/csdn-toolbar/csdn-toolbar.js" defer></script>
       <!----><link rel="stylesheet" href="https://csdnimg.cn/release/cmsfe/public/css/common.4836bc5e.css"><link rel="stylesheet" href="https://csdnimg.cn/release/cmsfe/public/css/tpl/www-qc-index/index.a8660d65.css"></head> <body><!----> <div id="app"><div><div class="main"><div class="page-container page-component"><div class="home_wrap"><div id="floor-csdn-index_850"><div comp-data="[object Object]" floor-data="[object Object]" class="floor-csdn-index" data-v-805b8da2><div class="csdn-body" data-v-805b8da2><div class="csdn-body-box" data-v-805b8da2><div class="csdn-body-left" data-v-805b8da2><div class="csdn-body-img" data-v-805b8da2><img src="https://csdnimg.cn/release/cmsfe/public/img/qc-title.f19a383c.png" alt data-v-805b8da2> <p data-v-805b8da2><img src="https://csdnimg.cn/release/cmsfe/public/img/qc-help.ab943e37.png" alt class="help" data-v-805b8da2> <a href="https://blog.csdn.net/u010280923/article/details/131449478" target="_blank" data-v-805b8da2>规则说明</a></p></div> <span data-v-805b8da2>CSDN 质量分是一项公开的 CSDN 博文内容质量分析服务,其综合分析了内容的标题、段落结构、正文长度、代码格式及复杂度、链接和超文本内容比例及质量等因素,为 IT 技术文章提供客观公共的质量分析结果。</span> <div class="trends-input-box end" data-v-805b8da2><div aria-haspopup="listbox" role="combobox" aria-owns="el-autocomplete-96" class="el-autocomplete inline-input"><div class="el-input"><!----><input type="text" autocomplete="off" valueKey="value" popperClass="csdn-input-autocomplete" placeholder="输入 CSDN 站内任意博文链接查询分析" fetchSuggestions="function () { [native code] }" triggerOnFocus="true" debounce="300" placement="bottom-start" popperAppendToBody="true" class="el-input__inner"><!----><!----><!----><!----></div><div role="region" class="el-autocomplete-suggestion el-popper csdn-input-autocomplete" style="width:;display:none;"><div class="el-scrollbar"><div class="el-autocomplete-suggestion__wrap el-scrollbar__wrap el-scrollbar__wrap--hidden-default"><ul class="el-scrollbar__view el-autocomplete-suggestion__list"></ul></div><div class="el-scrollbar__bar is-horizontal"><div class="el-scrollbar__thumb" style="width:0;transform:translateX(0%);ms-transform:translateX(0%);webkit-transform:translateX(0%);"></div></div><div class="el-scrollbar__bar is-vertical"><div class="el-scrollbar__thumb" style="height:0;transform:translateY(0%);ms-transform:translateY(0%);webkit-transform:translateY(0%);"></div></div></div></div></div> <div data-report-click="{&quot;spm&quot;:&quot;3001.8633&quot;}" data-report-view="{&quot;spm&quot;:&quot;3001.8633&quot;}" class="trends-input-box-btn"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAwCAYAAABwrHhvAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAMAAAAADMZvVxAAACj0lEQVRYCe2Wv2tVMRzF322xVZEKgi3FwcEO6mwXi+DgUChoQfwLOjvpVqGTo26uUoo6OXV0E5UupYgg7VAQUaHoIApKC9Ln59Tk9duYvOT92Hq/cF6++eack5D77k0ajTrqHah3oN6Bw74DVScb0Gw2j8I/D06Dk077g/Yb2KiqatvV+tsw8SRYBtsgFRoTZ7Jvs2M2Ap6BTkOakZKFJB8BBhMYLIMLgdEq/Vfgi6ufob0CLrm+b9ZJrvNYNn2huGXyUfAR+NgleQrOpUw05jji+pDHaEoTrSMYBK+9A+0vcDNKjhTFdRqavZDXYIQaL0Ge+6fb+/3D77U4M12VBkjrYy7NNiOwh8Fnr6KdN8MdpWjvGR95DmcNIM0Y0SdyvfddhbRAHj5mYkYDQXHW9Jd6+bA47ZLxs96mbFKWuuaXS3vZDHWVysP4rWVNIG8ZwVhWkCHgNWb8tjL0RgPyjhEMZQUZAl5Dxm8nRg//A18NqbMPiBGa1HpY7xYlXID/vIpwscXqPrEe1rvlGC5A33gfN3zSQ2s9rHfckuc1ZZ7ZT3Kd+12FtEAePqayRjAHwFuvoH2cFSUI0hofeSZP3gMWEKeNUOntA4SCjjSBx3SBbJ+CeDEwuE8/e6KJA8S1sbjvXJih1qH0xrqQvwe3wLHQRjU3Jo6ND3TaHkLJ54LwBBM9AfafrLl/A92K/GulG5FuQ8dBLB5SvMvZ0IwNtq2xiArcAd9BaYi7GZB1mzrSdrJ2g4hPgQXwDqRCYwtAXD3C58DGCzra1d5CJmAcTDgo/8+Yml7pR8DGKh37ee5tMSVqJrQ3Iy3mZYmurxwm1T3T3xFX+mpeasYCroIH4GyppubVO1DvQL0Dh2MH/gJmUHQpGQXkxAAAAABJRU5ErkJggg==" alt> <span>查询</span></div></div></div> <!----></div></div> <div class="blog-rank-footer" data-v-805b8da2> <script type="text/javascript" src="https://g.csdnimg.cn/common/csdn-footer/csdn-footer.js"  ></script></div></div></div></div></div></div> <!----></div></div><script> window.__INITIAL_STATE__= {"csrf":"8NNwG4oU-B-7lZ-N1TyCoNyy11Nf6vkhMID0","origin":"http:\u002F\u002Fwww.csdn.net","isMobile":false,"cookie":"uuid_tt_dd=10_20324854060-1718984133438-270649;","ip":"121.37.68.30","pageData":{"page":{"pageId":224,"title":"CSDN质量分数","keywords":"CSDN质量分数","description":"CSDN质量分数","ext":{"helpUrl":"https:\u002F\u002Fblog.csdn.net\u002Fu010280923\u002Farticle\u002Fdetails\u002F131449478","customToolbar":"[{\"name\":\"CSDN指数\",\"url\":\"https:\u002F\u002Fwww.csdn.net\u002Ftrends\",\"spm\":\"\",\"className\":\"custom_toolbar_content_nomoral\"},{\"name\":\"质量分查询\",\"url\":\"https:\u002F\u002Fwww.csdn.net\u002Fqc\",\"spm\":\"\",\"active\":1,\"className\":\"custom_toolbar_content_active\"}]"}},"template":{"templateId":142,"templateComponentName":"www-qc-index","title":"csdn质量分数","floorList":[{"floorId":850,"floorComponentName":"floor-csdn-index","title":"csdn质量分数","description":"csdn质量分数","indexOrder":1,"componentList":[]}]},"data":{}},"CFG":{"ALIPLAYER_VERSION":"v4","ALIPLAYER_H5_VERSION":"mobile_v1","ENV":"prod","ROOT_URL":"https:\u002F\u002Fcms.csdn.net\u002F","VUE_APP_API_URL_SERVER":"http:\u002F\u002Fcms-api.csdn.net\u002F","VUE_APP_API_URL":"https:\u002F\u002Fcms-api.csdn.net\u002F","EDU_APP_API_URL":"https:\u002F\u002Fedu-core-api.csdn.net\u002F","EDU_APP_API_URL_SERVER":"http:\u002F\u002Fedu-core-api.csdn.net\u002F","EDU_APP_API_URL_PRE":"https:\u002F\u002Fedu-core-api.csdn.net\u002F","EDU_OLD_APP_API_URL":"https:\u002F\u002Fedu.csdn.net\u002F","LOGIN_URL":"https:\u002F\u002Fpassport.csdn.net\u002Faccount\u002Flogin","CART_JSONP_URL":"https:\u002F\u002Fg.csdnimg.cn\u002Fuser-ordercart\u002F1.0.3\u002Fuser-ordercart.js","VUE_Mall_API_URL":"https:\u002F\u002Fmall.csdn.net\u002F","VUE_APP_COMMUNITY_API_URL":"https:\u002F\u002Fcommunity-api.csdn.net\u002F","VUE_APP_CCLOUD_API_URL":"https:\u002F\u002Fbizapi.csdn.net\u002Fcommunity-cloud\u002Fv1\u002F","VUE_APP_CCLOUD_RESUME":"https:\u002F\u002Fbizapi.csdn.net\u002Fjob-api\u002F","VUE_APP_SKILL_API_URL":"https:\u002F\u002Fbizapi.csdn.net\u002Fskilltree\u002Fapi\u002F","VUE_APP_CCLOUD_MAIN":"https:\u002F\u002Fwww.csdn.net\u002F","VUE_APP_BLOG_API_URL":"https:\u002F\u002Fblog.csdn.net\u002F","VUE_APP_COMMUNITY_ASK_API_URL":"https:\u002F\u002Fask.csdn.net\u002F","VUE_APP_COMMUNITY_blog_ASK_URL":"https:\u002F\u002Fask.csdn.net\u002F","VUE_APP_ASK_API_URL":"https:\u002F\u002Fask.csdn.net\u002F","VUE_APP_ASK_URL":"https:\u002F\u002Fask.csdn.net\u002F","VUE_ASK_Mall_API_URL":"https:\u002F\u002Fmall.csdn.net\u002F","VUE_APP_ASK_RECOMMEND":"https:\u002F\u002Fblog.csdn.net\u002F","VUE_APP_ME_URL":"https:\u002F\u002Fme.csdn.net\u002F","SENTRY_URL":"https:\u002F\u002F2941f33f1bd6418ca4b13d3bbce5dd29@sentry.csdn.net\u002F6","VUE_APP_BLOG_MP_ACTIVE":"https:\u002F\u002Fbizapi.csdn.net\u002Fmp-action\u002F","BIZ_URL":"https:\u002F\u002Fbizapi.csdn.net\u002F","VUE_APP_SKILL_API_URL_SERVER":"http:\u002F\u002Fcsdn-skilltree-api.internal.csdn.net\u002F"},"queries":{"pageId":[],"domain":["www.csdn.net\u002Fqc"],"id":[null],"deviceType":"pc"},"basePath":"www.csdn.net\u002Fqc","active":0,"navBarFixed":false};</script><script type="text/javascript" src="https://csdnimg.cn/release/cmsfe/public/js/runtime.d0bc2352.js"></script><script type="text/javascript" src="https://csdnimg.cn/release/cmsfe/public/js/chunk/common.94ef72d7.js"></script><script type="text/javascript" src="https://csdnimg.cn/release/cmsfe/public/js/chunk/tpl/www-qc-index/index.398f8d50.js"></script></body> <!----> <!----> <!----> <!----> <!----> <!----> <!----> <!----> <!----> <!----> <!---->
         <script src="https://g.csdnimg.cn/side-toolbar/3.0/side-toolbar.js" ></script>

        <script src="https://g.csdnimg.cn/user-login/3.0.0/user-login.js"></script>
       <!----> <!----> <!---->
        <script src="https://g.csdnimg.cn/user-medal/1.0.6/user-medal.js"></script>
       <!----> <!----></html>[root@ecs-52a1 home]#
[root@ecs-52a1 home]#

2. 将输出保存到文件

          使用如下命令:

           curl -o filename.html http://example.com

  

3. 发送 POST 请求

          使用如下命令:

           curl -d "param1=value1&param2=value2" -X POST http://example.com/resource

  

4. 发送带有头部的请求

          使用如下命令:

   curl -H "Content-Type: application/json" -X POST -d '{"key1":"value1", "key2":"value2"}' http://example.com/resource

  

5. 使用 HTTP Basic 认证

          使用如下命令:

           curl -u username:password http://example.com

  

6. 下载文件

          使用如下命令:

           curl -O http://example.com/file.tar.gz

  

7. 显示响应头信息

          使用如下命令:

           curl -I http://example.com

  

8. 使用 cookies

        使用如下命令:

           curl -b cookies.txt -c cookies_new.txt http://example.com

  

9. 跟随重定向

          使用如下命令:

           curl -L http://example.com

  

五、高级用法示例

1. 处理 HTTP 认证

          使用如下命令:

           curl -u user:pass http://csdn.net

  

2. 代理支持

          使用如下命令:

           curl -x proxy:port http://csdn.net

  

3.  Socks5 代理

          使用如下命令:

           curl -x socks5://username:password@proxy.server.com:port/ http://example.com

  

4. 上传文件

          使用如下命令:

           curl -F "file=@path/to/local/file" http://example.com/upload

  

5. HTTPS 站点访问

          使用如下命令:        

           curl -k https://example.com

  

6. curl 结合脚本

          使用如下脚本:

   !/bin/

   curl -s http://example.com/api/data | json_pp

  

7. 使用 HTTP/2

          使用如下命令:

           curl -HTTP2 http://example.com

  

8. 头部信息

          使用如下命令:

           curl -H "User-Agent: my-app" http://example.com

  

9. 时间戳和断点续传

          使用如下命令:

           curl -T /path/to/local/file -C - http://example.com/remote/file

  

10. 处理 cookies

           使用如下命令:

            curl -b cookies.txt -c cookies_new.txt http://example.com

   

11. 调试和错误输出

           使用如下命令:

            curl -v http://example.com

           输出结果如下:

[root@ecs-52a1 home]#
[root@ecs-52a1 home]# curl -v http://vidisit.cn
* About to connect() to vidisit.cn port 80 (#0)
*   Trying 118.123.16.102...
* Connected to vidisit.cn (118.123.16.102) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: vidisit.cn
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: wts/1.19.9.1
< Date: Fri, 21 Jun 2024 15:40:39 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Accept-Ranges: bytes
< X-Frame-Options: SAMEORIGIN
<
* Connection #0 to host vidisit.cn left intact
<script>window.location='./index.php'</script>[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#

六、总结

        curl 的选项非常丰富,可以根据不同的需求进行组合使用。

        此外,curl 还支持自定义请求头、处理 JSON、XML 等数据格式,以及通过脚本进行更复杂的操作。

        curl是一个功能强大的命令行工具,在Linux系统中得到了广泛的应用,对于任何需要与网络服务交互的场合都非常有用。无论是进行网络开发、测试,还是进行日常的网络操作,curl都能提供极大的便利和灵活性。

        通过熟练掌握curl的使用方法和参数选项,可以更加高效地进行网络数据的传输和处理。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值