htmlproofer能批量检测真实http状态码,需配合本地http服务、--url-ignore、--allow-hash-href等参数避免误报,且默认head请求可能被cdn干扰,应视情况改用get并人工复核软404。

直接用 htmlproofer 扫,别信“在线一键检测”——它不发真实 HTTP 请求,就不是真验 404。
为什么浏览器开发者工具不够用
它只能查当前页点过的链接,没法覆盖全站导航、侧边栏、页脚、分页按钮里的隐藏链接。你手动点十次,漏掉的可能是另外两百个 a[href] 和 link[href]。更关键的是:它不检查 JS 渲染后动态插入的链接(比如 React 路由生成的 <a></a>),也不记录跳转链终点(302 → 404 算失效,但你得自己追)。
htmlproofer 必须加的参数
默认配置在本地跑会大量误报,尤其面对静态站或本地开发路径时。实操中这几个参数不能省:
-
--url-ignore "/^file:\/\//,/^http:\/\/localhost:/":跳过本地文件协议和未启动的开发服务地址 -
--allow-hash-href:否则所有href="#section"都被标成“失效” -
--http-status-ignore 0:把网络超时、跨域拦截这类非 HTTP 错误排除,聚焦真 404/410 -
--timeout 10:避免内网慢服务卡死整个扫描 -
--check-favicon:很多 404 来自link[rel="icon"]路径错,但常被忽略
扫描前必须起本地 HTTP 服务
htmlproofer 不解析文件系统路径,只认 HTTP URL。如果你直接扫 ./index.html,它根本不会去读 ./css/main.css —— 因为没上下文基准。正确做法是:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 先运行
python3 -m http.server 8000(或npx serve -s) - 确认能通过
http://localhost:8000/访问首页 - 再执行
htmlproofer http://localhost:8000/ --only-4xx
注意:/ 结尾不能少,否则相对路径计算会偏移;如果项目有 <base href="/subpath/">,得确保服务根目录对应这个子路径,否则所有 href="page.html" 都会错位请求到 /page.html 而非 /subpath/page.html。
线上环境要绕过 CDN 缓存干扰
有些 CDN 对 HEAD 请求返回 404(为防爬),但 GET 是 200。htmlproofer 默认发 HEAD,这时就得强制改用 GET:
- 加参数
--method get - 同时加
--max-connections 5控制并发,避免触发 CDN 限流 - 若目标站禁止爬虫,
User-Agent可设为真实浏览器标识:--user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36"
最麻烦的是软 404:服务器返回 200,但页面内容是“抱歉,页面不存在”。这种必须靠 Puppeteer 或自定义脚本二次判断——看 document.title 是否含 “404”,或核心容器是否为空。状态码只是第一道过滤,别让它成为唯一依据。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










