curl
是 Linux 下非常常用的命令行工具,用于在终端中进行 网络请求,支持 HTTP、HTTPS、FTP、SMTP 等多种协议。它不仅可以下载文件,还可以发送 POST 请求、带 Header 的请求,甚至支持 API 调试。
下面给你一个完整、详细的 curl
命令使用讲解。
1. curl 基本用法
1.1 下载网页内容
curl http://example.com
- 默认会将网页内容输出到终端。
- 常用参数:
-o <filename>
:将内容保存到文件。-O
:保存文件并保持远程文件名。
示例:
curl -o index.html http://example.com
curl -O http://example.com/file.zip
1.2 显示响应头
curl -I http://example.com
-I
:只请求 HTTP Header,不下载网页内容。
1.3 跟随重定向
curl -L http://example.com
-L
:跟随 3xx 重定向。- 很多网站会将
http
请求重定向到https
,使用-L
可以自动跟随。
1.4 限制下载速度
curl --limit-rate 100K http://example.com/file.zip
--limit-rate
:限制下载速度,比如 100K/s。
2. 发送 GET/POST 请求
2.1 GET 请求
curl http://api.example.com/data
- 默认就是 GET 请求。
- 可以使用
-G
指定携带 URL 参数:
curl -G "http://api.example.com/data" --data-urlencode "name=张三"
2.2 POST 请求
curl -X POST http://api.example.com/login -d "username=admin&password=123456"
-X POST
:指定请求方法为 POST。-d
:发送 POST 数据。- 支持 JSON 数据:
curl -X POST http://api.example.com/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"123456"}'
3. 设置请求头
curl -H "User-Agent: MyCrawler/1.0" -H "Accept: application/json" http://example.com
-H
:添加 HTTP Header。- 可以自定义 User-Agent、Accept、Authorization 等。
4. 上传文件
4.1 上传文件到 HTTP 服务器
curl -F "file=@/path/to/file.txt" http://example.com/upload
-F
:表单上传(multipart/form-data)。@
表示文件路径。
4.2 上传文件到 FTP 服务器
curl -T /path/to/file.txt ftp://ftp.example.com/ --user username:password
-T
:上传文件。--user
:FTP 用户名和密码。
5. 保存 cookie / 使用 cookie
5.1 保存 cookie
curl -c cookie.txt http://example.com/login
-c cookie.txt
:保存 cookie 到文件。
5.2 使用 cookie
curl -b cookie.txt http://example.com/dashboard
-b cookie.txt
:使用保存的 cookie 发起请求。
6. 代理和 SSL
6.1 使用 HTTP 代理
curl -x http://127.0.0.1:8080 http://example.com
-x
或--proxy
:设置代理。
6.2 忽略 SSL 证书验证
curl -k https://example.com
-k
或--insecure
:忽略 HTTPS 证书验证。
7. 显示更多调试信息
curl -v http://example.com
-v
:显示详细请求/响应信息,包括 Header、SSL 连接信息等。--trace
或--trace-ascii
可以打印更详细的调试日志。
8. 结合管道和 Linux 命令使用
- 下载并解压:
curl -s https://example.com/file.tar.gz | tar -xz
- 下载并保存:
curl -sL https://example.com/script.sh | bash
-s
:静默模式,不显示下载进度。-L
:跟随重定向。
9. 总结常用选项
参数 | 功能 |
---|---|
-o | 保存到指定文件 |
-O | 保存并使用远程文件名 |
-I | 只请求 Header |
-L | 跟随重定向 |
-d | POST 请求发送数据 |
-X | 指定请求方法,如 GET/POST/PUT |
-H | 设置请求头 |
-F | 表单上传文件 |
-c | 保存 cookie |
-b | 使用 cookie |
-v | 显示详细调试信息 |
-s | 静默模式 |
--limit-rate | 限制下载速度 |
-k | 忽略 HTTPS 证书 |
-x | 使用代理 |
curl
命令功能强大,支持 HTTP、HTTPS、FTP、SMTP 等协议,既可以用于 下载文件,也可以用于 API 调试和网络测试。掌握这些常用选项,可以在 Linux 下高效进行网络操作。
发表回复