各位大佬,怎么知道每天都有哪些网站打不开404

求一点实操方法,封于修讨教了

应该可以用 cURL 吧,比如要检查 https://meta.appinn.net 是否可以正常访问,可执行如下命令:

curl -I https://meta.appinn.net

可能会得到如下形式的结果:

HTTP/2 200 
date: Fri, 24 Apr 2026 03:15:15 GMT
content-type: text/html; charset=utf-8
server: cloudflare
......

第一行是状态码,200 表示请求成功。

其他状态码的含义可查询本文:

1 个赞

让AI写的bat脚本。

读取同目录下的 url.txt 文件,使用 curl 命令获取每个网页的 HTTP 状态码,过滤出无法正常访问的网址(过滤掉 200、301、302 等正常状态码),显示它们,并最终将这些异常记录导出到一个文本文件中

@echo off
setlocal enabledelayedexpansion

:: ==========================================
:: 参数配置区
:: ==========================================
:: 获取当前脚本所在目录的 url.txt 和导出结果文件路径
set "INPUT_FILE=%~dp0url.txt"
set "OUTPUT_FILE=%~dp0failed_urls.txt"
:: 设置 curl 的超时时间(秒),防止某个死链卡住太久
set "TIMEOUT=10"

:: ==========================================
:: 环境检查与初始化
:: ==========================================
if not exist "%INPUT_FILE%" (
    echo [错误] 找不到文件: %INPUT_FILE%
    echo 请确保 url.txt 文件与本脚本放在同一目录下!
    pause
    exit /b
)

:: 清空或创建输出文件,确保每次运行都是全新的记录
type nul > "%OUTPUT_FILE%"

echo 开始检测网址状态...
echo ==================================================

:: ==========================================
:: 核心处理逻辑
:: ==========================================
:: 逐行读取 url.txt 文件内容,跳过空行
for /f "usebackq delims=" %%a in ("%INPUT_FILE%") do (
    set "URL=%%a"
    
    :: 使用 curl 获取状态码
    :: -s: 静默模式,隐藏下载进度条
    :: -o NUL: 丢弃抓取到的网页源代码(Windows环境下使用NUL)
    :: -w "%%{http_code}": 执行完成后仅输出 HTTP 状态码
    :: -m: 限制最大传输时间
    for /f %%b in ('curl -s -o NUL -w "%%{http_code}" -m %TIMEOUT% "!URL!"') do (
        set "STATUS_CODE=%%b"
    )
    
    :: 200(正常), 301(永久重定向), 302(临时重定向) 视为可访问
    set "IS_OK=0"
    if "!STATUS_CODE!"=="200" set "IS_OK=1"
    if "!STATUS_CODE!"=="301" set "IS_OK=1"
    if "!STATUS_CODE!"=="302" set "IS_OK=1"
    
    :: 如果状态码为 000,通常说明 DNS 解析失败或完全无法连接
    if "!STATUS_CODE!"=="000" set "STATUS_CODE=ERR"

    :: 根据判断结果进行输出和记录
    if "!IS_OK!"=="0" (
        echo [异常] 状态码: !STATUS_CODE! - 网址: !URL!
        :: 将异常网址写入导出文件
        echo 状态码: !STATUS_CODE! - 网址: !URL! >> "%OUTPUT_FILE%"
    ) else (
        echo [正常] 状态码: !STATUS_CODE! - 网址: !URL!
    )
)

:: ==========================================
:: 结束
:: ==========================================
echo ==================================================
echo 检测完成!
echo 所有不可访问的网址已导出至: %OUTPUT_FILE%
pause
2 个赞

这个事情,有专业的做法(开源的项目)

比如:https://status.appinn.com/

甚至可以实时通知你哪个网站挂了。

1 个赞

我有类似的疑惑,问题出在,有些网站需要走代理才能访问,有些走了代理反而打不开。这样检测404,会不会误杀很多实际能访问的网站?

这个检测页面比主站的访问速度还慢啊。。

不重要啊,又没人访问 :joy: 能收到通知就行

这个看项目,有些网站监测项目可以自行设置走亦或者不走代理。

我觉得可以仿照 B 站的 网络诊断 - 哔哩哔哩弹幕视频网 - ( ゜- ゜)つロ 干杯~ - bilibili 工具,将常用的网站放进去,点一下就可以自动检测一遍了。