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 开发、测试和调试工作。
参考文章