添加到桌面
热文技术教程

智能守护,友链无忧 — 博客友情链接监控功能乞丐版

本文阅读 5 分钟
首页 技术教程 正文

 博客如同一座座知识的灯塔,博友们通过友情链接相互照亮。然而,随着时间的流逝,有些博友可能会出现下链接、博客关停的现象,影响灯塔的光芒。因此,友情链接监控功能就显得有点重要。

  友情链接是博客之间互惠互利的重要手段,它有助于提高博客的知名度、流量和搜索引擎排名。然而,要是被单方面下链接,效果就适得其反了,于是就想着弄个友情链接监控功能,也能省去逐一去检查友情链接的麻烦。

友链监控思路

编写php文件,检查友链网站运行状态,及友情链接反链情况,生成json文件缓存数据;
创建 cron 定时任务,每日定时访问php文件,更新友链状态数据;
前端读取json文件数据,显示友链情况;
效果如下:
m7b76mvs.png

功能实现方法

步骤一
编写 friend_links.php 功能文件代码,详细代码如下,开头网站信息及友链信息需根据自身情况修改:


<?php
// 设置本站链接
$this_site_url = 'https://www.80srz.com'; // 请替换为您的网站URL
// 定义友情链接数组
$friend_links = [
        '风清' => 'https://wind.ink/email',
        '钧言极客' => 'https://www.jinjun.top/link.html',
        'DAIDAIFU BLOG - 代代付' => 'https://www.ddf.im/index.php/145.html',
        '南川吟梦' => 'https://blog.southz.top/links.html',
        '旺东自留地' => 'https://wang618.cn/you-qing-lian-jie.html',
        // 根据自己友链情况修改,注意是有你链接的友情链接页面的网址!
];
// 缓存文件路径
// $cache_file_path = 'friend-links.json';
    $uploads_dir = $_SERVER['DOCUMENT_ROOT'].'/';
    $cache_file_path = $uploads_dir. 'friend-links.json';  
// 检查链接状态
function check_link_status($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $http_code;
}
// 检查是否有反链
function check_backlink($url,$backlink) {
    $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);
    $content = curl_exec($ch);
    curl_close($ch);
    return strpos($content,$backlink) !== false;
}
// 显示监控结果
function display_monitor_results($friend_links,$this_site_url, $cache_file_path) {
    // 更新缓存数据
    $updated_cache_data = [];
    foreach ($friend_links as$name => $url) {
        $http_code = check_link_status($url);
        $backlink = check_backlink($url, $this_site_url);
        $status_class = ($http_code == 200) ? 'status-ok' : 'status-error';
        $backlink_class =$backlink ? 'backlink-ok' : 'backlink-error';
        
        $updated_cache_data[$name] = [
            'url' => $url,
            'status' => $http_code == 200 ? '网站还活着' : '网站倒闭了',
            'backlink' => $backlink ? '我们还是朋友' : '友谊小船已翻'
        ];
    }
    // 写入缓存数据
    $cache_data = [
        'timestamp' => time(), // 设置当前时间戳
        'links' => $updated_cache_data
    ];
    file_put_contents($cache_file_path, json_encode($cache_data));
    
    return $updated_cache_data;
}
// 获取监控结果
$monitor_results = display_monitor_results($friend_links, $this_site_url,$cache_file_path);
// 输出JSON数据
echo '数据缓存成功';

代码说明: 1、设置博客及友链信息;2、生成json缓存文件保存友链状态信息,避免频繁监测增加服务器负载;3、缓存文件默认保存在网址根目录。

步骤二
  创建 cron 定时任务,定期访问 friend_links.php 文件。你可以把它放到网站的任意文件夹中,但要记住路径。这个步骤不再赘述。

步骤三
  有了友链监控数据 friend_links.json ,我们还需将其在前端显示,方便直观查看。可以在友链页面主题模板合适位置添加以下代码,样式需根据主题样式进行微调。


