链接工具箱 (Link Tools)
本插件为收费插件,需要自行购买
📋 购买流程
-
注册账号
- 访问 webjing.com/signup 完成账号注册
-
进入购买页面
- 登录后访问 webjing.com/uc/product
-
选择产品
- 找到 链接工具箱 (Link Tools) 插件
-
完成支付
- 选择购买周期并完成支付
🔐 授权说明
- 购买后获得 单站点授权
- 支持 免费更新 和 技术支持
- 授权信息与购买账号绑定
🎁 优惠提醒
⚠️ 限时优惠:首发期间享受 ¥12.9 特惠价格,优惠结束后(2026年2月5号)恢复原价 ¥19.9
QQ交流群
1、📖 简介
链接工具箱是一个功能强大的 Halo CMS 插件,专注于外部链接管理与安全跳转。它能够自动识别文章中的外部链接,提供安全跳转提示、点击统计、白名单管理等功能,有效提升网站安全性和用户体验。
2、✨ 功能特性
2.1、核心功能
- 🔗 外部链接自动识别:自动扫描文章/页面中的外部链接
- 🛡️ 安全跳转页面:提醒用户即将离开当前网站,支持自定义模板
- 📊 链接统计分析:记录链接展示数、点击数,支持按日/周/月统计
- 📋 白名单管理:可信域名直接跳转,支持通配符匹配
- 🎯 超链接卡片支持:无需主题适配,自动处理超链接卡片组件
- 📝 链接来源追踪:记录链接所在的文章/页面信息
- 🖥️ 控制台小组件:实时展示热门链接数据
2.2、统计维度
| 维度 | 说明 |
|---|---|
| 展示数 | 用户悬浮/触摸链接时记录 |
| 点击数 | 用户实际点击跳转时记录 |
| 设备类型 | 区分 PC 端和移动端 |
| 时间维度 | 支持今日/本周/本月/全部 |
2.3 功能预览
| 链接点击数据分析 | 链接数据详情 |
|---|---|
![]() |
![]() |
设置界面
| 文章链接扫描设置 | 配置界面 |
|---|---|
![]() |
![]() |
3、安装
方式二:手动安装
- 下载最新版本的 JAR 文件
- 进入 Halo 后台 → 插件管理
- 点击「安装」上传 JAR 文件
- 启用插件
⚙️ 4、公共API说明
当前插件提供了 3 个主要公共的 API 接口,用于前端主题和外部系统调用:
1. 获取提示配置接口
- 接口路径:
/apis/api.common.webjing.com/v1alpha1/tipmsg - 请求方法:
GET - 功能描述: 获取跳转页面的提示消息配置信息
- 响应格式: JSON
响应示例
{
"normalTip": "正常跳转提示",
"downloadTip": "下载链接提示",
"dangerTip": "危险链接提示",
"verificationCode": "验证代码"
}
2. 获取白名单接口
- 接口路径:
/apis/api.common.webjing.com/v1alpha1/whiteList - 请求方法:
GET - 功能描述: 获取外链白名单列表
- 响应格式:
[
"localhost",
"*.webjing.com"
]
3. 获取统计数据接口
- 接口路径:
/apis/api.common.webjing.com/v1alpha1/statistics - 请求方法:
GET - 功能描述: 获取指定链接的访问统计数据
- 请求参数:
- 示例:
- 响应格式:
{
"targetUrl": "https://example.com",
"targetDomain": "example.com",
"totalViews": 100,
"todayViews": 10,
"weekViews": 50,
"monthViews": 80,
"totalClicks": 80,
"todayClicks": 8,
"weekClicks": 40,
"monthClicks": 60,
"pcViews": 60,
"pcClicks": 50,
"mobileViews": 40,
"mobileClicks": 30,
"conversionRate": 80.0,
"firstViewTime": "2024-01-01T00:00:00Z",
"firstClickTime": "2024-01-01T00:00:00Z",
"lastViewTime": "2024-01-01T00:00:00Z",
"lastClickTime": "2024-01-01T00:00:00Z"
}
🎨 5、主题开发者指南
5.1、自定义跳转页面模板
在主题的 templates 目录下创建以下文件即可覆盖插件内置模板:
templates/
├── jump.html # 链接跳转页面模板
└── error.html # 错误页面模板(可选)
5.2、上下文数据
在跳转页面模板中,可通过以下方式获取上下文数据:
<script th:inline="javascript">
window.__LINK_JUMP_CONTEXT__ = {
// 目标链接 URL
targetUrl: /*[[${targetUrl}]]*/ '',
// 目标域名
targetDomain: /*[[${targetDomain}]]*/ '',
// 是否为下载链接
isDownload: /*[[${isDownload}]]*/ false,
// 是否为白名单链接
isWhiteList: /*[[${isWhiteList}]]*/ false,
// 链接类型: NORMAL / DOWNLOAD / WHITELIST / HYPERLINK_CARD
linkType: /*[[${linkType}]]*/ 'NORMAL',
// 倒计时秒数
countdown: /*[[${countdown}]]*/ 5,
// 是否需要验证码
requireVerification: /*[[${requireVerification}]]*/ false,
// 主题样式
themeStyle: /*[[${themeStyle}]]*/ '',
// 提示语配置
tipMessage: {
normalTip: /*[[${tipMessage?.normalTip}]]*/ '',
downloadTip: /*[[${tipMessage?.downloadTip}]]*/ '',
dangerTip: /*[[${tipMessage?.dangerTip}]]*/ ''
},
// 站点信息
site: {
title: /*[[${site?.title}]]*/ '',
logo: /*[[${site?.logo}]]*/ ''
}
};
</script>
5.3、引入 LinkJump.js
<script th:src="@{/plugins/PluginLinkTools/assets/static/linkJump.js}"></script>
5.4、LinkJump API 参考
// 获取上下文数据
const ctx = LinkJump.getContext();
// 执行跳转(推荐,会记录统计)
LinkJump.doJump();
// 通过 API 跳转
LinkJump.doJumpViaApi();
// 复制到剪贴板
LinkJump.copyToClipboard('https://example.com');
// 验证下载码
LinkJump.verifyCode(inputCode, (isValid) => {
if (isValid) {
LinkJump.doJump();
} else {
LinkJump.showToast('验证码错误');
}
});
// 启动倒计时
LinkJump.startCountdown(5,
{
element: document.getElementById('countdown'), // 显示倒计时的元素
onTick: (remaining) => {
console.log(`剩余 ${remaining} 秒`);
},
onComplete: () => {
LinkJump.doJump();
}
});
// 停止倒计时
LinkJump.stopCountdown();
// 显示提示消息
LinkJump.showToast('操作成功', 2000); // 消息内容, 显示时长(ms)
// XSS 安全转义
const safeHtml = LinkJump.escapeHtml(userInput);
// 获取配置数据(带缓存)
LinkJump.fetchConfig().then(config => {
console.log(config);
});
// 打字机效果
LinkJump.typewriterEffect(element, {
speed: 50, // 打字速度(ms)
cursor: '|', // 光标字符
onComplete: () => {} // 完成回调
});
5.5、完整模板示例
<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>正在跳转...</title>
<style>
/* 你的自定义样式 */
</style>
</head>
<body>
<div class="container">
<h1>即将离开 <span th:text="${site?.title}">本站</span></h1>
<p>您即将访问:<code th:text="${targetUrl}"></code></p>
<p th:if="${!isWhiteList}" class="warning" th:text="${tipMessage?.normalTip}">
请注意外部链接安全
</p>
<div class="actions">
<span id="countdown">5</span> 秒后自动跳转
<button onclick="LinkJump.doJump()">立即跳转</button>
<button onclick="history.back()">返回</button>
</div>
</div>
<script th:inline="javascript">
window.__LINK_JUMP_CONTEXT__ = {
targetUrl: /*[[${targetUrl}]]*/ '',
isDownload: /*[[${isDownload}]]*/ false,
isWhiteList: /*[[${isWhiteList}]]*/ false,
countdown: /*[[${countdown}]]*/ 5
};
</script>
<script th:src="@{/plugins/PluginLinkTools/assets/static/linkJump.js}"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
const ctx = LinkJump.getContext();
if (ctx.isWhiteList) {
// 白名单链接直接跳转
LinkJump.doJump();
} else {
// 启动倒计时
LinkJump.startCountdown(ctx.countdown, {
element: document.getElementById('countdown'),
onComplete: () => LinkJump.doJump()
});
}
});
</script>
</body>
</html>
后续计划
短期计划
- 链接健康检查:定期检测外链可用性,标记失效链接
- 链接分组管理:按类型/来源对链接进行分组
- 数据导出:支持导出统计数据为 Excel/CSV
- 访客画像:记录访客 IP 地区、浏览器等信息
- 图表增强:添加更多可视化图表(趋势图、饼图等)
- 短链接服务:生成站内短链接,便于分享和追踪
- 链接替换规则:自定义链接重写规则(如推广链接自动添加参数)
- 防盗链功能:检测并阻止恶意引用
- SEO 优化:
- 自动添加
rel="nofollow"属性 - 外链 noopener/noreferrer 处理
- 自动添加
- 链接预检:恶意网站/钓鱼链接检测预警
- 批量管理:批量编辑/删除链接记录
长期计划
- 链接归档:自动归档历史链接快照
- AI 智能分析:
- 链接内容自动分类
- 异常点击行为检测
- 智能推荐相关链接
- 评论链接管理:评论中的外链单独管理
- WebHook 集成:点击事件触发 WebHook 通知



