当前位置: 首页 > article >正文

linux命令-wget与curl命令详解

linux命令-wget与curl命令详解

    • **一、`wget` 命令详解**
      • **1. 基本语法**
      • **2. 核心功能**
      • **3. 常用选项与示例**
        • **示例 1:基本下载**
        • **示例 2:自定义输出文件名**
        • **示例 3:后台下载**
        • **示例 4:断点续传**
        • **示例 5:限速下载**
        • **示例 6:递归下载网站**
        • **示例 7:批量下载**
        • **示例 8:忽略证书验证**
        • **示例 9:使用代理服务器**
        • **示例 10:模拟浏览器 User-Agent**
        • **示例 11:下载并解压压缩包**
        • **示例 12:排除特定文件类型**
      • **4. 高级用法**
        • **镜像整个网站**
        • **按时间过滤下载**
        • **通过 FTP 下载**
    • **二、`curl` 命令详解**
      • **1. 基本语法**
      • **2. 核心功能**
      • **3. 常用选项与示例**
        • **示例 1:发送 GET 请求**
        • **示例 2:保存响应到文件**
        • **示例 3:显示响应头**
        • **示例 4:发送 POST 请求**
        • **示例 5:上传文件**
        • **示例 6:使用 HTTP 认证**
        • **示例 7:设置自定义请求头**
        • **示例 8:跟随重定向**
        • **示例 9:使用 Cookie**
        • **示例 10:调试模式**
        • **示例 11:发送 JSON 数据**
        • **示例 12:限速下载**
      • **4. 高级用法**
        • **使用代理服务器**
        • **通过 FTP 上传文件**
        • **模拟浏览器会话**
        • **处理压缩响应**
    • **三、`wget` vs `curl` 核心区别**
      • **1. 设计哲学**
      • **2. 功能对比**
      • **3. 典型场景**
    • **四、扩展总结**
      • **1. 性能优化**
      • **2. 安全性**
      • **3. 生态系统**

一、wget 命令详解

1. 基本语法

wget [选项] [URL]

2. 核心功能

  • 支持 HTTP、HTTPS、FTP 协议。
  • 支持断点续传、递归下载、批量下载和镜像网站。
  • 非交互式操作,适合脚本自动化。

3. 常用选项与示例

示例 1:基本下载
wget https://example.com/file.zip
  • 说明:下载文件到当前目录,保留原始文件名。
示例 2:自定义输出文件名
wget -O custom_name.zip https://example.com/file.zip
  • 参数-O 指定输出文件名。
  • 场景:重命名下载文件,避免默认名称冲突。
示例 3:后台下载
wget -b https://example.com/large-file.iso
  • 参数-b 启用后台模式。
  • 输出:日志保存在 wget-log 文件中。
示例 4:断点续传
wget -c https://example.com/interrupted-file.iso
  • 参数-c 继续未完成的下载。
  • 场景:网络中断后恢复下载。
示例 5:限速下载
wget --limit-rate=200k https://example.com/file.iso
  • 参数--limit-rate 限制下载速度。
  • 场景:避免占用过多带宽。
示例 6:递归下载网站
wget -r -l 5 --convert-links https://example.com
  • 参数
    • -r 递归下载。
    • -l 5 设置递归深度为 5 层。
    • --convert-links 转换链接为本地可用形式。
  • 场景:离线浏览网站内容。
示例 7:批量下载
wget -i url_list.txt
  • 参数-i 从文件读取 URL 列表。
  • 文件格式:每行一个 URL。
示例 8:忽略证书验证
wget --no-check-certificate https://example.com
  • 参数--no-check-certificate 跳过 SSL 证书检查。
  • 场景:测试环境或自签名证书。
示例 9:使用代理服务器
wget -e use_proxy=yes -e http_proxy=192.168.1.1:8080 https://example.com
  • 参数-e 设置环境变量,指定代理地址。
  • 场景:通过企业代理访问外部资源。
示例 10:模拟浏览器 User-Agent
wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" https://example.com
  • 参数--user-agent 伪装客户端身份。
  • 场景:绕过某些网站的反爬虫机制。
示例 11:下载并解压压缩包
wget -q -O - https://example.com/archive.tar.gz | tar -xz
  • 参数
    • -q 静默模式。
    • -O - 将输出重定向到标准输出。
  • 场景:下载后直接解压,无需保存临时文件。
示例 12:排除特定文件类型
wget -r -R "*.jpg,*.png" https://example.com
  • 参数-R 拒绝下载匹配的文件。
  • 场景:仅下载 HTML/CSS 文件。

4. 高级用法

镜像整个网站
wget --mirror --convert-links --adjust-extension --page-requisites https://example.com
  • 参数
    • --mirror 等效于 -r -N -l inf
    • --adjust-extension 确保文件扩展名正确。
    • --page-requisites 下载所有页面依赖(如图片、CSS)。
按时间过滤下载
wget -N https://example.com/file.txt
  • 参数-N 仅下载比本地文件更新的版本。
通过 FTP 下载
wget --ftp-user=username --ftp-password=password ftp://example.com/file.txt
  • 场景:从受密码保护的 FTP 服务器下载。

二、curl 命令详解

1. 基本语法

curl [选项] [URL]

