实现外链跳转中间页的一个思路
由于近期站长收到 wxb 的温暖来电😨,所以对博客安全额外关注。好巧不巧印象中在 友链朋友圈 刷到类似文章,于是立刻开展学习并全站自查。(当初刷到时还不以为然,没想到这么快就到我头上…)
文章提供一个在 Hexo 实现的简单的方法,涉及到对插件源代码的修改(不优雅),但过渡时期可暂时容忍这一不足。我觉得整体思路是有参考性的。
插件安装与调整
安装插件的目的是,识别出所有的外部链接,并修改其 URL 的格式使之成为内部链接。URL 指向一个中间页(没错,就是我以前嗤之以鼻的「互联网壁垒」)。你可以选择其他方式完成这件事情(比如 Hugo 方案参考 Hugo 外部链接跳转提示页面-大大的小蜗牛 (eallion.com))
插件 hvnobug/hexo-external-link: 😀一个Hexo插件,解决外链跳转问题 (github.com) 所做的就是这件事情。但是唯一缺点就是最终转换的链接不可定制,于是我就手动修改了一下源代码,即修改博客目录下 blogs\node_modules\hexo-filter-links\lib\filter.js
文件:
1 | - NewhrefStr = 'href="' + config.url + '/go/#' + NewhrefStr + '"'; |
这样链接就变成了我想要的样子:/pages/go.html#
+ 编码为 Base64 的外部链接地址。
建立中间页
从上面转换后的中间连接可以知道,我设置的中间页位置为 /pages/go.html
。其实我只是在 sourse/pages
目录下新建了 go.md
文件而已,Hexo 会自动渲染成 HTML。我这样做只是为了和某些页面统一而已。你也可以自己另外设计独立的页面。
go.md
基本内容如下(省略了样式代码,保留主要的 HTML,看思路即可):
1 | --- |
不太建议全站启用外链中间页,只对文章内容启用中间页即可。
附一份白名单,涵盖程序员常用外链(云服务平台、博客网站、笔记网站等):
1 | exclude: |
后记
如果平时不喜欢各大网站中间页可以考虑安装这个脚本:Open the F**king URL Right Now (greasyfork.org)(我喜欢脚本简介里写的内容😀)
或者尝试安装这个插件(我没试过):Skip Redirect (google.com)
本文参考
- Hexo的外链转内链插件 - 春风吹 - 浅秋枫影的博客 (cuojue.org)
- Hugo 外部链接跳转提示页面-大大的小蜗牛 (eallion.com)
- HUGO 外链跳转到中间页 - 空白Koobai
- js实现倒计时跳转页面_在网页中显示倒计时读秒效果,比如543210当数据小于0时指定跳转到其他页面-CSDN博客
- NodeJS:字符串和base64相互转换_nodejs string to base64-CSDN博客
- 使用 JavaScript 进行 Base64 编码与解码_js base64解码-CSDN博客
- JavaScript中 切割截取字符串的几种方法_js 截取字符串-CSDN博客
- Document: getElementsByClassName() method - Web APIs | MDN (mozilla.org)