如何检测网站是否存在死链|批量抓取链接(死链接检测实操教程)

发布时间:2026-07-23 18:13

一个网站随着内容更新和外部链接变化,难免会出现死链(即返回404、500等错误状态的链接)。死链不仅影响用户体验,还会被搜索引擎降权。本教程将教你如何用专业工具批量抓取网站所有链接,并快速检测出哪些是死链。

### 前言介绍

死链检测的核心逻辑是:先抓取网站所有页面的URL,然后向这些URL发送HTTP请求,根据返回的状态码判断链接是否有效。手动点击几千个链接不现实,因此需要借助自动化工具。本教程采用开源且跨平台的命令行工具 `httpx` 和 `screamingfrogseospider`(简称Screaming Frog)组合完成。前者负责批量请求检测,后者负责抓取网站链接。整个过程无需编程基础,只要会复制粘贴命令即可。

### 前置准备

1. **一台电脑**:Windows / macOS / Linux 均可。

2. **安装Screaming Frog SEO Spider**:这是行业标准的网站爬虫工具,免费版可抓取500个URL,足够测试小型网站。下载地址:screamingfrog.co.uk/seo-spider/。下载后按提示安装即可。

3. **安装httpx**:这是一个高性能的HTTP探测工具。安装方式(二选一):

* **Windows用户**:打开浏览器访问 `https://github.com/projectdiscovery/httpx/releases`,下载 `httpx_x.x.x_windows_amd64.zip`(x.x.x为版本号),解压后你会看到一个 `httpx.exe` 文件。为了方便,将其放到一个单独的文件夹,例如 `C:\httpx\`。

* **macOS/Linux用户**:打开终端,执行命令 `brew install httpx`(macOS)或 `sudo apt install httpx`(Linux)。如果系统提示没有该包,请先安装Go语言环境,然后执行 `go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest`。

4. **准备待检测的网站域名**:例如 `https://example.com`。确保你有权对该网站进行爬取和检测。

### 分步操作步骤

#### 第一步:使用Screaming Frog抓取网站所有链接

1. 打开Screaming Frog软件,在顶部输入框中输入你的网站完整URL(例如 `https://example.com`),点击右侧的“Start”按钮。

2. 软件会自动开始爬取。你可以在界面左下角看到“URLs Crawled”数字在增加。等待爬取完成(当左下角显示“Paused”或“Finished”时即可,通常小型网站1-2分钟完成)。

3. 点击顶部菜单栏的“Bulk Export” -> “All URLs” -> “All Inlinks”。(注意:选择“All Inlinks”会导出网站内部所有链接,包括图片、CSS、JS等。如果你只想检测HTML页面链接,可以选“HTML” -> “All Inlinks”。新手建议选“All Inlinks”最全面)。

4. 软件会自动弹出一个浏览器窗口,下载一个名为 `all-inlinks.csv` 的文件。将其保存到桌面或你容易找到的文件夹。这个文件里包含了网站所有的链接地址。

#### 第二步:清洗和整理链接列表

1. 用记事本(Windows)或文本编辑(macOS/Linux)打开 `all-inlinks.csv` 文件。

2. 你会看到第一行是标题行(如 `Address,Title,Status Code...`),第二行开始是链接。我们需要提取出“Address”这一列的所有链接。

3. **方法一(推荐,无需额外软件)**:新建一个空白的文本文件,命名为 `urls.txt`。手动复制`all-inlinks.csv`中所有链接(从第二行开始,只复制第一列地址,不要复制后面的状态码和标题),粘贴到 `urls.txt` 中,每行一个链接。

4. **方法二(使用Excel)**:用Excel打开 `all-inlinks.csv`,选中“Address”这一整列,复制,然后粘贴到一个新建的记事本中,保存为 `urls.txt`。

5. 保存 `urls.txt` 到 `C:\httpx\` 文件夹(Windows)或你的工作目录(macOS/Linux)。**注意**:确保文件编码为UTF-8,否则中文路径可能报错。如果你用记事本另存为,在编码下拉框选择“UTF-8”。

#### 第三步:使用httpx批量检测死链

1. **打开命令行工具**:

* **Windows**:按下 `Win + R`,输入 `cmd`,回车。然后输入 `cd C:\httpx\` 进入你存放 `httpx.exe` 和 `urls.txt` 的文件夹。

* **macOS/Linux**:打开终端,使用 `cd` 命令切换到存放 `urls.txt` 的文件夹(例如 `cd ~/Desktop`)。

2. **执行检测命令**:在命令行中输入以下命令并回车:

```bash

