目录
一、命令概述
Linux下的curl工具是一个功能强大的、用于与服务器之间传输数据的命令行工具。支持许多常见的协议,如 HTTP、HTTPS、FTP 等。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="{"spm":"3001.8633"}" data-report-view="{"spm":"3001.8633"}" 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¶m2=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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。