curl
是个极为常用的命令行工具,其主要功能是借助各种网络协议(像 HTTP、HTTPS、FTP 等)来传输数据。
1. 发送 HTTP 请求
获取网页内容
执行以下命令能够获取指定 URL 的内容:
curl https://www.example.com
把输出保存到文件
若想将获取到的内容保存到文件中,可使用-o
选项:
curl -o output.html https://www.example.com
显示详细的请求信息
添加-v
选项能显示请求的详细信息,包括请求头、响应头以及传输过程:
curl -v https://www.example.com
2. 发送带参数的请求
GET 请求(带查询参数)
在 URL 后面直接添加查询参数就能发送 GET 请求:
curl "https://api.example.com/search?q=keyword&page=1"
POST 请求(带表单数据)
使用-d
选项可以发送表单数据,默认情况下会发送 POST 请求:
curl -d "username=test&password=123456" https://api.example.com/login
POST 请求(JSON 数据)
发送 JSON 数据时,需要使用-H
选项设置请求头,并使用-d
选项传递 JSON 字符串:
curl -H "Content-Type: application/json" -d '{"username":"test","password":"123456"}' https://api.example.com/login
3. 自定义请求头
借助-H
选项可以自定义请求头:
curl -H "Authorization: Bearer your_token" https://api.example.com/protected
4. 处理重定向
当遇到 301、302 等重定向状态码时,使用-L
选项可以让curl
自动跟随重定向:
curl -L https://example.com
400 Bad Request:检查表单字段名、文件路径是否正确。
403 Forbidden:可能需要添加认证头(如
Authorization
)。413 Payload Too Large:服务器限制了上传大小,需调整服务器配置。
5. 下载文件
显示下载进度
使用-#
选项可以显示下载进度条:
curl -# -o file.zip https://example.com/file.zip
断点续传
添加-C -
选项能够继续之前中断的下载:
curl -C - -o file.zip https://example.com/file.zip
6. 上传文件
使用-F
选项可以上传文件,适用于表单上传:
curl -F "file=@/path/to/file.txt" https://api.example.com/upload
说明:
file
:表单字段名,需与服务器端期望的字段名一致。@/path/to/local/file.txt
:本地文件的绝对或相对路径。https://example.com/upload
:文件上传的目标 URL。
带额外表单参数的上传
可同时上传文件和其他表单字段(如文件名、描述等):
curl -F "file=@document.pdf" \
-F "name=报告.pdf" \
-F "description=季度财务报告" \
https://api.example.com/upload
7. 设置请求方法
使用-X
选项可以指定 HTTP 请求方法:
curl -X DELETE https://api.example.com/resource/123
8. 超时设置
通过-m
选项可以设置请求超时时间(单位为秒):
curl -m 10 https://www.example.com
9. 代理设置
使用-x
选项可以设置代理服务器:
curl -x http://proxy.example.com:8080 https://www.example.com
10. 认证
基本认证
使用-u
选项可以进行基本认证:
curl -u username:password https://api.example.com/protected
OAuth 认证
在进行 OAuth 认证时,通常需要设置相应的认证头:
curl -H "Authorization: OAuth your_token" https://api.example.com/protected