1.安装插件

npm install –save hexo-blog-encrypt

或者 yarn add hexo-blog-encrypt

2.在 站点配置文件 中启用该插件:

1
2
encrypt:
enable: true

3.然后在你的文章的头部添加上对应的字段,如 password, abstract, message

  • 将“ password”值添加到帖子的前面,例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
---
title: Hello World # 公开
date: 2016-03-30 21:18:02 # 公开
abstract: # 首页显示的摘要 # 公开
category: [测试] # 公开
tags: [测试, Hexo加密] # 公开

message: # 引导输入密码提示语,点开首页可查看 # 公开
password: 123456 # 密码 # 不公开

wrong_pass_message:噢,这是无效的密码。请检查并重试。
fault_hash_message:哦,这些解密的内容无法验证,但是您仍然可以看一下。
---

然后使用 hexo clean && hexo g && hexo s,来查看效果

1
2
3
4
5
6
7
8
9
10
11
12
---
title: 文章加密测试
date: 2020-01-06 20:20:20
category: 测试
tags:
- 测试
- Hexo加密
keywords: 博客文章密码
password: password
abstract: 密码:password
message: 加密测试,输入密码,查看文章
---
  • password: 是该博客加密使用的密码
  • abstract: 是该博客的摘要,会显示在博客的列表页
  • message: 这个是博客查看时,密码输入框上面的描述性文字

5.自定义

5.1 加密目录

如果您有关于TOC的帖子,则应更改模板的代码。以默认主题“ landscape”为例:

  • 您应该在hexo/themes/landscape/layout/_partial/article.ejs中找到article.ejs文件。
  • 找到类似<%post.content%>的代码,该代码通常在第30行。
  • <%post.content%>替换为以下代码块:
1
2
3
4
5
6
7
8
9
10
11
<% 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, {list_number: true}) %>
<% } else { %>
<%- toc(post.content, {list_number: true}) %>
<% } %>
</div>
<% } %>
<%- post.content %>

5.2如果你对默认的主题不满意,或者希望修改默认的提示和摘要内容,你可以添加如下配置在 站点配置文件 中。

post's front matter > _config.yml (in the root directory) > default

1
2
3
4
encrypt:
enable: true
default_abstract: 这是一篇加密文章,内容可能是个人情感宣泄或者收费技术。如果你确实想看,请与作者联系。
default_message: 输入密码,查看文章。

这样,对于每一篇需要加密的文章就不必都在在头部添加 abstractmessage 字段了,脚本会自动添加默认的内容填充。

如果你希望对某一篇特定的文章做特殊处理(如本文的 abstract ),可以在对应文章的头部添加

1
2
3
4
5
6
7
8
9
10
11
---
title: 文章加密
date: 2019-01-04T22:20:13.000Z
category: 教程
tags:
- 博客
- Hexo
keywords: 博客文章密码
password: TloveY
abstract: 密码:TloveY
---

此时,博客头部的 abstract 会覆盖 站点配置文件default_abstract 实现自定义。

5.3 关于回调

在某些博客中,某些元素在解密后可能无法正常显示。这是一个已知的问题。当前的解决方案是检查博客中的代码,以了解在发生onload事件时调用了哪些函数。然后在您的文章结尾处编写这些代码。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
title: Callback Test
date: 2019-12-21 11:54:07
tags:
- Encrypted
---

This is a blog to test Callback functions. You just need to add code at the last of your post like following:

It will be called after the blog decrypted.

<script>
// add script tag and code at the last of your post
alert("Hello World");
</script>

演示:回调示例

6.存在问题

  • 如果你开启了 字数统计功能 的话,那么本文的字数会显得比实际值大。
  • 加密文章内部分脚本会失效,已知 代码复制 失效。

加一个测试图片

附上本文配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
文首:
---
title: 文章加密测试
date: 2020-01-06 20:20:20
category: [测试]
tags: [测试, Hexo加密]
keywords: 博客文章密码
password: password
abstract: 密码:password
message: 加密测试,输入密码,查看文章
wrong_pass_message: Oh, this is an invalid password. Check and try again, please.
wrong_hash_message: Oh, these decrypted content cannot be verified, but you can still have a look.
---


文末:
<script>

// add script tag and code at the last of your post

alert("Hello World, 密码正确");

</script>

参考