Curl 是一个用于数据传输的命令行工具,支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SMTP、IMAP、SMB 等。它广泛用于自动化脚本中的文件下载和上传操作。
基础用法
下载文件
使用 curl
下载文件到本地是其最基础的功能之一。基本格式如下:
curl [URL]
例如,从网络上下载一个文件到当前目录:
curl -O https://example.com/file.zip
这里的 -O
参数表示将文件保存为与 URL 中相同的名称。
指定输出文件名
如果希望将文件保存为不同的名称,可以使用 -o
参数:
curl -o newfile.zip https://example.com/file.zip
这将会把文件保存为 newfile.zip
。
高级功能
使用代理
当需要通过代理服务器访问互联网时,可以使用 -x
参数指定代理:
curl -x http://proxy.example.com:8080 https://example.com/
认证
对于需要认证的站点,可以使用 -u
参数提供用户名和密码:
curl -u username:password https://secure.example.com/
自定义请求头
有时需要向服务器发送自定义的 HTTP 头信息,可以通过 -H
参数添加:
curl -H "User-Agent: MyCustomAgent/1.0" https://example.com/
POST 请求
对于需要提交表单或进行 POST 请求的情况,可以使用 -d
参数加上数据:
curl -X POST -d "param1=value1¶m2=value2" https://example.com/form
也可以从文件中读取数据:
curl -X POST -d @data.txt https://example.com/form
跟随重定向
默认情况下,curl
不会自动跟随重定向。如果需要自动跟随重定向,可以使用 -L
参数:
curl -L https://example.com/
查看响应头
有时需要查看 HTTP 响应头信息,可以使用 -I
参数:
curl -I https://example.com/
下载大文件
下载大文件时,可以使用 -C -
参数实现断点续传:
curl -C - -O https://example.com/largefile.zip
并发下载
对于多个文件的下载,可以利用 curl
的并发下载功能:
curl -n -c cookies.txt -b cookies.txt -O http://example.com/file1.zip -O http://example.com/file2.zip
这里 -n
表示不使用 .netrc,而 -c
和 -b
分别用于指定和读取 cookie 文件。
SSL/TLS 安全
对于 HTTPS 站点,curl
默认会验证服务器证书。如果需要忽略 SSL 证书错误,可以使用 -k
参数:
curl -k https://insecure-site.example.com/
自定义输出格式
使用 -w
参数可以自定义输出结果,比如显示响应时间:
curl -w 'Time: %{time_total}s' https://example.com/
上传文件
对于支持 PUT 或者 POST 方法的站点,可以使用 -T
参数上传文件:
curl -T file.zip https://example.com/upload
调试
在调试过程中,可以使用 -v
参数显示详细的通信过程:
curl -v https://example.com/
限制速度
对于带宽有限的情况,可以使用 --limit-rate
参数来限制下载速度:
curl --limit-rate 50K https://example.com/largefile.zip
使用 FTPS
对于需要使用 FTPS 协议的场景,可以使用 -k
参数忽略证书检查,并且使用 -u
提供用户名和密码:
curl -k -u user:pass ftps://ftp.example.com/file.zip
使用 SOCKS5 代理
如果需要通过 SOCKS5 代理连接,可以使用 -x
参数指定代理服务器:
curl -x socks5h://proxy.example.com:1080 https://example.com/
总结
以上是 curl
命令的一些常见用法和高级选项。通过这些选项,你可以完成各种复杂的网络任务。curl
是一个非常强大和灵活的工具,在日常工作中经常会被用到。