豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: 死链检测工具PHP

🤖 Ai回答:
死链检测工具在网页开发和维护中非常重要,它可以帮助你发现网站中失效的链接(即“死链”),从而提升用户体验和SEO效果。使用PHP编写一个死链检测工具是一个不错的选择,因为它可以灵活地集成到现有的PHP项目中。

以下是一个简单的PHP死链检测工具的实现思路和代码示例:

功能说明
1、从指定的URL开始,递归或迭代地抓取页面中的所有链接。
2、对每个链接发送HTTP请求,检查返回的状态码。
3、如果状态码不是 `200`(表示成功),则标记为死链。
4、将结果输出到文件或控制台。

代码示例

php
<?php

// 设置最大递归深度
$maxDepth = 5;

// 存储已访问的链接
$visitedLinks = [];

// 死链列表
$deadLinks = [];

/
* 检测单个链接是否为死链
*
* @param string $url 链接地址
* @param int $depth 当前递归深度
*/
function checkLink($url, $depth) {
global $visitedLinks, $deadLinks, $maxDepth;

// 如果深度超过限制,直接返回
if ($depth $maxDepth) {
return;
}

// 如果已经访问过该链接,跳过
if (isset($visitedLinks[$url])) {
return;
}

// 标记为已访问
$visitedLinks[$url] = true;

echo Checking: $url (Depth: $depth)\n;

// 发送HTTP请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($CH, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向
curl_setopt($ch, CURLOPT_HEADER, true); // 获取响应头
curl_setopt($ch, CURLOPT_NOBODY, true); // 只获取头部信息
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时时间

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

// 如果状态码不是200,则标记为死链
if ($httpCode != 200) {
$deadLinks[] = [
'url' = $url,
'status_code' = $httpCode,
];
echo Dead link found: $url (Status Code: $httpCode)\n;
}
}

/
* 从页面中提取所有链接
*
* @param string $html 页面HTML内容
* @return array 提取的链接列表
*/
function extractLinks($html) {
$links = [];
preg_match_all('/<a\s+href=[\']([^\']+)[\']/i', $html, $matches);
if (!empty($matches[1])) {
foreach ($matches[1] as $link) {
// 去除重复链接
if (!in_array($link, $links)) {
$links[] = $link;
}
}
}
return $links;
}

/
* 从指定URL开始递归检测死链
*
* @param string $url 初始URL
* @param int $depth 当前递归深度
*/
function crawlSite($url, $depth = 1) {
global $visitedLinks, $deadLinks;

// 如果已经访问过该链接,跳过
if (isset($visitedLinks[$url])) {
return;
}

// 标记为已访问
$visitedLinks[$url] = true;

echo Crawling: $url (Depth: $depth)\n;

// 发送HTTP请求获取页面内容
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时时间

$html = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

// 如果状态码不是200,则标记为死链
if ($httpCode != 200) {
$deadLinks[] = [
'url' = $url,
'status_code' = $httpCode,
];
echo Dead link found: $url (Status Code: $httpCode)\n;
} else {
// 提取页面中的所有链接
$links = extractLinks($html);
foreach ($links as $link) {
// 构造绝对路径
$absoluteUrl = parseUrl($url, $link);
// 递归检测子链接
crawlSite($absoluteUrl, $depth + 1);
}
}
}

/
* 解析相对URL为绝对URL
*
* @param string $baseUrl 基础URL
* @param string $relativeUrl 相对URL
* @return string 绝对URL
*/
function parseUrl($baseUrl, $relativeUrl) {
if (strpos($relativeUrl, 'http') === 0) {
return $relativeUrl;
}

$parsedBaseUrl = parse_url($baseUrl);
$scheme = isset($parsedBaseUrl['scheme']) ? $parsedBaseUrl['scheme'] 、'://' : '';
$host = isset($parsedBaseUrl['host']) ? $parsedBaseUrl['host'] : '';
$path = isset($parsedBaseUrl['path']) ? dirname($parsedBaseUrl['path']) : '';

// 处理相对路径
if (strpos($relativeUrl, '/') === 0) {
return $scheme 、$host 、$relativeUrl;
} else {
return $scheme 、$host 、$path 、'/' 、$relativeUrl;
}
}

// 示例:从指定URL开始检测死链
$startUrl = 'https://65.hk';
crawlSite($startUrl);

// 输出死链列表
echo \n=== Dead Links ===\n;
foreach ($deadLinks as $deadLink) {
echo URL: {$deadLink['url']}, Status Code: {$deadLink['status_code']}\n;
}

?

使用说明
1、将上述代码保存为一个PHP文件,例如 `dead_link_checker.php`。
2、修改 `$startUrl` 为你需要检测的网站入口URL。
3、在命令行运行:
bash
php dead_link_checker.php

4、工具会递归地检测网站中的所有链接,并输出死链列表。

注意事项
1、性能问题:递归检测可能会消耗大量资源,建议设置合理的 `$maxDepth` 和超时时间。
2、robots.txt:遵守目标网站的 `robots.txt` 文件规则,避免对服务器造成过大压力。
3、错误处理:可以增加更多的错误处理逻辑,例如网络超时、SSL验证失败等。
4、并发检测:如果需要提高检测速度,可以使用多线程或多进程技术(如PHP的 `pcntl` 扩展)。

通过这个工具,你可以轻松地检测网站中的死链,并及时修复它们,从而提升网站的质量和用户体验。

Ai作答

📣 商家广告


广告招商

算命

算命

公司

八字


0

IP地址: 192.228.54.99

搜索次数: 0

提问时间: 2025-11-06 00:23:24

🛒 域名购买
robots.red
m.tj.cn
lansou.cn
3qk.cn
875.net.cn
ousou.cn
wg.gs
7.hk.cn
te.biz
gwgh.cn

❓️ 热门提问
MySQL中文手册
国外独立vps
轻量应用服务器怎么搭建网站
03年香港金像奖
com域名注册平台
服务器机柜十大排名
ip和子网掩码转换
亚马逊标题SEO
香港保姆一个月多少钱
租用服务器可以做什么
豌豆Ai站群搜索引擎系统

🌐 域名评估
yu7.ln.cn
bb.he.cn
72.gs
deepseek.pub
ipxw.cn
yvbb.cn
xphone.video
nsag.cn
pp.he.cn
bb.jl.cn

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
日本の検索エンジン  租vps平台  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 65888 65889 65890 下一篇