curl和wget检测网页状态的区别

Written by

in

文章目录
  • 状态码 含义 典型场景 200 OK 正常访问 301/302 永久/临时重定向 域名跳转(需 -L 跟随) 403 Forbidden IP/UA 被拦截 404 Not Found 页面不存在 500 Internal Server Error 服务器内部错误 503 Service Unavailable 服务过载或维护
  • 选 curl:需要灵活控制请求(如自定义头、超时、重定向)或调试 API。 选 wget:需要简单检测或集成到自动化脚本(如定时任务监控)。 到此这篇关于curl和wget检测网页状态的区别的文章就介绍到这了,更多相关curl和wget区别内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Linux使用curl访问网页和wget下载文件 Linux Shell中curl和wget使用代理IP的方法教程 Linux下模拟http的get/post请求(curl or wget)详解 Linux中curl命令和wget命令的使用介绍与比较
  • 目录
    • 1. 使用 curl 检测网页状态
      • 基础命令:检查 HTTP 状态码
      • 完整检测(包含重定向)
      • 高级用法:超时和详细诊断
    • 2. 使用 wget 检测网页状态
      • 基础命令:检查 HTTP 状态码
      • 完整检测(包含重定向)
    • 3. 自动化脚本示例
      • **curl 脚本(检查状态码是否为 200)**
      • **wget 脚本(检查是否可访问)**
    • 4. 常见状态码解释
      • 5. 高级场景
        • 检查内容是否包含关键字
        • 忽略 SSL 证书错误(测试用)
        • 批量检测多个 URL
      • 6. 工具选择建议

        curl 和 Wget在linux日常使用中非常常见,它们都可以向服务器发出请求,curl 和 Wget 的一个最明显的区别是:默认情况下 Wget 将查询的网页保存到系统,而 curl 将其显示在终端输出中但不保存它,curl 的使用率比 Wget 多得多,可用于手机、计算机(包括 Windows 和 macOS 等操作系统)甚至物联网设备(例如智能手表、智能冰箱和其他类似物品)等环境中。

        curl -s -o /dev/null -w "%{http_code}" https://example.com
        • 输出结果:直接返回状态码(如 200 表示正常)。
        • 参数解释:
        • -s:静默模式(不显示进度或错误信息)。
        • -o /dev/null:丢弃响应内容(仅保留头信息)。
        • -w "%{http_code}":输出 HTTP 状态码。

        curl -L -s -o /dev/null -w "%{http_code} %{url_effective}n" https://example.com
        • 输出示例:200 https://example.com/(最终状态码和实际访问的 URL)。
        • 参数解释:
        • -L:自动跟随重定向(如 301/302)。

        curl --connect-timeout 10 --max-time 20 -v -I https://example.com
        • 参数解释:
        • –connect-timeout 10:连接超时时间(10 秒)。
        • –max-time 20:整个请求超时时间(20 秒)。
        • -v:显示详细日志(调试用)。
        • -I:仅获取响应头(HEAD 请求)。

        wget --spider -S --max-redirect 0 https://example.com 2>&1 | grep "HTTP/" | awk '{print $2}'
        • 输出结果:直接返回状态码(如 200)。
        • 参数解释:
        • –spider:模拟爬虫(不下载内容)。
        • -S:显示服务器响应头。
        • –max-redirect 0:禁用重定向(查看原始状态码)。

        wget --spider -q -O /dev/null https://example.com && echo "OK" || echo "FAIL"
        • 输出示例:OK(状态码为 200)或 FAIL(其他状态码或连接失败)。
        • 参数解释:
        • -q:静默模式。
        • -O /dev/null:丢弃下载内容。

        #!/bin/bash
        URL="https://example.com"
        STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" -L $URL)
        
        if [ $STATUS_CODE -eq 200 ]; then
          echo "$URL is UP (Status: $STATUS_CODE)"
        else
          echo "$URL is DOWN (Status: $STATUS_CODE)"
          exit 1
        fi

        #!/bin/bash
        URL="https://example.com"
        wget --spider -q -T 10 -t 2 $URL
        
        if [ $? -eq 0 ]; then
          echo "$URL is UP"
        else
          echo "$URL is DOWN"
          exit 1
        fi
        • 参数解释:
        • -T 10:超时时间(10 秒)。
        • -t 2:重试次数(2 次)。

        状态码

        含义

        典型场景

        200

        OK

        正常访问

        301/302

        永久/临时重定向

        域名跳转(需 -L 跟随)

        403

        Forbidden

        IP/UA 被拦截

        404

        Not Found

        页面不存在

        500

        Internal Server Error

        服务器内部错误

        503

        Service Unavailable

        服务过载或维护

        # 使用 curl 检查内容是否包含 "Welcome"
        curl -s -L https://example.com | grep -q "Welcome" && echo "OK" || echo "MISSING"

        curl -k -s -o /dev/null -w "%{http_code}" https://example.com  # -k 跳过证书验证

        URLS=("https://example.com" "https://google.com")
        for URL in "${URLS[@]}"; do
          CODE=$(curl -s -o /dev/null -w "%{http_code}" -L $URL)
          echo "$URL: $CODE"
        done

        • 选 curl:需要灵活控制请求(如自定义头、超时、重定向)或调试 API。
        • 选 wget:需要简单检测或集成到自动化脚本(如定时任务监控)。

        到此这篇关于curl和wget检测网页状态的区别的文章就介绍到这了,更多相关curl和wget区别内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

        您可能感兴趣的文章:

        • Linux使用curl访问网页和wget下载文件
        • Linux Shell中curl和wget使用代理IP的方法教程
        • Linux下模拟http的get/post请求(curl or wget)详解
        • Linux中curl命令和wget命令的使用介绍与比较

        站内搜索