使用 curl 和 wget 在Linux中发送HTTP请求

169 阅读2分钟

微信图片_20230808094553.png在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请求任务。根据实际需求选择工具,能够显著提升工作效率。