Curl用法指南
简介

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
它的功能非常强大,命令行参数多达几十种。
curl的基本用法
发送 GET 请求
最简单的用法是向指定的 URL 发送 GET 请求,并在控制台输出返回的内容。
| 1 | curl https://www.example.com | 
运行上述命令后,curl 会输出 https://www.example.com 的 HTML 页面内容。默认情况下,curl 发送一个 HTTP GET 请求,并输出服务器的响应结果到终端。
| 1 | 
 | 
下载文件
使用   curl 可以轻松下载文件,只需要添加 -O 选项即可。
| 1 | curl -O https://example.com/file.zip | 
该命令将下载 file.zip 文件并保存到当前目录。-O 选项表示将文件保存到本地,并保持原文件名。
指定文件名
如果你想要自定义文件名保存,可以使用 -o 选项。
| 1 | curl -o myfile.zip https://example.com/file.zip | 
该命令将 file.zip 文件保存到当前目录,并重命名为 myfile.zip。
查看 HTTP 头信息
使用 curl 可以仅查看服务器的 HTTP 响应头信息,方法是添加 -I 或 --head 选项。
| 1 | curl -I https://www.example.com | 
运行该命令后,curl 会返回响应头而不是网页内容。
| 1 | HTTP/1.1 200 OK | 
响应头中可以看到状态码(如 200 OK)、内容类型(Content-Type)、服务器信息等。
发送 POST 请求
curl 默认发送 GET 请求,如果需要发送 POST 请求,则可以使用  -X POST 指定请求方法,并使用 -d 选项传递数据。
| 1 | curl -X POST -d "username=user&password=pass" https://example.com/login | 
该命令将以 POST 方式向 https://example.com/login 发送数据 username=user 和 password=pass,并返回响应内容。
发送 JSON 数据
使用 curl 发送 JSON 数据时,需要指定请求头为 application/json,并通过 -d 传递 JSON 数据。
| 1 | curl -X POST -H "Content-Type: application/json" -d '{"username":"user","password":"pass"}' https://example.com/api/login | 
该命令将以 POST 方式发送 JSON 数据到指定 API,并返回服务器响应内容。
| 1 | { | 
添加请求头
如果需要在请求中添加自定义请求头,可以使用 -H 选项。
| 1 | curl -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/data | 
该命令将带有 Authorization 请求头,发送一个带有身份认证的 GET 请求,并返回请求的结果。
追踪重定向
有些 URL 会重定向到另一个地址。默认情况下,curl 不会跟随重定向。使用 -L 选项可以让 curl 自动跟随重定向。
| 1 | curl -L www.sina.com | 
键入上面的命令,结果就自动跳转为www.sina.com.cn。
限制请求速度
如果你想限制请求速度(如每秒下载速率),可以使用 --limit-rate 选项。
| 1 | curl --limit-rate 100K -O https://example.com/largefile.zip | 
该命令将下载 largefile.zip,并将下载速度限制为 100KB 每秒,适用于网络带宽受限的情况。
保存 Cookie 和发送 Cookie
curl 支持通过 Cookie 保存和发送会话信息。使用 -c 选项可以保存 Cookie,使用 -b 选项发送 Cookie。
| 1 | # 第一次请求,保存 Cookie | 
第一个命令会将登录请求的 Cookie 保存到 cookies.txt 文件中,第二个命令会使用这个 Cookie 文件发送请求。
显示请求过程
为了查看 curl 请求的详细过程(如 DNS 解析、连接、重定向等),可以添加 -v 选项。
| 1 | curl -v https://www.example.com | 
-v 选项将输出 curl 执行请求的详细信息,包含发出的请求、收到的响应头,以及 DNS 查询、连接建立的过程。
| 1 | * Trying 93.184.216.34... | 
忽略 SSL 证书验证
在某些情况下(如测试环境),你可能需要忽略  SSL 证书验证错误。这时可以使用 -k或 --insecure 选项。
| 1 | curl -k https://insecure-website.com | 
该命令会忽略 SSL 证书验证,访问 HTTPS 网站。
User Agent字段
这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页,比如手机版和桌面版。
| 1 | curl --user-agent "[User Agent]" [URL] | 
文件上传
假定文件上传的表单是下面这样:
| 1 | <form method="POST" enctype='multipart/form-data' action="upload.cgi"> | 
你可以用curl这样上传文件:
| 1 | curl --form upload=@localfilename --form press=OK [URL] | 
结语
curl 是一个功能丰富的命令行工具,适用于从简单的网页请求到复杂的 API 调试。通过掌握常见的 curl 用法,可以更加高效地进行 Web 开发、测试和调试工作。
参考文章