httpx -l urls.txt -sc -title -fc 200,301,302,307,308 -o dead-links.txt

```

**命令解释**:

* `-l urls.txt`:指定输入文件,即我们整理好的链接列表。

* `-sc`:在输出结果中显示HTTP状态码。

* `-title`:显示页面标题(方便识别)。

* `-fc 200,301,302,307,308`:过滤掉这些正常的状态码(200成功,301/302/307/308重定向)。**只保留非正常状态码的链接**,即死链。

* `-o dead-links.txt`:将检测结果输出到 `dead-links.txt` 文件中。

3. **等待检测完成**:`httpx` 会并发发送请求,速度很快。几百个链接通常几秒到十几秒完成。命令行会滚动显示正在检测的URL。当命令提示符重新出现时,表示检测结束。

#### 第四步:查看死链结果

1. 打开你工作目录下的 `dead-links.txt` 文件(Windows在 `C:\httpx\` 下,macOS/Linux在你运行命令的文件夹下)。

2. 你会看到类似下面的内容:

```

https://example.com/broken-page (404 Not Found) [Page Not Found]

https://example.com/old-image.jpg (500 Internal Server Error) [Error]

https://example.com/deleted-link (403 Forbidden) [Access Denied]

```

3. 每一行就是一个死链。第一列是链接地址,括号内是HTTP状态码(404、500、403等),方括号内是页面标题(如果有)。**这就是你网站上的所有死链列表**。

### 常见问题

**Q1:为什么检测出来的死链比我想象的多?**

A:可能包含了外部链接。Screaming Frog默认导出所有链接,包括指向其他网站的链接(外链)。如果你只想检测本网站的内部死链,需要在Screaming Frog的“Bulk Export”时选择“Internal” -> “All Inlinks”。或者手动在 `urls.txt` 中删除以其他域名开头的链接。

**Q2:httpx提示“命令未找到”或“不是内部或外部命令”。**

A:说明系统没有找到 `httpx` 程序。Windows用户请确保你在包含 `httpx.exe` 的文件夹中运行命令,或者将该文件夹添加到系统环境变量PATH中。macOS/Linux用户请检查是否安装成功,可以尝试 `./httpx` 代替 `httpx`(如果当前目录下有该文件)。

**Q3:检测结果为空(dead-links.txt文件是空的)。**

A:说明你的网站所有链接都返回了200、301、302等正常状态码,没有死链。这是好事。如果确定有死链但没检测出来,可能是 `-fc` 参数过滤掉了。可以尝试去掉 `-fc` 参数,先查看所有链接的状态码:`httpx -l urls.txt -sc -title -o all-status.txt`,然后手动在 `all-status.txt` 中查找非200的链接。

**Q4:网站有几百页,Screaming Frog免费版只能抓500个URL怎么办?**

A:免费版限制是500个URL。如果你的网站超过500页,可以分批检测:先抓取网站前500个重要页面(如首页、栏目页、产品页),或者购买Screaming Frog付费版(约200美元/年)。另一个替代方案是使用 `wget` 命令爬取网站:`wget --spider -r -l 5 -o wget-log.txt https://example.com`,然后从 `wget-log.txt` 中提取链接。但这种方法对新手较复杂,建议优先使用Screaming Frog免费版处理中小型网站。

**Q5:检测过程中提示“连接超时”或“SSL错误”。**

A:这是目标服务器响应慢或证书问题。`httpx` 默认超时时间为5秒,你可以增加超时时间:`httpx -l urls.txt -sc -fc 200 -timeout 15 -o dead-links.txt`(将超时改为15秒)。如果SSL证书错误,可以添加 `-x509-skip-verify` 参数跳过验证。

### 收尾总结

通过本教程,你学会了用Screaming Frog抓取网站所有链接,再用httpx批量检测死链。整个过程不需要写代码,只需复制粘贴命令和文件操作。核心要点是:**先抓取所有链接,再过滤出非正常状态码的链接**。建议每季度对网站进行一次死链检测,发现死链后及时在网站后台删除或做301重定向到相关页面。这能显著提升网站的用户体验和SEO表现。现在,你可以打开你的网站,按照步骤操作一遍,清理掉那些“断头路”了。