curl命令用法详解
curl
是一个命令行工具,它允许你向服务器发送请求,并从服务器接收响应。它支持多种协议,包括 HTTP、HTTPS、FTP、SMTP 等。curl
是一个非常强大的工具,它可以用于测试、调试和开发。
下面我将详细介绍一些常见的 curl
命令用法,并提供相应的例子。
-
基本的 GET 请求:
使用curl
发送一个基本的 GET 请求,只需提供 URL 即可。
curl http://example.com
2. 包含头部信息的 GET 请求:
使用 -i
选项来包括 HTTP 响应的头部信息
curl -i http://example.com
3. 只获取头部信息:
使用 -I
选项只获取头部信息,不下载页面内容。
curl -I http://example.com
4. 发送 POST 请求:
使用 -X POST
选项来发送一个 POST 请求。你可以使用 -d
选项来添加要发送的数据。
curl -X POST -d "param1=value1¶m2=value2" http://example.com/resource
5. 发送 PUT 请求:
类似于 POST 请求,你也可以使用 -X PUT
来发送 PUT 请求。
curl -X PUT -d "@data.json" http://example.com/resource
6. 使用自定义请求头:
使用 -H
选项来添加自定义请求头。
curl -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" http://example.com
7. 保存响应到文件:
使用 -o
选项将输出保存到文件中。
curl -o page.html http://example.com
8. 从文件中读取多个 URL:
使用 -K
选项从文件中读取 curl
命令的参数。
curl -K urls.txt
其中 urls.txt
文件包含了一系列的 curl
命令参数。
9. 断点续传:
使用 -C -
选项来继续之前中断的下载。
curl -C - -o file.zip http://example.com/file.zip
10. 跟随重定向:
使用 -L
选项让 curl
跟随服务器的重定向。
curl -L http://example.com
11. 发送 JSON 数据:
使用 -H
添加 Content-Type: application/json
请求头,并使用 -d
发送 JSON 数据。
curl -H "Content-Type: application/json" -X POST -d '{"key1":"value1", "key2":"value2"}' http://example.com/api
12. 使用证书进行 HTTPS 请求:
使用 --cert
和 --key
选项来提供客户端证书和私钥。
curl --cert client.pem --key key.pem https://secure.example.com
13. 设置最大传输时间:
使用 -m
或 --max-time
选项来设置最大传输时间(秒)。
curl -m 10 http://example.com
14. 使用代理:
使用 -x
或 --proxy
选项来设置代理服务器。
curl -x http://proxyserver:port http://example.com
15. 显示传输统计信息:
使用 -w
或 --write-out
选项来定制输出的统计信息。
curl -w "Time: %{time_total}\n" http://example.com
16. 自定义输出格式:
使用 -w
选项,你可以指定一个自定义的格式来输出 curl
操作的详细信息
curl -w "HTTP Code: %{http_code}\nTime Taken: %{time_total}\n" http://example.com
17. 静默模式:
使用 -s
选项可以使 curl
在执行时不输出任何东西,只显示错误信息。
curl -s http://example.com
18. 上传文件:
使用 -F
选项可以上传文件。这通常用于模拟表单上传。
curl -F "file=@localfile.txt" http://example.com/upload
19. 限制下载速度:
使用 --limit-rate
选项可以限制下载速度,这对于测试慢速网络环境很有用。
curl --limit-rate 100k http://example.com
20. 使用 cookie:
使用 -b
选项可以发送 cookie,-c
选项可以保存服务器响应中的 cookie 到文件。
curl -b cookies.txt -c newcookies.txt http://example.com
21. 指定 HTTP 方法:
使用 -X
选项可以指定要使用的 HTTP 方法,例如 DELETE。
curl -X DELETE http://example.com/resource
22. 下载文件的一部分:
使用 --range
选项可以下载文件的一部分,这在下载大文件或者进行断点续传时很有用。
curl --range 0-999 -o part1.txt http://example.com/bigfile.txt
23. 解析响应头:
使用 -D
选项可以将响应头保存到一个文件中,便于后续分析。
curl -D headers.txt http://example.com
24. 使用 SOCKS5 代理:
使用 --socks5
选项可以通过 SOCKS5 代理来发送请求。
curl --socks5 proxyhost:proxyport http://example.com
25. 指定网络接口:
使用 --interface
选项可以指定一个网络接口,使请求从该接口发出。
curl --interface eth0 http://example.com
26. 解析 .netrc 文件:
使用 -n
选项可以让 curl
读取用户的 .netrc
文件来获取用户名和密码。
curl -n http://example.com
27. 指定 SSL/TLS 版本:
使用 --tlsv1.2
之类的选项可以指定 SSL/TLS 的版本。
curl --tlsv1.2 https://example.com
28. 验证 SSL 证书:
使用 -k
或 --insecure
选项可以告诉 curl
忽略 SSL 证书验证。
curl -k https://example.com
29. 设置请求来源:
使用 -e
选项可以设置请求的来源页 (HTTP Referer)。
curl -e http://referrer.com http://example.com
30. 设置用户代理:
使用 -A
选项可以设置用户代理 (User-Agent) 字符串。
curl -A "Mozilla/5.0" http://example.com
31. 发送邮件:curl
也可以用来发送邮件,例如通过 SMTP 协议。
curl smtp://mail.example.com --mail-from user@example.com --mail-rcpt receiver@example.com --upload-file email.txt
其中 email.txt
包含了邮件的头部和正文内容。
32. 并行下载:curl
从版本 7.66.0 开始支持 --parallel
和 --parallel-max
选项,允许并行下载多个文件。
curl --parallel --parallel-max 10 -O http://example.com/file1 -O http://example.com/file2
33. 使用配置文件:curl
可以使用 -K
或 --config
选项读取配置文件,配置文件中可以包含一系列 curl
命令行选项。
curl -K config.txt http://example.com
其中 config.txt
包含了一系列的 curl
命令参数。
34. DNS 解析覆盖:
使用 --resolve
选项可以指定特定主机名对应的 IP 地址,这在 DNS 解析不正确或测试环境中很有用。
curl --resolve example.com:80:127.0.0.1 http://example.com
35. 使用 UNIX 套接字:curl
可以通过 UNIX 套接字连接到服务,这在与 Docker 容器通信时特别有用。
curl --unix-socket /var/run/docker.sock http://localhost/v1.24/containers/json
36. FTP 上传和下载:curl
支持 FTP 协议,可以用来上传或下载文件。
# 下载
curl ftp://ftp.example.com/file.txt -u username:password -o local_file.txt
# 上传
curl -T local_file.txt ftp://ftp.example.com/ -u username:password
37. 设置最大文件大小:
使用 --max-filesize
选项可以设置下载文件的最大大小,超过这个大小的文件将不会下载。
curl --max-filesize 1000000 http://example.com/bigfile
38. 使用 GSS/NTLM 认证:curl
支持 GSS/NTLM 认证,这在与某些 Windows 服务器交互时可能需要。
curl --ntlm -u username:password http://example.com
39. 设置连接超时:
使用 --connect-timeout
选项可以设置连接超时时间。
curl --connect-timeout 10 http://example.com
40. 自动解压缩:
使用 --compressed
选项,curl
会自动解压缩支持的压缩格式(如 gzip)的内容。
curl --compressed http://example.com
curl
的功能非常强大,几乎可以满足所有的网络请求需求。要完全掌握它的所有用法,最好的方法是实践和查阅官方文档。随着 curl
版本的更新,还可能会增加新的选项和特性,所以了解如何查阅最新的帮助信息也是非常重要的。