【随记】hexo文章加密
實現方法
低級
實現
打開yourblogsite/themes/hexo-theme-inside/layout/index.njk文件,在之間添加以下內容
#JavaScript <script>(function(){if('{{ page.password }}'){if (prompt('請輸入密碼') !== '{{ page.password }}'){alert('密碼錯誤');history.back();}}})(); </script>之后,在你想要加密的文章的頭文件里添加上password: yourpassword即可。
注意,這里僅針對Hexo平臺的inside主題。但是,它的代碼和思想是通用的,你在Hexo的其他主題也是可以做到的,只是要擺放的位置會不一樣。位置的要點是:
模板文件。都應該在layout文件夾中。
之間。其實在其他位置也是可行的,但是在此代碼之前的一些內容可能會被加載,不完美。存在問題
目前主要問題是:
丑。調用瀏覽器的UI,各個平臺的樣式不統一。
可能被破解。如果你的博客源碼是存放在GitHub這樣的開源庫的話,那么恭喜你。別有用心之人可以通過查看你的GitHub倉庫對應文章的md文件找到這個密碼。
高級
真正高級別的方法早就有大神給做好了,同樣是在hexo插件中心 & GitHub。現將方法記錄如下。
安裝
npm install --save hexo-blog-encrypt
或者 yarn add hexo-blog-encrypt(需要安裝 Yarn)
快速開始
首先在 站點配置文件 中啟用該插件:
encrypt:enable: true然后在你的文章的頭部添加上對應的字段,如 password, abstract, message
--- title: 文章加密 date: 2021-01-04T22:20:13.000Z category: 教程 tags:- 博客- inside keywords: 博客文章密碼 password: MloveY abstract: 密碼:MloveY message: 輸入密碼,查看文章 ---- password: 是該博客加密使用的密碼
- abstract: 是該博客的摘要,會顯示在博客的列表頁
- message: 這個是博客查看時,密碼輸入框上面的描述性文字
如果你想對 TOC 也進行加密,則在 article.ejs 中將 TOC 的生成代碼修改成如下:
<% if(post.toc == true){ %><div id="toc-div" class="toc-article" <% if (post.encrypt == true) { %>style="display:none" <% } %>><strong class="toc-title">Index</strong><% if (post.encrypt == true) { %><%- toc(post.origin) %><% } else { %><%- toc(post.content) %><% } %></div><% } %><%- post.content %>然后使用 hexo clean && hexo g && hexo s,來查看效果。
自定義
1、如果你對默認的主題不滿意,或者希望修改默認的提示和摘要內容,你可以添加如下配置在 站點配置文件 中。
encrypt:enable: truedefault_abstract: 這是一篇加密文章,內容可能是個人情感宣泄或者收費技術。如果你確實想看,請與我聯系。default_message: 輸入密碼,查看文章。這樣,對于每一篇需要加密的文章就不必都在在頭部添加 abstract 和 message 字段了,腳本會自動添加默認的內容填充。
2、如果你希望對某一篇特定的文章做特殊處理(如本文的 abstract ,可以在對應文章的頭部添加
--- title: 文章加密 date: 2021-01-04T22:20:13.000Z category: 教程 tags:- 博客- inside keywords: 博客文章密碼 password: MloveY abstract: 密碼:MloveY message: 輸入密碼,查看文章 ---此時,博客頭部的 abstract 會覆蓋 站點配置文件 的 default_abstract 實現自定義。
存在問題
-
如果你開啟了 字數統計功能 的話,那么本文的字數會顯得比實際值大。
-
加密文章內部分腳本會失效,已知 代碼復制 失效。
總結
以上是生活随笔為你收集整理的【随记】hexo文章加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAC系统使用Homebrew安装nvm
- 下一篇: 【操作】Json取value时,为什么得