在Linux环境下,curl 和 wget 是两款功能强大且广泛使用的HTTP客户端工具,分别适用于不同的场景。本文将通过示例对比它们的用法,帮助用户快速掌握HTTP请求的发送技巧。
一、 curl :灵活的HTTP请求工具****
curl 支持多种协议(HTTP/HTTPS/FTP等),可自定义请求头、方法、数据格式,适合API调试和自动化任务。
1. 基础用法
·
发送GET请求:
·
·
bash
·
·
| curl example.com |
|---|
·
默认输出响应体到终端,可通过-o保存到文件:
·
·
bash
·
·
| curl -o response.html example.com |
|---|
·
·
发送POST请求:
·
·
bash
·
·
| curl -X POST -d "username=admin&password=123456" example.com/login |
|---|
·
使用-H添加请求头(如Content-Type):
·
·
bash
·
·
| curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' example.com/api |
|---|
·
2. 高级功能
· 跟踪重定向:默认不跟随302跳转,添加-L参数:
·
bash
·
·
| curl -L example.com/redirect |
|---|
·
· 调试请求:通过-v查看详细请求/响应过程:
·
bash
·
·
| curl -v example.com |
|---|
·
· 保存Cookie:使用-c和-b管理会话:
·
bash
·
·
| curl -c cookies.txt example.com/login # 保存Cookie | |
|---|---|
| curl -b cookies.txt example.com/dashboard # 携带Cookie访问 |
·
二、 wget :简单的文件下载工具****
wget 更专注于文件下载,支持断点续传和递归下载,适合静态资源获取。
1. 基础用法
·
下载文件:
·
·
bash
·
·
| wget example.com/file.zip |
|---|
·
默认保存到当前目录,可通过-O指定文件名:
·
·
bash
·
·
| wget -O custom_name.zip example.com/file.zip |
|---|
·
·
后台下载:添加-b参数将日志写入wget-log文件:
·
·
bash
·
·
| wget -b example.com/large_file.… |
|---|
·
2. 高级功能
· 递归下载:通过-r下载整个网站(需谨慎使用):
·
bash
·
·
| wget -r -np -nH --cut-dirs=2 example.com/docs/ |
|---|
·
· -np:不爬取父目录
· -nH:不创建主机名目录
· --cut-dirs:忽略路径前缀
· 断点续传:使用-c恢复中断的下载:
·
bash
·
·
| wget -c example.com/large_file.… |
|---|
·
三、工具对比与选择****
| 场景 | 推荐工具 | 原因 |
|---|---|---|
| 调试API或发送复杂请求 | curl | 支持自定义方法、头、数据格式 |
| 下载静态文件或镜像网站 | wget | 支持断点续传、递归下载 |
| 自动化脚本集成 | 两者均可 | curl更灵活,wget更简单 |
通过掌握curl和wget的核心用法,用户可以高效完成Linux环境下的HTTP请求任务。根据实际需求选择工具,能够显著提升工作效率。