// 以下是本站用的一个简单样式,可实现根据友链状态显示不同颜色
    <style>
        table {
            width: 100%;
            border-collapse: collapse;
        }
        th, td {
            border: 1px solid #333; /* 灰色边框 */
            padding: 10px;
            text-align: left;
        }
        th {
            background-color: #333;
            color: #fff;
        }
        td.status-ok {
            color: #0f0; /* 正常状态为绿色 */
        }
        td.status-error {
            color: #f00; /* 错误状态为红色 */
        }
        td.backlink-ok {
            color: #0f0; /* 有反链为绿色 */
        }
        td.backlink-error {
            color: #f00; /* 无反链为红色 */
        }
    </style>

<?php
    // 设置JSON文件路径
    $jsonFilePath = 'friend-links.json';
    // 检查JSON文件是否存在
    if (file_exists($jsonFilePath)) {
    // 读取JSON文件内容
    $jsonContent = file_get_contents($jsonFilePath);
    // 解析JSON内容
    $data = json_decode($jsonContent, true);
    // 检查解析是否成功
    if (json_last_error() === JSON_ERROR_NONE) {
        // 获取JSON文件中的时间戳
        $timestamp =$data['timestamp'];
        // 显示检查更新时间
        echo '<h2>友情链接监控</h2>';
        // 显示表格
        echo '<table>';
        echo '<caption style="text-align:right;font-size:12px;font-color:#999;">自动监控报告时间:' . date('Y - n - j   : H:i:s', $timestamp) . '</caption>';        
        echo '<tr><th style="width:8%">序号</th><th style="width:36%;">网站名称</th><th style="width:28%;">网站状态</th><th style="width:28%;">友链状态</th></tr>';
            $rank = 1 ;
        // 遍历JSON文件中的链接
        foreach ($data['links'] as$name => $link) {
            // 获取链接状态
            $status =$link['status'];
            // 设置状态颜色
            $statusClass =$status === '网站还活着' ? 'status-ok' : 'status-error';
            // 获取反链状态
            $backlink =$link['backlink'];
            // 设置反链颜色
            $backlinkClass =$backlink === '我们还是朋友' ? 'backlink-ok' : 'backlink-error';
            // 显示链接信息
            echo '<tr>';
            echo '<td style="text-align: center;">'.$rank.'</td>';
            echo '<td><a href="' . $link['url'] . '" rel="external nofollow noopener noreferrer" target="_blank">' . $name . '</a></td>'; // 显示网站名称
            echo '<td class="' . $statusClass . '"  style="text-align: center;">' .$status . '</td>';
            echo '<td class="' . $backlinkClass . '"  style="text-align: center;">' .$backlink . '</td>';
            echo '</tr>';
            $rank ++;
        }
        echo '</table>';
    } else {
        // 如果解析失败,显示错误信息
        echo '<p>JSON解析错误: ' . json_last_error_msg() . '</p>';
    }
} else {
    // 如果JSON文件不存在,显示错误信息
    echo '<p>JSON文件不存在或不可读。</p>';
}
?>

 好了,友情链接监控功能到此就已经实现了,记得第一从要访问一次 friend_links.php 生成友链状态数据。想要折腾的博友可以动手去试试吧。

第三方网站监控API推荐

网上有很多这样的服务,诸如:Uptimerobot 和 Uptimeflare 等,基础功能也都是免费的。但今天我要推荐的是 StatusLive + Uptimerobot 组合,因为它部署简单,很适合我这种小白。

  StatusLive项目地址:https://github.com/freejishu/StatusLive

  Uptimerobot官网地址:https://uptimerobot.com

  它最经典的打开方式 ( dist + conf.json + core.php ) ,按照说明申请 API ,修改设置文件内容后,将文件夹上传至主机空间的任意文件夹下即可,不需要使用 docker 技术。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
Image
-- 展开阅读全文 --
工会系统抖音快手等多平台主播分红分润系统星探经纪人城市合伙人多角色管理系统分红统计系统
« 上一篇 01-26
2025最新唯美社区StarFree源码
下一篇 » 02-03

发表评论

发表评论