安全跳转页-插件版
安全跳转页-插件版
乄げ灬落幕分享一个大佬的hexo博客基本通用的 安全跳转页
插件介绍
- 外部链接跳转:默认 提示块标签将外部链接替换为自定义的跳转页面,可以自定义文件名称,增加安全性。
- 灵活配置: 支持多个容器,使用
css
选择器进行选择、支持白名单域名和生效页面路径的配置。 - 编码: 可选将外链链接编码为
Base64
加密,在跳转时再使用js转为正常网站地址,增强安全性能。 - 调试模式: 调试模式输出详细信息,便于开发和调试。
- 自定义页面: 支持设置标题、副标题、头像、暗黑模式,如果有前端基础,还可以自己定义跳转页面进行美化。
安全跳转必要性
Hexo-SafeGo
插件的核心目的,并非直接进行安全检测,而是作为一种自我保护机制,默默守护着网站的声誉与访问者的信任。现在的插件并没有能力能够主动扫描并消除网络中的所有威胁,但却能有效避免自身网站因缺少必要的安全协议而被浏览器标记为“不安全”,这一小步跳跃,实则是维护网站形象与信誉的一大步。
此插件的实施,更像是一份无形的“免责声明”,它向访问者无声宣告:作为网站管理者,我已经采取措施确保连接的安全性,即便遭遇外部链接可能带来的不确定性,也已事先提醒,尽到了告知的责任。在这个信息错综复杂的时代,这样的透明度与责任感显得尤为重要,在网上,我们碰到的很多东西都是不安全的,甚至有些我们只能规避,因为我们承受不住(比如ddos
呜呜呜),基于此目的,首先这是在hexo
插件方向的一个学习,其次,还是希望这个插件能够对一些站长有一些帮助。
使用说明
安装
在使用该插件之前,需要先安装 cheerio
,cheerio
是一个轻量级的库,用于在服务器端快速、灵活地实现 jQuery
核心功能。在 hexo-safego
插件中,cheerio
被用来解析和操作生成的静态 HTML 内容,类似于在浏览器中使用 jQuery
处理 DOM
元素。这使得插件能够在生成静态页面时,处理和替换外部链接,增强博客的安全性,而不需要在客户端引入 jQuery
。Hexo
一般都有这个插件,可以在 node_modules
查看,如果没有,请先执行:
1 | npm install cheerio --save |
然后即可安装该插件:
1 | npm install hexo-safego --save |
此时,我们就安装好了该插件。
配置
在hexo
根目录的_config.yml
文件中添加以下配置:
1 | ### 插件配置 |
如果你前方安装正确,此时你应该可以先直接尝试使用hexo
三件套查看效果了!如果遇到了问题,请开启debug
查看输出!
配置项
如果你可以正常运行,下面你可以配置相关配置项对你的博客进行适配,下面是每个配置项的说明:
enable : Boolean, 默认值: false, 描述: 是否启用 hexo-safego 插件。
enable_base64_encode : Boolean, 默认值: true, 描述: 是否对跳转链接进行 Base64 编码,如上面展示图像所示,如果关闭,则不对参数进行处理,直接放置目标路径。
enable_target_blank : Boolean, 默认值: true, 描述: 是否在跳转链接中添加 target=”_blank” 属性,在新页面跳转。
url_param_name : String, 默认值: “u”, 描述: 跳转页面的 URL 参数名称,可自行定义。
html_file_name : String, 默认值: “go.html”, 描述: 生成的跳转页面文件名。
ignore_attrs : Array, 默认值: [‘data-fancybox’], 描述: 需要忽略的链接属性列表,这里默认忽略灯箱,如果你有其他需要忽略的可以继续添加。
apply_containers : Array, 默认值: [‘#article-container’], 描述: 指定要处理的容器列表,这里默认为butterfly文章部分。
domain_whitelist : Array, 默认值: [], 描述: 域名白名单列表,使用字符串匹配,如果跳转链接中包含该字符串,则忽略。
apply_pages : Array, 默认值: [‘/posts/‘], 描述: 生效页面路径列表。
avatar : String, 默认值: “https://fastly.jsdelivr.net/gh/willow-god/hexo-safego@latest/lib/avatar.png“, 描述: 跳转页面的头像图片链接,可以使用相对地址。
title : String, 默认值: “网站名称”, 描述: 跳转页面的标题。
subtitle : String, 默认值: “网站副标题”, 描述: 跳转页面的副标题。
darkmode : Boolean, 默认值: false, 描述: 是否启用夜间模式。
**debug :**Boolean, 默认值: false, 描述: 是否启用调试模式,开启后会输出详细的调试信息。
注意,以上配置项中未设置空值判断,请不要留空。如果您不需要某个配置项并希望使用默认值,请自行填写为默认值或直接删除对应配置项!
进阶操作
如果你有前端基础,除了以上配置 ,你还可以自行定义相关页面,打开插件中的go.html
,这里我为了方便大家修改,没有进行代码压缩,其中CSS
分为三部分:通用配置,夜间专用,白天专用:
- 通用配置:这里包含除了夜间和白天配色,其余所有
css
配置:
1 | body { |
- 夜间配置:夜间配置主要配置夜间的一些配色:
1 | {% if darkmode %} |
- 白天配置:同上,包含白天配色
1 | {% if not darkmode %} |
注意,上面的{% if not darkmode %}
不能删除,这个是模板文件的配置,表示当在符合要求时将其包裹的内容放置到文件中,否则抛弃,我将夜间和白天的配色分开目的是尽量压缩生成的html
页面代码量,加快加载速度。下面的JS选项,如果无必要,请不要删除。
- 除此之外,你还可以更改其中的结构,但是请尽量不要修改类名,有些类名可能绑定有特定的跳转。
其他参数
在原作者中还有一些配置项,比如额外参数:external nofollow noopener noreferrer
经过烤炉后,可直接将这个添加到网站中,因为这个选项非常常用,下面是解释:
- external:指示链接指向外部网站。这通常是为了便于样式和 JavaScript 控制,但对搜索引擎爬虫没有直接影响。
- nofollow:告诉搜索引擎不要跟踪这个链接,也就是说,不要将链接目标的权重传递给目标页面。因此,使用
nofollow
可以防止搜索引擎通过这个链接爬取目标页面并将其权重传递。 - noopener:用于防止新打开的页面能够通过
window.opener
属性获得对原页面的引用。这主要是为了防止某些安全风险,例如页面篡改和钓鱼攻击。 - noreferrer:告诉浏览器在导航到链接目标时不发送 HTTP Referer 头信息。这对于保护隐私和安全有一定帮助。