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

 更新时间:2025年04月04日 16:13:22   作者:wx65bc375171f34  
curl和Wget在linux日常使用中非常常见,它们都可以向服务器发出请求,curl和Wget的一个最明显的区别是:默认情况下Wget将查询的网页保存到系统,而 curl将其显示在终端输出中但不保存它,curl的使用率比Wget多得多

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

1. 使用 curl 检测网页状态

基础命令:检查 HTTP 状态码

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 请求)。

2. 使用 wget 检测网页状态

基础命令:检查 HTTP 状态码

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:丢弃下载内容。

3. 自动化脚本示例

**curl 脚本(检查状态码是否为 200)**

#!/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

**wget 脚本(检查是否可访问)**

#!/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 次)。

4. 常见状态码解释

状态码

含义

典型场景

200

OK

正常访问

301/302

永久/临时重定向

域名跳转(需 -L 跟随)

403

Forbidden

IP/UA 被拦截

404

Not Found

页面不存在

500

Internal Server Error

服务器内部错误

503

Service Unavailable

服务过载或维护

5. 高级场景

检查内容是否包含关键字

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

忽略 SSL 证书错误(测试用)

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

批量检测多个 URL

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

6. 工具选择建议

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

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

相关文章

  • IDEA最新激活码永久激活教程附激活失败原因汇总

    IDEA最新激活码永久激活教程附激活失败原因汇总

    这篇文章主要介绍了IDEA最新激活码永久激活教程附激活失败原因汇总,需要的朋友可以参考下
    2020-11-11
  • C++ Go语言实现将windows和linux文件删除至回收站

    C++ Go语言实现将windows和linux文件删除至回收站

    这篇文章主要为大家详细介绍了如何分别使用C++ Go语言实现将windows和linux文件删除至回收站,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Unity新手入门学习殿堂级知识详细讲解(图文)

    Unity新手入门学习殿堂级知识详细讲解(图文)

    Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含Assets、Library等目录,材质连接贴图与着色器用于渲染,适合多平台部署与性能优化
    2025-08-08
  • Django 使用 cookie 实现简单的用户管理功能

    Django 使用 cookie 实现简单的用户管理功能

    这篇文章主要介绍了Django 使用 cookie 实现简单的用户管理功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • DeepSeek模型本地部署的详细教程

    DeepSeek模型本地部署的详细教程

    DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSeek模型,并通过Ollama或Open Web UI与模型进行交互
    2025-02-02
  • 详解VScode自动补全CSS3前缀插件以及配置无效的解决办法

    详解VScode自动补全CSS3前缀插件以及配置无效的解决办法

    这篇文章主要介绍了详解VScode自动补全CSS3前缀插件以及配置无效的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 常见前端面试题及答案

    常见前端面试题及答案

    本文是在GitHub上看到一个大牛总结的前端常见面试题,很多问题问的都很好,很经典、很有代表性。上面没有答案,我就整理了一下,从网上找了一些相关问题的答案
    2016-08-08
  • CSDN 博客的代码高亮问题自己修复

    CSDN 博客的代码高亮问题自己修复

    这几天 CSDN 博客的代码高亮功能突然不行了,而且论坛上有人提出 BUG,没有得到回应。
    2009-05-05
  • 关于HTTPS的TSL握手

    关于HTTPS的TSL握手

    这篇文章主要介绍了关于HTTPS的TSL握手,HTTP一般基于TCP协议,而HTTPS就是在这之间加了SSL/TLS协议,那么在TCP三次握手建立TCP连接后,就需要TLS握手建立SSL/TLS连接,需要的朋友可以参考下
    2023-04-04
  • ClawdBot解决Gateway not reachable错误的5种方法(保姆级教学)

    ClawdBot解决Gateway not reachable错误的5种方法(保姆级教学)

    ClawdBot是一个本地运行的AI助手,基于vLLM提供高效推理,支持user总结ClawdBot解决Gatewaynotreachable问题步骤,本文给大家介绍ClawdBot保姆级教学:解决Gateway not reachable错误的5种方法,感兴趣的朋友一起看看吧
    2026-04-04

最新评论