下面将 curl
和 wget
的用法分成基础版和进阶版,涵盖常用与高级功能。
基础版
1. curl
基础用法
a. 发送 GET 请求
这是最基本的 curl
用法,向指定的 URL 发送一个 GET 请求并打印结果到终端:
curl http://example.com
b. 保存文件
将服务器响应的数据保存为一个文件:
curl -o output.html http://example.com
c. 下载文件并使用原始文件名
如果你希望文件保持服务器上的文件名:
curl -O http://example.com/file.zip
d. 发送 POST 请求
用 POST
请求提交数据:
curl -X POST -d "param1=value1¶m2=value2" http://example.com
e. 查看 HTTP 响应头
使用 -I
选项只请求 HTTP 响应头信息:
curl -I http://example.com
2. wget
基础用法
a. 下载文件
wget
默认下载文件并保持原文件名:
wget http://example.com/file.zip
b. 指定文件名保存
可以指定保存的文件名:
wget -O newfile.zip http://example.com/file.zip
c. 递归下载
从网页下载所有链接,适合下载整个网站内容:
wget -r http://example.com
d. 静默模式
在静默模式下不显示下载进度条:
wget -q http://example.com
e. 继续下载
断点续传未完成的下载:
wget -c http://example.com/file.zip
进阶版
1. curl
进阶用法
a. 发送自定义请求头
curl
允许通过 -H
添加自定义 HTTP 请求头:
curl -H "Authorization: Bearer your_token" http://example.com
b. 跟随重定向
默认情况下,curl
不会自动跟随重定向。使用 -L
来启用这个功能:
curl -L http://example.com
c. 通过代理
使用代理服务器来发送请求:
curl -x http://proxy.example.com:8080 http://example.com
d. 上传文件
通过 -F
上传文件到服务器(表单提交):
curl -F "file=@/path/to/file.txt" http://example.com/upload
e. 添加 Cookie
发送包含特定 Cookie 的请求:
curl -b "name=value" http://example.com
f. 发送 JSON 数据
发送 JSON 数据时,可以指定 Content-Type
并传递 JSON:
curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1"}' http://example.com/api
g. 显示详细的请求和响应
使用 -v
查看详细的请求过程(非常适合调试):
curl -v http://example.com
h. 限制下载速度
为了限制带宽,可以通过 --limit-rate
设置最大下载速度:
curl --limit-rate 200k http://example.com/file.zip
i. 多部分表单上传
上传多个文件或字段时,使用多部分表单提交:
curl -F "file1=@/path/to/file1" -F "file2=@/path/to/file2" http://example.com/upload
j. 组合多个请求(API测试)
用 curl
测试 API 时,可以将多个请求组合在一起:
curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' http://example.com/api/users
2. wget
进阶用法
a. 下载整个网站
递归下载并保存整个网站结构:
wget --mirror -p --convert-links -P ./local http://example.com
--mirror
: 递归下载整个网站。-p
: 下载网页上所有相关资源(如图片、CSS)。--convert-links
: 将链接转换为本地文件链接。-P
: 指定保存位置。
b. 限速下载
限制下载速度,避免占用过多带宽:
wget --limit-rate=200k http://example.com/file.zip
c. 指定用户代理
使用 --user-agent
来设置用户代理(模仿浏览器):
wget --user-agent="Mozilla/5.0" http://example.com
d. 重试下载
如果下载失败,可以通过 --tries
选项来设置重试次数:
wget --tries=10 http://example.com/file.zip
e. 自动下载时间间隔
在多个文件下载之间设置等待时间,避免服务器负载过高:
wget --wait=10 -r http://example.com
f. 使用 FTP 下载文件
wget
也支持 FTP 协议的文件下载:
wget ftp://example.com/file.zip
g. 通过代理
通过指定的代理服务器进行下载:
wget -e use_proxy=yes -e http_proxy=http://proxy.example.com:8080 http://example.com
h. 忽略 SSL 证书错误
如果遇到不受信任的 SSL 证书,可以用 --no-check-certificate
忽略:
wget --no-check-certificate https://example.com/file.zip
总结
- 基础版 主要包含一些常见的操作,如简单的下载、POST 请求、断点续传等。
- 进阶版 涉及更多高级功能,如代理设置、限速、复杂的多部分上传、递归下载网站等。
这些功能让 curl
和 wget
在处理 Web 请求、文件下载、以及与 API 交互时都非常灵活和强大。