2. 核心功能

  • 支持 20+ 协议(HTTP/HTTPS、FTP、SCP、SMTP 等)。
  • 支持请求头操作、Cookie 管理、代理和 API 交互。
  • 输出到标准输出,适合管道操作。

3. 常用选项与示例

示例 1:发送 GET 请求
curl https://api.example.com/data
  • 说明:默认输出响应内容到终端。
示例 2:保存响应到文件
curl -o output.json https://api.example.com/data
  • 参数-o 指定输出文件名。
示例 3:显示响应头
curl -i https://api.example.com/data
  • 参数-i 包含响应头信息。
  • 输出:HTTP 状态码、Content-Type 等。
示例 4:发送 POST 请求
curl -X POST -d "name=John&age=30" https://api.example.com/submit
  • 参数
    • -X POST 指定 HTTP 方法。
    • -d 发送表单数据。
示例 5:上传文件
curl -F "file=@/path/to/local_file.txt" https://api.example.com/upload
  • 参数-F 发送 multipart/form-data 数据。
  • 场景:文件上传接口测试。
示例 6:使用 HTTP 认证
curl -u username:password https://api.example.com/secure
  • 参数-u 提供用户名和密码。
示例 7:设置自定义请求头
curl -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://api.example.com
  • 参数-H 添加 HTTP 头。
  • 场景:调用需要 Token 的 API。
示例 8:跟随重定向
curl -L https://example.com/redirect
  • 参数-L 自动跟随 3xx 重定向。
示例 9:使用 Cookie
curl -b "session=abc123" https://example.com/dashboard
  • 参数-b 发送 Cookie。
  • 扩展:保存 Cookie 到文件:curl -c cookies.txt https://example.com
示例 10:调试模式
curl -v https://api.example.com
  • 参数-v 显示详细通信过程(包括请求头和 SSL 握手)。
示例 11:发送 JSON 数据
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
  • 场景:测试 RESTful API 的 JSON 接口。
示例 12:限速下载
curl --limit-rate 1M -O https://example.com/large-file.iso
  • 参数--limit-rate 限制传输速度。

4. 高级用法

使用代理服务器
curl -x http://192.168.1.1:8080 https://example.com
  • 参数-x 指定代理地址。
通过 FTP 上传文件
curl -T local_file.txt ftp://example.com/ --user ftp_user:ftp_password
  • 参数-T 指定上传文件。
模拟浏览器会话
curl -A "Mozilla/5.0" -H "Accept-Language: en-US" https://example.com
  • 参数-A 设置 User-Agent。
处理压缩响应
curl --compressed https://example.com
  • 参数--compressed 请求压缩内容(如 gzip)。

三、wget vs curl 核心区别

1. 设计哲学

  • wget:专注于 批量下载离线使用(如镜像网站)。
  • curl:专注于 协议交互API 测试(支持更多协议和方法)。

2. 功能对比

特性wgetcurl
递归下载原生支持(-r不支持
断点续传自动支持(-c需手动指定范围(-C -
输出目标默认保存到文件默认输出到终端
协议支持HTTP/HTTPS/FTPHTTP/HTTPS、FTP、SMTP、SCP 等 20+
上传功能仅支持 FTP支持 HTTP PUT/POST、FTP 上传
Cookie 管理需手动配置支持自动保存和加载(-c/-b
代理配置需环境变量或复杂参数直接通过 -x 指定
脚本友好性更适合自动化下载任务更适合调试和复杂请求

3. 典型场景

  • 使用 wget
    • 下载 Linux 镜像文件。
    • 离线备份整个网站。
    • 通过脚本定时抓取资源。
  • 使用 curl
    • 测试 REST API 的 POST/PUT 接口。
    • 上传文件到云存储。
    • 调试 HTTP 头或证书问题。

四、扩展总结

1. 性能优化

  • wget:通过 --limit-rate 控制带宽,适合长时间后台任务。
  • curl:通过 --parallel 实现多线程下载(需特定版本)。

2. 安全性

  • wget:默认验证 SSL 证书,可通过 --no-check-certificate 跳过。
  • curl:严格遵循证书验证,需 -k 忽略错误。

3. 生态系统

  • wget:适合集成到 Shell 脚本或 Cron 任务。
  • curl:被广泛用于 CI/CD 流水线(如 GitHub Actions)。

http://www.kler.cn/a/588086.html

相关文章:

  • 【Agent】OpenManus-Agent-BaseAgent详细分析
  • 85.HarmonyOS NEXT 网络请求与数据处理:构建可靠的数据层
  • 剖析sentinel的限流和熔断
  • “driver-class-name: com.mysql.cj.jdbc.Driver“报错问题的解决
  • Gitee重新远程连接仓库(Linux)
  • 【Redis】缓存穿透、缓存击穿、缓存雪崩
  • Leetcode2272:最大波动的子字符串
  • 文档搜索引擎
  • Gluten 项目贡献指南
  • 行为模式---模版模式
  • S32K144入门笔记(十):TRGMUX的初始化
  • 区块链知识点2
  • 3.水中看月
  • IP 地址
  • 一级运动员最小几岁·棒球1号位
  • 使用OpenResty(基于Nginx和Lua)优化Web服务性能
  • k8s系统学习路径
  • C语言之 条件编译和预处理指令
  • ospf单区域
  • 【MySQL】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法