diff --git a/2023/07/05/trace-of-line-01/index.html b/2023/07/05/trace-of-line-01/index.html index 0695714..cffc00a 100644 --- a/2023/07/05/trace-of-line-01/index.html +++ b/2023/07/05/trace-of-line-01/index.html @@ -24,7 +24,7 @@ - + @@ -307,9 +307,9 @@
本小说任何情节均为虚构,与现实中任何国家、团体、组织与个人无关
不存在的历史,勾起了石月仙的注意,随着找寻真相的深入,一个隐瞒了全世界的阴谋浮出水面。而对于人类,阴谋何来,何从,何去?
-「第三次科技革命后,人类进入信息时代,信息化开始影响人类的历史进程……」
+「第三次科技革命后,人类进入信息时代,信息化开始影响人类的历史进程……」
「为什么初中高中上过的还要再上一遍啊?我都快烦死了。」石月仙在心中自言自语道,眼睛无神地看着教授在全息屏上指指点点。
「怎么就没有第四次科技革命呢?第一次工业革命与第二次工业革命之间几乎没有罅隙,第二次与第三次也只隔了几十年,第三次科技革命都过去快 100 年了,怎么第四次科技革命一点苗头的没有呢?」
下课铃响,教授一溜烟没影了,消失在学生们的视野中。学生们鱼贯而出,奔着食堂而去。留下石月仙一人在教室里沉思。
@@ -590,12 +590,6 @@最近,知乎上线了针对专栏[1]中盐选文章的反爬系统,随后该系统也被运用在知乎回答页面中的盐选文章上。具体表现为爬取的文章内容中出现大量的错乱词汇。而在本篇文章中,我们将一步步带领各位解开这些乱码。在这个过程中,我们将对字体反爬有更深入的认识,并学到运用字体反爬时需要注意的问题。
-来自知乎回答不被爱是一种什么样的感受? - 知乎
- +来自知乎回答不被爱是一种什么样的感受? - 知乎
+
如图所示,在页面源码中出现了大量乱码,例如(原字,错字):[2]
这些乱码使得文章可读性大大下降,那么乱码是怎么产生的?又如何解决这个问题呢?
-观察上述现象,页面源码中的字,在被显示到页面后,居然变成了正确的字。因此我们初步推断知乎在该页面运用了字体反爬。
+观察上述现象,页面源码中的字,在被显示到页面后,居然变成了正确的字。因此我们初步推断知乎在该页面运用了字体反爬。
接下来我们打开 F12 -> Network 页面,选择 Font,观察知乎加载的字体。
- +右键选择 Open in new tab 将字体保存下来。
- +将字体后缀名改为 .ttf [3] 并打开。
-与正常字体对比,我们下载的字体明显替换了部分字体,这便是知乎用于反爬的字体了。接下来我们将分析这个字体并给出应对方案。
-字体反爬的根本原理是替换原本的字为一个新字,再用字体将新字渲染为原字,这样对程序而言就只见到新字而不是旧字了,而用户看到的还是原本的内容。因此只要找到新字与原字间的对应关系便可解决该反爬。而要找到这个对应关系,抓住字体中各个字形的特征是必不可少的一环。
+字体反爬的根本原理是替换原本的字为一个新字,再用字体将新字渲染为原字,这样对程序而言就只见到新字而不是旧字了,而用户看到的还是原本的内容。因此只要找到新字与原字间的对应关系便可解决该反爬。而要找到这个对应关系,抓住字体中各个字形的特征是必不可少的一环。
我们打开 FontDrop! 加载字体,向下翻,观察字形的特征。
- +我们发现字形的 Glyph 为 uni662F 而 Unicode 为 65F6,接下来我们试着查询这两个十六进制数对应的字:
1 |
|
正好,上文提到,「是」在源码中被替换为了「时」。知乎在反爬字体中保留了原字与新字的对应关系,为我们提供了一个极为便捷的捷径。我们可以直接读取这个对应关系,而不是比对每个字的笔画[4]。然而,这也是其字体反爬系统的致命缺陷,各位在自己的网站运用字体反爬时也要注意这一点。
至此,字形的特征与对应关系都被我们分析出了,接下来我们将编写程序从字体中提取对应关系。
-要提取各个字间的对应关系,首先我们需要安装 fontTools [5]。
+要提取各个字间的对应关系,首先我们需要安装 fontTools [5]。
1 |
|
用 ttLib.TTFont(filename)
打开字体:
1 |
|
初始化一个存储对应关系的字典:
1 |
|
遍历字形,获得其 Glyph 与 Unicode,并写入字典(注意这里的Glyph对应的字可能不是标准的字,比如是康熙部首[6],因此我们要对其标准化[7]):
1 |
|
(这里的 cmap 是一个 dict,是字形的 {Unicode: Glyph}[8])
接下来,我们将使用得到的对应关系将带乱码的文章转为正常文章。
-这段代码很简单,不作解释。
+这段代码很简单,不作解释。
1 |
|
1 |
|
1 |
|
温馨提示:上面字体文件名记得换成你自己下载的字体文件名
在本文的带领下,我们粗略地了解了知乎所使用的反爬技术,分析了其使用的反爬字体,找出了原字与新字的对应关系,最终将带乱码的文章转为了正常文章。其中,知乎使用的反爬字体没有去掉 Unicode 与 Glyph 的对应关系,虽然这使我们更轻松地得到了对应关系,但是对于知乎而言,这种错误无疑是致命的,因此,在字体反爬的实际运用中,我们更需要避免这种错误。[9]
+ +在本文的带领下,我们粗略地了解了知乎所使用的反爬技术,分析了其使用的反爬字体,找出了原字与新字的对应关系,最终将带乱码的文章转为了正常文章。其中,知乎使用的反爬字体没有去掉 Unicode 与 Glyph 的对应关系,虽然这使我们更轻松地得到了对应关系,但是对于知乎而言,这种错误无疑是致命的,因此,在字体反爬的实际运用中,我们更需要避免这种错误。[9]
知乎也在该反爬系统部署到回答页不久以后升级了其专栏反爬系统,本文所介绍的致命缺陷已被修复[10],而解码新反爬系统的内容,就留到本系列的下篇吧。
(敬请期待)
-data:font/ttf;...
代表该字体是 ttf 格式的。
↩由于国内特殊的网络原因[1],Zerotier 官方提供的 Planet 用户体验不佳。为此,不少人选择自建私有 Moon,甚至私有 Planet 服务器。然而,正如官方文档所说[2],使用私有 Planet 服务器会使你的节点无法找到其他的标准节点。本文试图提出一种方案在使用私有 Planet 服务器的同时与标准节点通信。
-这步主要是为了一个模板:
+这步主要是为了一个模板:
1 |
|
得到的 json:
1 |
|
使用以下代码(照着 attic/world/mkworld.cpp 和 node/Topology.cpp 改的)
+ +使用以下代码(照着 attic/world/mkworld.cpp 和 node/Topology.cpp 改的)
1 |
|
以上代码发布在ZeroTierOne/attic/world/read_planet.cpp at dev · cxzlw/ZeroTierOne · GitHub。
+ +以上代码发布在ZeroTierOne/attic/world/read_planet.cpp at dev · cxzlw/ZeroTierOne · GitHub。
运行结果如下:
1 |
|
大概修改成这样
+ +大概修改成这样
1 |
|
1 |
|
在 Zerotier 目录[3]下新建文件夹 moons.d。
+ +1 |
|
在 Zerotier 目录[3]下新建文件夹 moons.d。
把生成的 xxxxxxxxxxxxxxxx.moon 放到你的 moons.d文件夹。
重启 Zerotier 服务(不会重启的建议重启电脑)。
这样就好了,你可以开始享用你的自定义 Planet 带来的低延迟体验和官方 Planet 上大量的节点了
-在这篇文章中,我们通过将 Zerotier 自带的 Planet 转为 Moon 来进行连接,以帮助使用自定义 Planet 的节点与官方 Planet 上的节点进行通信。这方便了我们在使用低延迟的自建 Planet 的同时与大量标准节点进行通信。
-在这篇文章中,我们通过将 Zerotier 自带的 Planet 转为 Moon 来进行连接,以帮助使用自定义 Planet 的节点与官方 Planet 上的节点进行通信。这方便了我们在使用低延迟的自建 Planet 的同时与大量标准节点进行通信。
+/var/lib/zerotier-one
,Windows 是 C:\ProgramData\ZeroTier\One\
,别的不知道。
↩本小说任何情节均为虚构,与现实中任何国家、团体、组织与个人无关
不存在的历史,勾起了石月仙的注意,随着找寻真相的深入,一个隐瞒了全世界的阴谋浮出水面。而对于人类,阴谋何来,何从,何去?
-「你家里关于知识大革命真实历史的藏书消失了,不仅如此,你对于知识大革命原有的记忆也消失了。这说明什么?」
+「你家里关于知识大革命真实历史的藏书消失了,不仅如此,你对于知识大革命原有的记忆也消失了。这说明什么?」
「说明有人想彻底地掩埋真相?」
「没错,丁教授搬离我们这栋楼之前,必然也接触过关于知识大革命真相的记忆,甚至,可能,他家里也有类似的藏书,所以他和杜子娟也会被删除记忆。」
陈鸢疑惑道:「我赞同,可是为什么唯独你没有失忆呢?还有一点,那个弄错……」
@@ -334,16 +334,14 @@众人这才散去,着手准备第二天的行囊。
花与树恹恹欲睡,唯有蝉鸣与清风谱写初夏的乐章。
-一个月亮过去了,朝阳冒出点点金光,昭示着黎明破晓。绿叶刚从梦境中醒来,眼角挤满了泪滴。树与花深吸一口气,清新的晨风自远方袭来,散入葳蕤林缬之中,吹拂潋滟水面,荡起水与风的缱绻
-情缘。
一个月亮过去了,朝阳冒出点点金光,昭示着黎明破晓。绿叶刚从梦境中醒来,眼角挤满了泪滴。树与花深吸一口气,清新的晨风自远方袭来,散入葳蕤林缬之中,吹拂潋滟水面,荡起水与风的缱绻
情缘。
「出发!」杜子娟推了推眼上的墨镜,手指耸立的高大车站,荷叶边短裙下是纤细白皙的双腿。
四人的影子镶嵌在站前广场的石砖上。无遮无掩,一览无余,天空注视着一切。
「好有趣,第一次体验失忆是什么感觉。」石月仙愉快中夹杂着意思不安。
「这不算失忆吧,也不能算是记忆错乱,这个应该叫记忆篡改。」陈鸢纠正道。
「总觉得,有种不安感,本能的不安感。」丁教授摸着心说道。
灼烧着烈日,吹拂着微风,嗥鸣着飞鸟,拥嚷着人群。列车开入站台,人们被高温赶入车厢。列车在几声蜂鸣后,驶于室温超导体轨道之上,飞快地远去。
-「尊敬的旅客朋友们,列车即将进入真空隧道,若您的耳朵感到不适,可以尝试做吞咽咀嚼动作平衡气压,如有其他不适,请立即联系工作人员。」广播声响起,紧接着是一声轰鸣,窗外变得一片漆
-黑,那种黑,是深不见底的深渊。
「尊敬的旅客朋友们,列车即将进入真空隧道,若您的耳朵感到不适,可以尝试做吞咽咀嚼动作平衡气压,如有其他不适,请立即联系工作人员。」广播声响起,紧接着是一声轰鸣,窗外变得一片漆
黑,那种黑,是深不见底的深渊。
两个小时后,窗外明朗起来,鳞次栉比的房屋缠绕着绿藤,高楼之间环绕着几缕青烟。高架桥、天桥、轻轨横行交错其间大多都已上了岁数,老旧不堪,破损的水泥墙潸然泪下,霓虹灯牌在斜阳下黯然失色。
列车停站,人群鱼贯而出,散向四面八方。
「接下来去哪?」石月仙看向朦胧的天空,层云之中透出几丝微弱的光芒。
@@ -353,8 +351,7 @@「很难想象一个技术宅女会去亲自买菜。」石月仙调侃道。
「你这是刻板印象吧。写代码写累了还不能出去走走?」杜子娟回怼道。
-「这不是重点啊,我家到丁教授家跑的话需要 5 分钟,也就是说,从你看到丁教授被带走开始,到我们赶过去,像石月仙说的,我们看到军车走的时间,起码需要 10 分钟,雨天的话,可能需要更久。军
-队的行动速度难道这么慢吗?十分钟时间居然只把一个人送上了一辆车?」陈鸢倒吸一口凉气。
「这不是重点啊,我家到丁教授家跑的话需要 5 分钟,也就是说,从你看到丁教授被带走开始,到我们赶过去,像石月仙说的,我们看到军车走的时间,起码需要 10 分钟,雨天的话,可能需要更久。军
队的行动速度难道这么慢吗?十分钟时间居然只把一个人送上了一辆车?」陈鸢倒吸一口凉气。
丁教授皱了皱眉头:「也许他们是故意的?那又是出于什么……」
「因为她也是特殊的存在啊。」陌生(已经不陌生了)而又空灵的声音再度响起。
「你终于出现了!所以我们该去哪?」杜子娟早已按耐不住内心的急切。
@@ -575,12 +572,6 @@本小说任何情节均为虚构,与现实中任何国家、团体、组织与个人无关
不存在的历史,勾起了石月仙的注意,随着找寻真相的深入,一个隐瞒了全世界的阴谋浮出水面。而对于人类,阴谋何来,何从,何去?
「你家里关于知识大革命真实历史的藏书消失了,不仅如此,你对于知识大革命原有的记忆也消失了。这说明什么?」
「说明有人想彻底地掩埋真相?」
「没错,丁教授搬离我们这栋楼之前,必然也接触过关于知识大革命真相的记忆,甚至,可能,他家里也有类似的藏书,所以他和杜子娟也会被删除记忆。」
陈鸢疑惑道:「我赞同,可是为什么唯独你没有失忆呢?还有一点,那个弄错……」
「因为你是特殊的存在啊。」那陌生而空灵的声音再度响起,二人的对话又一次被打断。
「你,你到底是谁?为什么能跟我们说话?」石月仙惊慌地问道。
「你不必知道,总之过来就对了。」陌生而空灵的声音回响在二人的脑海中,渐渐远去。
「究竟是怎么一回事啊?」陈鸢疯狂地挠着头,头上的头皮屑如雪花一般飘飘然落下。
「要不,我们听他的,去西京碰碰运气?」
又是一阵急促的敲门声。陈鸢拉开门看,门外站着满头大汗的杜子娟和丁教授。
「怎么了?弄得像回南天的墙壁似的。」石月仙关心道。
「我发现教授枕头底的日历没有撕,这是根本不可能发生的事。」杜子娟急切地说道。
「噗。」石月仙捂住嘴巴,不停地憋笑。「不愧是有其师必有其徒。」
「怎么?陈鸢的日历也没撕?」丁教授粗犷而沉稳的声音震得鱼缸里的水荡起了涟漪。
石月仙再一次阐述了自己的推测和刚刚发生的事。
「特殊的存在?还有那个弄错人是什么意思?」杜子娟陷入了沉思。「怎么比代码还烧脑?」
「既然我们被放出来了,只能说明两种可能,其一是他们真的弄错了;其二是那个将军想救我们,于是不知道用什么方法蒙混过关,把我们放出来了。但不可否认的是无论是哪一种可能,记忆删除都是无法避免的。」陈鸢揉搓着下巴颏分析道。
「失忆还能人为操控的?」石月仙疑问道。
「想必,大脑是个终端的话,记忆删除、记忆覆写都是有可能的。」杜子娟麻花一般的发辫在高阳下的微风中摇曳。
「大脑为什么是个终端呢?」丁教授缓缓问道。
「想必在场的人都对生物一概不知吧。」杜子娟冷冷地笑了笑。「太巧了,我也不会。」
屋内一片死寂,静得可怕。
「总之,先去西京吧。」石月仙率先打破沉默。
众人这才散去,着手准备第二天的行囊。
花与树恹恹欲睡,唯有蝉鸣与清风谱写初夏的乐章。
一个月亮过去了,朝阳冒出点点金光,昭示着黎明破晓。绿叶刚从梦境中醒来,眼角挤满了泪滴。树与花深吸一口气,清新的晨风自远方袭来,散入葳蕤林缬之中,吹拂潋滟水面,荡起水与风的缱绻
情缘。
「出发!」杜子娟推了推眼上的墨镜,手指耸立的高大车站,荷叶边短裙下是纤细白皙的双腿。
四人的影子镶嵌在站前广场的石砖上。无遮无掩,一览无余,天空注视着一切。
「好有趣,第一次体验失忆是什么感觉。」石月仙愉快中夹杂着意思不安。
「这不算失忆吧,也不能算是记忆错乱,这个应该叫记忆篡改。」陈鸢纠正道。
「总觉得,有种不安感,本能的不安感。」丁教授摸着心说道。
灼烧着烈日,吹拂着微风,嗥鸣着飞鸟,拥嚷着人群。列车开入站台,人们被高温赶入车厢。列车在几声蜂鸣后,驶于室温超导体轨道之上,飞快地远去。
「尊敬的旅客朋友们,列车即将进入真空隧道,若您的耳朵感到不适,可以尝试做吞咽咀嚼动作平衡气压,如有其他不适,请立即联系工作人员。」广播声响起,紧接着是一声轰鸣,窗外变得一片漆
黑,那种黑,是深不见底的深渊。
两个小时后,窗外明朗起来,鳞次栉比的房屋缠绕着绿藤,高楼之间环绕着几缕青烟。高架桥、天桥、轻轨横行交错其间大多都已上了岁数,老旧不堪,破损的水泥墙潸然泪下,霓虹灯牌在斜阳下黯然失色。
列车停站,人群鱼贯而出,散向四面八方。
「接下来去哪?」石月仙看向朦胧的天空,层云之中透出几丝微弱的光芒。
「人呢?怎么沉默了?」陈鸢黑褐色的瞳孔倒映着朦胧的层云。
四人只得先找到一处长椅休息,以等待下一步行动。
「话说,为什么当时杜子娟没有和丁教授被带走,而是与我们一同被带走呢?」石月仙仍抛不开过去的羁绊。
「平常我在那个时候都会去买菜吧,也许正好是我买菜回来的路上看见表舅被带走了吧。」杜子娟说道。
「很难想象一个技术宅女会去亲自买菜。」石月仙调侃道。
「你这是刻板印象吧。写代码写累了还不能出去走走?」杜子娟回怼道。
「这不是重点啊,我家到丁教授家跑的话需要 5 分钟,也就是说,从你看到丁教授被带走开始,到我们赶过去,像石月仙说的,我们看到军车走的时间,起码需要 10 分钟,雨天的话,可能需要更久。军
队的行动速度难道这么慢吗?十分钟时间居然只把一个人送上了一辆车?」陈鸢倒吸一口凉气。
丁教授皱了皱眉头:「也许他们是故意的?那又是出于什么……」
「因为她也是特殊的存在啊。」陌生(已经不陌生了)而又空灵的声音再度响起。
「你终于出现了!所以我们该去哪?」杜子娟早已按耐不住内心的急切。
「乌托邦路 1001 号,这里,你们会得到所有的答案。」空灵的声音回复道。
「我来叫车。」陈鸢掏出终端核心。
顷刻,一辆反重力出租飞车自远方飞来,底下整齐的线圈清晰可见,车底的边缘被镀上了一层充满科技感的莹蓝色光辉,一股强大的无形的力将众人往后推,石月仙略微踉跄几步。
四人上了车,飞车飞驰而去,穿梭云霄,划过苍穹的隼,在缭绕的烟雾中消失得无影无踪。
不一会,众人下了车。一幢怪异的房屋站在众人眼前,哥特式的尖顶,中式宫殿似的屋檐,古罗马式的拱券,简约式的落地窗。
「有一种,说不上来的美……」沉默了石月仙。
「想必,设计者的身世,一定很复杂吧。」陈鸢推了推鼻梁上的黑框眼镜。
吱呀一声,厚重的橡木木门嘶哑着,张开巨口。一只穿着欧式燕尾服的「兔子」走了出来。
「一只……兔子!?」杜子娟凑上前去。
那只「兔子」的瞳孔突然放得硕大,泛着红光。
「蓓斯格不是兔子,是以基于参照人类大脑神经元系统编译的算法语言模型的智能对话软件为基础的智能家居服务机器人。」蓓斯格生气地用幼女般的声音说道。
「啊?」石月仙眼睛瞪得如石榴果一般大。
「它是一个以智能对话软件为基础的智能家居服务机器人,并且这个对话软件的语言模型是参照人类神经元系统编写的。」杜子娟轻蔑地笑了下。
「这句话,应该没有语病吧……」石月仙的眼睛疯狂地打转。
「不知道。」陈鸢与丁教授几乎是异口同声。
「是客人啊,请进。」门后传出熟悉的陌生声音。
「这声音,好熟悉。」陈鸢踌躇着。
机器人兔子吃力地把门顶开。长廊上几盏昏暗的灯摇摇欲坠,古朴的墙壁上,刻满了各种古老的文字。
「归真会。」丁教授弯下腰,盯着墙上的甲骨文喃喃自语道。
「第一次!有外人把这些文字念出来了!蓓斯格好激动!」兔子机器人激动地摇着小手,「尾巴」轻快地晃动着。
「好可爱。」杜子娟摸了摸蓓斯格柔软的兔耳。那只机器人兔子好像害怕了,一下子溜得远远的。
长廊的尽头,一位披着白色长发的女子坐在旋转椅上,雪白的长发映着昏暗的光,披在椅背上。只见这位女子缓缓地鼓掌,又不紧不慢地转过椅子。
「欢迎光临归真会,初次见面,叫我句芒便好。」
白发女子站起身,将白皙的手伸出,作握手状。
「中国古代神话中的春神。」丁教授思索道。
杜子娟走上前,与女子握手。在看清女子白色长发下的年轻面孔时,杜子娟吓得迅疾地将手缩回。
「啊!」杜子娟尖叫一声。窗外几只麻雀受了惊,一跃而起,飞向天边。
「哦,不必紧张,这只是一种特殊的病。」句芒的声音逐渐空灵,变得像仲夏吹拂的风一般朦胧。
「这个声音,好熟悉。原来是你!」石月仙惊叹道。
女子碧蓝的眼眸深得像湖水。她撩开遮挡面部的长发,另一只眼眸却碧绿得像翡翠。
「居然是异瞳,真是个奇怪的病呢。」陈鸢说道。
「我们进去谈吧。」句芒缓缓走进一间茶室,在茶几前盘膝而坐。
顷刻,众人皆落座。
「在这里,你们可以得到所有的答案。」句芒说道。
石月仙抢先问道:「归真会是什么?还有,你是如何跟我们说话的?」
句芒脸上,挂着静谧的笑。
]]>本小说任何情节均为虚构,与现实中任何国家、团体、组织与个人无关
不存在的历史,勾起了石月仙的注意,随着找寻真相的深入,一个隐瞒了全世界的阴谋浮出水面。而对于人类,阴谋何来,何从,何去?
「你家里关于知识大革命真实历史的藏书消失了,不仅如此,你对于知识大革命原有的记忆也消失了。这说明什么?」
「说明有人想彻底地掩埋真相?」
「没错,丁教授搬离我们这栋楼之前,必然也接触过关于知识大革命真相的记忆,甚至,可能,他家里也有类似的藏书,所以他和杜子娟也会被删除记忆。」
陈鸢疑惑道:「我赞同,可是为什么唯独你没有失忆呢?还有一点,那个弄错……」
「因为你是特殊的存在啊。」那陌生而空灵的声音再度响起,二人的对话又一次被打断。
「你,你到底是谁?为什么能跟我们说话?」石月仙惊慌地问道。
「你不必知道,总之过来就对了。」陌生而空灵的声音回响在二人的脑海中,渐渐远去。
「究竟是怎么一回事啊?」陈鸢疯狂地挠着头,头上的头皮屑如雪花一般飘飘然落下。
「要不,我们听他的,去西京碰碰运气?」
又是一阵急促的敲门声。陈鸢拉开门看,门外站着满头大汗的杜子娟和丁教授。
「怎么了?弄得像回南天的墙壁似的。」石月仙关心道。
「我发现教授枕头底的日历没有撕,这是根本不可能发生的事。」杜子娟急切地说道。
「噗。」石月仙捂住嘴巴,不停地憋笑。「不愧是有其师必有其徒。」
「怎么?陈鸢的日历也没撕?」丁教授粗犷而沉稳的声音震得鱼缸里的水荡起了涟漪。
石月仙再一次阐述了自己的推测和刚刚发生的事。
「特殊的存在?还有那个弄错人是什么意思?」杜子娟陷入了沉思。「怎么比代码还烧脑?」
「既然我们被放出来了,只能说明两种可能,其一是他们真的弄错了;其二是那个将军想救我们,于是不知道用什么方法蒙混过关,把我们放出来了。但不可否认的是无论是哪一种可能,记忆删除都是无法避免的。」陈鸢揉搓着下巴颏分析道。
「失忆还能人为操控的?」石月仙疑问道。
「想必,大脑是个终端的话,记忆删除、记忆覆写都是有可能的。」杜子娟麻花一般的发辫在高阳下的微风中摇曳。
「大脑为什么是个终端呢?」丁教授缓缓问道。
「想必在场的人都对生物一概不知吧。」杜子娟冷冷地笑了笑。「太巧了,我也不会。」
屋内一片死寂,静得可怕。
「总之,先去西京吧。」石月仙率先打破沉默。
众人这才散去,着手准备第二天的行囊。
花与树恹恹欲睡,唯有蝉鸣与清风谱写初夏的乐章。
一个月亮过去了,朝阳冒出点点金光,昭示着黎明破晓。绿叶刚从梦境中醒来,眼角挤满了泪滴。树与花深吸一口气,清新的晨风自远方袭来,散入葳蕤林缬之中,吹拂潋滟水面,荡起水与风的缱绻
情缘。
「出发!」杜子娟推了推眼上的墨镜,手指耸立的高大车站,荷叶边短裙下是纤细白皙的双腿。
四人的影子镶嵌在站前广场的石砖上。无遮无掩,一览无余,天空注视着一切。
「好有趣,第一次体验失忆是什么感觉。」石月仙愉快中夹杂着意思不安。
「这不算失忆吧,也不能算是记忆错乱,这个应该叫记忆篡改。」陈鸢纠正道。
「总觉得,有种不安感,本能的不安感。」丁教授摸着心说道。
灼烧着烈日,吹拂着微风,嗥鸣着飞鸟,拥嚷着人群。列车开入站台,人们被高温赶入车厢。列车在几声蜂鸣后,驶于室温超导体轨道之上,飞快地远去。
「尊敬的旅客朋友们,列车即将进入真空隧道,若您的耳朵感到不适,可以尝试做吞咽咀嚼动作平衡气压,如有其他不适,请立即联系工作人员。」广播声响起,紧接着是一声轰鸣,窗外变得一片漆
黑,那种黑,是深不见底的深渊。
两个小时后,窗外明朗起来,鳞次栉比的房屋缠绕着绿藤,高楼之间环绕着几缕青烟。高架桥、天桥、轻轨横行交错其间大多都已上了岁数,老旧不堪,破损的水泥墙潸然泪下,霓虹灯牌在斜阳下黯然失色。
列车停站,人群鱼贯而出,散向四面八方。
「接下来去哪?」石月仙看向朦胧的天空,层云之中透出几丝微弱的光芒。
「人呢?怎么沉默了?」陈鸢黑褐色的瞳孔倒映着朦胧的层云。
四人只得先找到一处长椅休息,以等待下一步行动。
「话说,为什么当时杜子娟没有和丁教授被带走,而是与我们一同被带走呢?」石月仙仍抛不开过去的羁绊。
「平常我在那个时候都会去买菜吧,也许正好是我买菜回来的路上看见表舅被带走了吧。」杜子娟说道。
「很难想象一个技术宅女会去亲自买菜。」石月仙调侃道。
「你这是刻板印象吧。写代码写累了还不能出去走走?」杜子娟回怼道。
「这不是重点啊,我家到丁教授家跑的话需要 5 分钟,也就是说,从你看到丁教授被带走开始,到我们赶过去,像石月仙说的,我们看到军车走的时间,起码需要 10 分钟,雨天的话,可能需要更久。军
队的行动速度难道这么慢吗?十分钟时间居然只把一个人送上了一辆车?」陈鸢倒吸一口凉气。
丁教授皱了皱眉头:「也许他们是故意的?那又是出于什么……」
「因为她也是特殊的存在啊。」陌生(已经不陌生了)而又空灵的声音再度响起。
「你终于出现了!所以我们该去哪?」杜子娟早已按耐不住内心的急切。
「乌托邦路 1001 号,这里,你们会得到所有的答案。」空灵的声音回复道。
「我来叫车。」陈鸢掏出终端核心。
顷刻,一辆反重力出租飞车自远方飞来,底下整齐的线圈清晰可见,车底的边缘被镀上了一层充满科技感的莹蓝色光辉,一股强大的无形的力将众人往后推,石月仙略微踉跄几步。
四人上了车,飞车飞驰而去,穿梭云霄,划过苍穹的隼,在缭绕的烟雾中消失得无影无踪。
不一会,众人下了车。一幢怪异的房屋站在众人眼前,哥特式的尖顶,中式宫殿似的屋檐,古罗马式的拱券,简约式的落地窗。
「有一种,说不上来的美……」沉默了石月仙。
「想必,设计者的身世,一定很复杂吧。」陈鸢推了推鼻梁上的黑框眼镜。
吱呀一声,厚重的橡木木门嘶哑着,张开巨口。一只穿着欧式燕尾服的「兔子」走了出来。
「一只……兔子!?」杜子娟凑上前去。
那只「兔子」的瞳孔突然放得硕大,泛着红光。
「蓓斯格不是兔子,是以基于参照人类大脑神经元系统编译的算法语言模型的智能对话软件为基础的智能家居服务机器人。」蓓斯格生气地用幼女般的声音说道。
「啊?」石月仙眼睛瞪得如石榴果一般大。
「它是一个以智能对话软件为基础的智能家居服务机器人,并且这个对话软件的语言模型是参照人类神经元系统编写的。」杜子娟轻蔑地笑了下。
「这句话,应该没有语病吧……」石月仙的眼睛疯狂地打转。
「不知道。」陈鸢与丁教授几乎是异口同声。
「是客人啊,请进。」门后传出熟悉的陌生声音。
「这声音,好熟悉。」陈鸢踌躇着。
机器人兔子吃力地把门顶开。长廊上几盏昏暗的灯摇摇欲坠,古朴的墙壁上,刻满了各种古老的文字。
「归真会。」丁教授弯下腰,盯着墙上的甲骨文喃喃自语道。
「第一次!有外人把这些文字念出来了!蓓斯格好激动!」兔子机器人激动地摇着小手,「尾巴」轻快地晃动着。
「好可爱。」杜子娟摸了摸蓓斯格柔软的兔耳。那只机器人兔子好像害怕了,一下子溜得远远的。
长廊的尽头,一位披着白色长发的女子坐在旋转椅上,雪白的长发映着昏暗的光,披在椅背上。只见这位女子缓缓地鼓掌,又不紧不慢地转过椅子。
「欢迎光临归真会,初次见面,叫我句芒便好。」
白发女子站起身,将白皙的手伸出,作握手状。
「中国古代神话中的春神。」丁教授思索道。
杜子娟走上前,与女子握手。在看清女子白色长发下的年轻面孔时,杜子娟吓得迅疾地将手缩回。
「啊!」杜子娟尖叫一声。窗外几只麻雀受了惊,一跃而起,飞向天边。
「哦,不必紧张,这只是一种特殊的病。」句芒的声音逐渐空灵,变得像仲夏吹拂的风一般朦胧。
「这个声音,好熟悉。原来是你!」石月仙惊叹道。
女子碧蓝的眼眸深得像湖水。她撩开遮挡面部的长发,另一只眼眸却碧绿得像翡翠。
「居然是异瞳,真是个奇怪的病呢。」陈鸢说道。
「我们进去谈吧。」句芒缓缓走进一间茶室,在茶几前盘膝而坐。
顷刻,众人皆落座。
「在这里,你们可以得到所有的答案。」句芒说道。
石月仙抢先问道:「归真会是什么?还有,你是如何跟我们说话的?」
句芒脸上,挂着静谧的笑。
]]>这步主要是为了一个模板:
1 |
|
得到的 json:
1 |
|
使用以下代码(照着 attic/world/mkworld.cpp 和 node/Topology.cpp 改的)
1 |
|
以上代码发布在ZeroTierOne/attic/world/read_planet.cpp at dev · cxzlw/ZeroTierOne · GitHub。
运行结果如下:
1 |
|
大概修改成这样
1 |
|
1 |
|
在 Zerotier 目录[3]下新建文件夹 moons.d。
把生成的 xxxxxxxxxxxxxxxx.moon 放到你的 moons.d文件夹。
重启 Zerotier 服务(不会重启的建议重启电脑)。
这样就好了,你可以开始享用你的自定义 Planet 带来的低延迟体验和官方 Planet 上大量的节点了
在这篇文章中,我们通过将 Zerotier 自带的 Planet 转为 Moon 来进行连接,以帮助使用自定义 Planet 的节点与官方 Planet 上的节点进行通信。这方便了我们在使用低延迟的自建 Planet 的同时与大量标准节点进行通信。
/var/lib/zerotier-one
,Windows 是 C:\ProgramData\ZeroTier\One\
,别的不知道。 ↩这步主要是为了一个模板:
1 |
|
得到的 json:
1 |
|
使用以下代码(照着 attic/world/mkworld.cpp 和 node/Topology.cpp 改的)
1 |
|
以上代码发布在ZeroTierOne/attic/world/read_planet.cpp at dev · cxzlw/ZeroTierOne · GitHub。
运行结果如下:
1 |
|
大概修改成这样
1 |
|
1 |
|
在 Zerotier 目录[3]下新建文件夹 moons.d。
把生成的 xxxxxxxxxxxxxxxx.moon 放到你的 moons.d文件夹。
重启 Zerotier 服务(不会重启的建议重启电脑)。
这样就好了,你可以开始享用你的自定义 Planet 带来的低延迟体验和官方 Planet 上大量的节点了
在这篇文章中,我们通过将 Zerotier 自带的 Planet 转为 Moon 来进行连接,以帮助使用自定义 Planet 的节点与官方 Planet 上的节点进行通信。这方便了我们在使用低延迟的自建 Planet 的同时与大量标准节点进行通信。
/var/lib/zerotier-one
,Windows 是 C:\ProgramData\ZeroTier\One\
,别的不知道。 ↩本小说任何情节均为虚构,与现实中任何国家、团体、组织与个人无关
不存在的历史,勾起了石月仙的注意,随着找寻真相的深入,一个隐瞒了全世界的阴谋浮出水面。而对于人类,阴谋何来,何从,何去?
「第三次科技革命后,人类进入信息时代,信息化开始影响人类的历史进程……」
「为什么初中高中上过的还要再上一遍啊?我都快烦死了。」石月仙在心中自言自语道,眼睛无神地看着教授在全息屏上指指点点。
「怎么就没有第四次科技革命呢?第一次工业革命与第二次工业革命之间几乎没有罅隙,第二次与第三次也只隔了几十年,第三次科技革命都过去快 100 年了,怎么第四次科技革命一点苗头的没有呢?」
下课铃响,教授一溜烟没影了,消失在学生们的视野中。学生们鱼贯而出,奔着食堂而去。留下石月仙一人在教室里沉思。
「前几年的反重力技术,为什么仅仅运用在交通上呢?而且没人知道这项技术的原理,反重力技术的出现会是第四次科技革命的源头吗?」
一阵如蟾蜍一般的叫声回响在空荡的教室中。石月仙起身走出教室,穿过鳞次栉比的教学楼,终于走到了饭堂前。只见同系的人垂头丧气地走出来。
「怎么了?饭被抢完了?」石月仙问道。
「那可不,我们历史系总是放得最晚的那一个,最后一批饭被信息技术系那一帮吃货抢完了。」一个同学说道。
「只好叫外卖了,虽然要等一会。」另一个同学掏出终端核心,终端核心将点餐界面投影在众人面前。
「AA 制吧,每个人付自己的。」石月仙提议道。众人附和。
等餐期间,石月仙抛出了脑中的疑问,霎时间众说纷纭。
「也许是人类的科学发展到头了?」
「或者是自然环境不足以支撑生产力发展,导致科技发展没有动力源推动吗?」
「哎呀,管它呢,科学家的事和我们历史系学生有什么关系?」
石月仙觉得这些说法都有道理,但又都不太合理。
「算了,还是问问陈鸢学长吧,他懂得多,找他问说不定会有答案。」
下午放学后,正值周末,石月仙得以回家拜访住在对门的陈鸢。
几阵敲门声后,门缓缓而开,陈鸢看见石月仙,连忙请进门。
「是什么风把你吹来了?这次又有什么问题问我?」陈鸢的眼睛炯炯有神,好像下一秒就能来往古今,穿梭时空。
石月仙再一次抛出了那一个问题。陈鸢的手揪着下巴,倒吸一口凉气。
顷刻,他终于开口:「说实话,我没头绪。」
「所以第四次科技革命到底是发生了,只是我们不知道,还是没发生呢?」石月仙疑惑地问道。
「要说发生了吧,近几年反重力技术在交通工具上的运用和全息投影技术在电子产品方面的运用说明科技进步了不少;但要说没发生吧,后者是对第三次科技革命产物的改进,没有革新性,前者又不知道为什么没有运用于生产,而且没有人知道其运行原理。」陈鸢边说,边回头翻找书架上的历史文献。
窗外下着倾盆大雨,梅雨时节的阴风时不时地溜进阴暗的房间,并调皮地光顾一圈,随性地翻了几页书,无趣地走了。扶摇直上,直奔远处庞大的由纺织混凝土构建而成的庞然巨物——那是漂浮在老城上的新城。石月仙拿起终端核心,手指一划,屋内顿时明堂起来。
「找到了,我爷爷当年拼老命才护存下来的历史书。」陈鸢轻柔地擦拭着泛黄的封皮,扫去积灰。
「拼老命护存下来的?」石月仙大感震惊,瞳孔放得如黑珍珠一般大。
「对,我爷爷说,这是历史所尘封的往事,一些人所不愿意看到的。当年知识大革命爆发的时候,几乎所有历史类书籍全部被联合政府焚毁了,他和丁教授守着居民楼,冒着生命危险,击退了前来焚书的民间组织,这才成功守护了我们家的藏书。」陈鸢抚摸着褶皱的纸页,眼睛里闪着晶莹的微光。
「我只听说过,知识大革命是一些民众和官员为了彻底改变教育体系而发动的一场暴力运动。最后搞得各国取消了统一升学考试,直接赋予各大学自治权。」石月仙眉头褶皱起来。
陈鸢扶着桌案,缓缓说道:「教育革命只是假象,实际上……」一阵急促的敲门声把使说话声戛然而止,如同一株苗被掐死在新泥之中。
陈鸢连忙起身,拉开门,只见一位少女,扶着墙壁,气喘吁吁,眼眸里闪着飘忽不定的光。
「是你?怎么这么急匆匆的?出了什么事吗?」陈鸢问道。
「是教授,丁教授他……被军队带走了!」少女娇柔的声音里镶嵌着恐惧。
「我现在就去看看。」陈鸢披上雨衣,就随少女冲出门去。石月仙也立刻拽起雨伞,带上门,朝着烟帷奔去。
「丁教授?(丁胜)我听说过,才到中年就退休的教授……可是这和军方有什么关系?」石月仙边狂奔,心里边嘀咕着。
穿过烟帷与街道,只见萧疏树木下,一辆军用飞车腾空而起,闪着红光,飞驰而去。
街道小巷里空无一人,往日车水马龙的景象在呼啸的阴风中如烟消云散一般消失,唯余渺小的三人在烟帷雨幕中无助地站立。
「怎么办?表舅就这样莫名其妙地被带走了。」少女欲哭无泪。
陈鸢拍拍她的肩,安慰道:「没事的,杜子娟,丁教授为人正直,又没干什么坏事……」
「可是军方把一个退休历史教授带走是何用意呢?」杜子娟颤颤巍巍。
出乎所有人的意料,骤然一声刺耳的,深入脑髓的声响回荡在三人脑中。石月仙捂着双耳,却也是徒劳,帷幕拉下,一片黑黢黢,紧接着便是身体不受控制,瘫倒在地。
不知过了多久,恍惚间,石月仙隐隐约约地听到某人的交谈声。
「将军,这些人怎么办?上面只要他一个。」
「这些人等会做记忆清除,然后放走。」
「我们先核验一下身份……等等,我们好像弄错人了!」
「将军,你确定我们弄错人了?要不要再找上面确认一下?」
「不用了,我敢肯定,一定是弄错了,你看……」
……
不知又过了多久,石月仙终于醒了过来,只见眼前是一台古老的机械钟,钟摆正吃力地摇摆着。再定睛一看,环顾四周,除了陈鸢和杜子娟,还有一位正在沉睡的中年男子。
「我才注意到你们睡着了,奇了怪了,刚刚我们不是还在讨论阿兹特克文明吗?」 陈鸢说到。
「不知道啊,诶?表舅?醒醒!」杜子娟推搡着中年男子,中年男子打了一声哈欠,伸了个懒腰,才从沉睡中醒来。
「是不是二氧化碳含量过高了啊,刚刚我和陈鸢还恍惚了一下,差点睡过去。」杜子娟起身前去开窗,窗外旖旎的阳光抚摸着葳蕤的树林,大地吐着热浪,碧空之上万里无云。
「话说刚刚丁教授不是被军方带走了吗?石月仙疑问道。
「你在胡说什么啊,是不是刚刚做梦了?」陈鸢摸了摸石月仙的头。「没发烧啊。」
正当石月仙迷茫之际,众人已经沉醉于阿兹特克文明的讨论之中了。
「他妈的,今天到底是怎么回事?是我记忆错乱了吗?还是我把梦境当成现实了?」石月仙心里想象着无限种可能性,但都没办法说服自己。
「这就是不存在的历史啊。」陌生而空灵的声音在石月仙脑海中响起。
「是谁?谁在跟我说话?」石月仙彷徨地问道。
众人的目光再次投向石月仙
「你没事吧?要不我给你冲一杯咖啡?」杜子娟关切道。
石月仙摆摆手:「我一个人静静就好,也许是我昨天晚上没睡好。」
「话说你表舅是历史教授,你怎么就是信息技术系的呢?」陈鸢调侃道。「你明明还是有点学历史的天赋的。」
「我看是抢饭挺有天赋的。」石月仙内心暗暗调侃道。
霎时间,又是陌生而空灵的声音在脑畔响起,但这一次,不只是石月仙。
「N29.35,E106.33。」
「是谁?谁在说话?」陈鸢叫到。
「你们也听到了?」丁教授惊魂未定。
「这是在说地理坐标吗?」杜子娟问道。
「不会有错,就是地理坐标,我估计应该是在西京附近。」石月仙肯定地说道。
「是谁在跟我们说话呢?以这么诡异的形式。」丁教授倒吸一口凉气。
沉默是今午的康桥。
「所以要怎么做到同时在四个人脑海里说话呢?」陈鸢揉搓着下巴颏。
「如果大脑是个终端,那就有可能。」杜子娟不假思索便答道。
「等等,陈学长,我是什么时候拜访你的来着?」石月仙问道。
「今天早上啊,你问我阿兹特克文明的事,我就带你来丁教授家讨论了。」陈鸢答道。
「现在去你家,我知道发生什么了。」石月仙不由分说拉着陈鸢的手就走。
「诶等等,还有你那个坐标的事呢!」杜子娟喊到。
「等会再说。」杜子娟耳畔是渐远的石月仙的喊声。
石月仙几乎是撞开了陈鸢家门,把陈鸢拉到客厅。
「你这么急干嘛?」陈鸢喘着粗气。
「今天你撕过日历吗?」石月仙问道。
「撕过了。」陈鸢摊开手。
「来,把你的日历拿出来。我记得你有把日历放在枕头底下的习惯。」石月仙推开陈鸢卧室的门。
陈鸢弯下腰去,翻开枕头,枕头底下是被压得褶皱了的纸质日历。
「今天是几号?」石月仙掏出核心终端,把全息影像几乎是贴在了陈鸢脸上。
「2116 年 6 月 18……等等,日历上显示的日期6月17日!这不可能!我清楚地记得我今天早上,正好在你来的前几分钟,把 17 日的日历撕掉了!
「这说明什么?说明今天早上你根本不在你家,甚至根本没有醒过来!」
「所以,你方才说的什么军方什么的,难道不是胡话?」
「这是我觉得最蹊跷的地方,你们的记忆都对的上,但唯独我的记忆与你们的有出入。我记得那天,6 月 17 日下午……」陈鸢简述了自己在拜访陈鸢后的所有记忆。
「这就是不存在的历史!你记得与我们有出入绝对不是巧合!可能是谁的特意安排。而且并不是你记忆错乱了,是我们失忆了!并且被覆写了新的不存在的记忆!」陈鸢惊叹道。
「对了,你还记得知识大革命吗?」
「不就是一些民众和官员为了彻底改变教育体系而发动的一场暴力运动吗?」陈鸢不假思索便说道。
石月仙在书架前来回踱步。在寻找遍书架和桌案后,他肯定的眼神闪着光,对陈鸢说:「书不见了,那本尘封着历史真相的书不见了。」
「你在说哪本书?」陈鸢走上前。
「果然,这么想就说得通了!」石月仙重重地拍了一下桌案。
]]>本小说任何情节均为虚构,与现实中任何国家、团体、组织与个人无关
不存在的历史,勾起了石月仙的注意,随着找寻真相的深入,一个隐瞒了全世界的阴谋浮出水面。而对于人类,阴谋何来,何从,何去?
「第三次科技革命后,人类进入信息时代,信息化开始影响人类的历史进程……」
「为什么初中高中上过的还要再上一遍啊?我都快烦死了。」石月仙在心中自言自语道,眼睛无神地看着教授在全息屏上指指点点。
「怎么就没有第四次科技革命呢?第一次工业革命与第二次工业革命之间几乎没有罅隙,第二次与第三次也只隔了几十年,第三次科技革命都过去快 100 年了,怎么第四次科技革命一点苗头的没有呢?」
下课铃响,教授一溜烟没影了,消失在学生们的视野中。学生们鱼贯而出,奔着食堂而去。留下石月仙一人在教室里沉思。
「前几年的反重力技术,为什么仅仅运用在交通上呢?而且没人知道这项技术的原理,反重力技术的出现会是第四次科技革命的源头吗?」
一阵如蟾蜍一般的叫声回响在空荡的教室中。石月仙起身走出教室,穿过鳞次栉比的教学楼,终于走到了饭堂前。只见同系的人垂头丧气地走出来。
「怎么了?饭被抢完了?」石月仙问道。
「那可不,我们历史系总是放得最晚的那一个,最后一批饭被信息技术系那一帮吃货抢完了。」一个同学说道。
「只好叫外卖了,虽然要等一会。」另一个同学掏出终端核心,终端核心将点餐界面投影在众人面前。
「AA 制吧,每个人付自己的。」石月仙提议道。众人附和。
等餐期间,石月仙抛出了脑中的疑问,霎时间众说纷纭。
「也许是人类的科学发展到头了?」
「或者是自然环境不足以支撑生产力发展,导致科技发展没有动力源推动吗?」
「哎呀,管它呢,科学家的事和我们历史系学生有什么关系?」
石月仙觉得这些说法都有道理,但又都不太合理。
「算了,还是问问陈鸢学长吧,他懂得多,找他问说不定会有答案。」
下午放学后,正值周末,石月仙得以回家拜访住在对门的陈鸢。
几阵敲门声后,门缓缓而开,陈鸢看见石月仙,连忙请进门。
「是什么风把你吹来了?这次又有什么问题问我?」陈鸢的眼睛炯炯有神,好像下一秒就能来往古今,穿梭时空。
石月仙再一次抛出了那一个问题。陈鸢的手揪着下巴,倒吸一口凉气。
顷刻,他终于开口:「说实话,我没头绪。」
「所以第四次科技革命到底是发生了,只是我们不知道,还是没发生呢?」石月仙疑惑地问道。
「要说发生了吧,近几年反重力技术在交通工具上的运用和全息投影技术在电子产品方面的运用说明科技进步了不少;但要说没发生吧,后者是对第三次科技革命产物的改进,没有革新性,前者又不知道为什么没有运用于生产,而且没有人知道其运行原理。」陈鸢边说,边回头翻找书架上的历史文献。
窗外下着倾盆大雨,梅雨时节的阴风时不时地溜进阴暗的房间,并调皮地光顾一圈,随性地翻了几页书,无趣地走了。扶摇直上,直奔远处庞大的由纺织混凝土构建而成的庞然巨物——那是漂浮在老城上的新城。石月仙拿起终端核心,手指一划,屋内顿时明堂起来。
「找到了,我爷爷当年拼老命才护存下来的历史书。」陈鸢轻柔地擦拭着泛黄的封皮,扫去积灰。
「拼老命护存下来的?」石月仙大感震惊,瞳孔放得如黑珍珠一般大。
「对,我爷爷说,这是历史所尘封的往事,一些人所不愿意看到的。当年知识大革命爆发的时候,几乎所有历史类书籍全部被联合政府焚毁了,他和丁教授守着居民楼,冒着生命危险,击退了前来焚书的民间组织,这才成功守护了我们家的藏书。」陈鸢抚摸着褶皱的纸页,眼睛里闪着晶莹的微光。
「我只听说过,知识大革命是一些民众和官员为了彻底改变教育体系而发动的一场暴力运动。最后搞得各国取消了统一升学考试,直接赋予各大学自治权。」石月仙眉头褶皱起来。
陈鸢扶着桌案,缓缓说道:「教育革命只是假象,实际上……」一阵急促的敲门声把使说话声戛然而止,如同一株苗被掐死在新泥之中。
陈鸢连忙起身,拉开门,只见一位少女,扶着墙壁,气喘吁吁,眼眸里闪着飘忽不定的光。
「是你?怎么这么急匆匆的?出了什么事吗?」陈鸢问道。
「是教授,丁教授他……被军队带走了!」少女娇柔的声音里镶嵌着恐惧。
「我现在就去看看。」陈鸢披上雨衣,就随少女冲出门去。石月仙也立刻拽起雨伞,带上门,朝着烟帷奔去。
「丁教授?(丁胜)我听说过,才到中年就退休的教授……可是这和军方有什么关系?」石月仙边狂奔,心里边嘀咕着。
穿过烟帷与街道,只见萧疏树木下,一辆军用飞车腾空而起,闪着红光,飞驰而去。
街道小巷里空无一人,往日车水马龙的景象在呼啸的阴风中如烟消云散一般消失,唯余渺小的三人在烟帷雨幕中无助地站立。
「怎么办?表舅就这样莫名其妙地被带走了。」少女欲哭无泪。
陈鸢拍拍她的肩,安慰道:「没事的,杜子娟,丁教授为人正直,又没干什么坏事……」
「可是军方把一个退休历史教授带走是何用意呢?」杜子娟颤颤巍巍。
出乎所有人的意料,骤然一声刺耳的,深入脑髓的声响回荡在三人脑中。石月仙捂着双耳,却也是徒劳,帷幕拉下,一片黑黢黢,紧接着便是身体不受控制,瘫倒在地。
不知过了多久,恍惚间,石月仙隐隐约约地听到某人的交谈声。
「将军,这些人怎么办?上面只要他一个。」
「这些人等会做记忆清除,然后放走。」
「我们先核验一下身份……等等,我们好像弄错人了!」
「将军,你确定我们弄错人了?要不要再找上面确认一下?」
「不用了,我敢肯定,一定是弄错了,你看……」
……
不知又过了多久,石月仙终于醒了过来,只见眼前是一台古老的机械钟,钟摆正吃力地摇摆着。再定睛一看,环顾四周,除了陈鸢和杜子娟,还有一位正在沉睡的中年男子。
「我才注意到你们睡着了,奇了怪了,刚刚我们不是还在讨论阿兹特克文明吗?」 陈鸢说到。
「不知道啊,诶?表舅?醒醒!」杜子娟推搡着中年男子,中年男子打了一声哈欠,伸了个懒腰,才从沉睡中醒来。
「是不是二氧化碳含量过高了啊,刚刚我和陈鸢还恍惚了一下,差点睡过去。」杜子娟起身前去开窗,窗外旖旎的阳光抚摸着葳蕤的树林,大地吐着热浪,碧空之上万里无云。
「话说刚刚丁教授不是被军方带走了吗?石月仙疑问道。
「你在胡说什么啊,是不是刚刚做梦了?」陈鸢摸了摸石月仙的头。「没发烧啊。」
正当石月仙迷茫之际,众人已经沉醉于阿兹特克文明的讨论之中了。
「他妈的,今天到底是怎么回事?是我记忆错乱了吗?还是我把梦境当成现实了?」石月仙心里想象着无限种可能性,但都没办法说服自己。
「这就是不存在的历史啊。」陌生而空灵的声音在石月仙脑海中响起。
「是谁?谁在跟我说话?」石月仙彷徨地问道。
众人的目光再次投向石月仙
「你没事吧?要不我给你冲一杯咖啡?」杜子娟关切道。
石月仙摆摆手:「我一个人静静就好,也许是我昨天晚上没睡好。」
「话说你表舅是历史教授,你怎么就是信息技术系的呢?」陈鸢调侃道。「你明明还是有点学历史的天赋的。」
「我看是抢饭挺有天赋的。」石月仙内心暗暗调侃道。
霎时间,又是陌生而空灵的声音在脑畔响起,但这一次,不只是石月仙。
「N29.35,E106.33。」
「是谁?谁在说话?」陈鸢叫到。
「你们也听到了?」丁教授惊魂未定。
「这是在说地理坐标吗?」杜子娟问道。
「不会有错,就是地理坐标,我估计应该是在西京附近。」石月仙肯定地说道。
「是谁在跟我们说话呢?以这么诡异的形式。」丁教授倒吸一口凉气。
沉默是今午的康桥。
「所以要怎么做到同时在四个人脑海里说话呢?」陈鸢揉搓着下巴颏。
「如果大脑是个终端,那就有可能。」杜子娟不假思索便答道。
「等等,陈学长,我是什么时候拜访你的来着?」石月仙问道。
「今天早上啊,你问我阿兹特克文明的事,我就带你来丁教授家讨论了。」陈鸢答道。
「现在去你家,我知道发生什么了。」石月仙不由分说拉着陈鸢的手就走。
「诶等等,还有你那个坐标的事呢!」杜子娟喊到。
「等会再说。」杜子娟耳畔是渐远的石月仙的喊声。
石月仙几乎是撞开了陈鸢家门,把陈鸢拉到客厅。
「你这么急干嘛?」陈鸢喘着粗气。
「今天你撕过日历吗?」石月仙问道。
「撕过了。」陈鸢摊开手。
「来,把你的日历拿出来。我记得你有把日历放在枕头底下的习惯。」石月仙推开陈鸢卧室的门。
陈鸢弯下腰去,翻开枕头,枕头底下是被压得褶皱了的纸质日历。
「今天是几号?」石月仙掏出核心终端,把全息影像几乎是贴在了陈鸢脸上。
「2116 年 6 月 18……等等,日历上显示的日期6月17日!这不可能!我清楚地记得我今天早上,正好在你来的前几分钟,把 17 日的日历撕掉了!
「这说明什么?说明今天早上你根本不在你家,甚至根本没有醒过来!」
「所以,你方才说的什么军方什么的,难道不是胡话?」
「这是我觉得最蹊跷的地方,你们的记忆都对的上,但唯独我的记忆与你们的有出入。我记得那天,6 月 17 日下午……」陈鸢简述了自己在拜访陈鸢后的所有记忆。
「这就是不存在的历史!你记得与我们有出入绝对不是巧合!可能是谁的特意安排。而且并不是你记忆错乱了,是我们失忆了!并且被覆写了新的不存在的记忆!」陈鸢惊叹道。
「对了,你还记得知识大革命吗?」
「不就是一些民众和官员为了彻底改变教育体系而发动的一场暴力运动吗?」陈鸢不假思索便说道。
石月仙在书架前来回踱步。在寻找遍书架和桌案后,他肯定的眼神闪着光,对陈鸢说:「书不见了,那本尘封着历史真相的书不见了。」
「你在说哪本书?」陈鸢走上前。
「果然,这么想就说得通了!」石月仙重重地拍了一下桌案。
]]>来自知乎回答不被爱是一种什么样的感受? - 知乎
如图所示,在页面源码中出现了大量乱码,例如(原字,错字):[2]
这些乱码使得文章可读性大大下降,那么乱码是怎么产生的?又如何解决这个问题呢?
观察上述现象,页面源码中的字,在被显示到页面后,居然变成了正确的字。因此我们初步推断知乎在该页面运用了字体反爬。
接下来我们打开 F12 -> Network 页面,选择 Font,观察知乎加载的字体。
右键选择 Open in new tab 将字体保存下来。
将字体后缀名改为 .ttf [3] 并打开。
与正常字体对比,我们下载的字体明显替换了部分字体,这便是知乎用于反爬的字体了。接下来我们将分析这个字体并给出应对方案。
字体反爬的根本原理是替换原本的字为一个新字,再用字体将新字渲染为原字,这样对程序而言就只见到新字而不是旧字了,而用户看到的还是原本的内容。因此只要找到新字与原字间的对应关系便可解决该反爬。而要找到这个对应关系,抓住字体中各个字形的特征是必不可少的一环。
我们打开 FontDrop! 加载字体,向下翻,观察字形的特征。
我们发现字形的 Glyph 为 uni662F 而 Unicode 为 65F6,接下来我们试着查询这两个十六进制数对应的字:
1 |
|
正好,上文提到,「是」在源码中被替换为了「时」。知乎在反爬字体中保留了原字与新字的对应关系,为我们提供了一个极为便捷的捷径。我们可以直接读取这个对应关系,而不是比对每个字的笔画[4]。然而,这也是其字体反爬系统的致命缺陷,各位在自己的网站运用字体反爬时也要注意这一点。
至此,字形的特征与对应关系都被我们分析出了,接下来我们将编写程序从字体中提取对应关系。
要提取各个字间的对应关系,首先我们需要安装 fontTools [5]。
1 |
|
用 ttLib.TTFont(filename)
打开字体:
1 |
|
初始化一个存储对应关系的字典:
1 |
|
遍历字形,获得其 Glyph 与 Unicode,并写入字典(注意这里的Glyph对应的字可能不是标准的字,比如是康熙部首[6],因此我们要对其标准化[7]):
1 |
|
(这里的 cmap 是一个 dict,是字形的 {Unicode: Glyph}[8])
接下来,我们将使用得到的对应关系将带乱码的文章转为正常文章。
这段代码很简单,不作解释。
1 |
|
1 |
|
温馨提示:上面字体文件名记得换成你自己下载的字体文件名
在本文的带领下,我们粗略地了解了知乎所使用的反爬技术,分析了其使用的反爬字体,找出了原字与新字的对应关系,最终将带乱码的文章转为了正常文章。其中,知乎使用的反爬字体没有去掉 Unicode 与 Glyph 的对应关系,虽然这使我们更轻松地得到了对应关系,但是对于知乎而言,这种错误无疑是致命的,因此,在字体反爬的实际运用中,我们更需要避免这种错误。[9]
知乎也在该反爬系统部署到回答页不久以后升级了其专栏反爬系统,本文所介绍的致命缺陷已被修复[10],而解码新反爬系统的内容,就留到本系列的下篇吧。
(敬请期待)
data:font/ttf;...
代表该字体是 ttf 格式的。 ↩来自知乎回答不被爱是一种什么样的感受? - 知乎
如图所示,在页面源码中出现了大量乱码,例如(原字,错字):[2]
这些乱码使得文章可读性大大下降,那么乱码是怎么产生的?又如何解决这个问题呢?
观察上述现象,页面源码中的字,在被显示到页面后,居然变成了正确的字。因此我们初步推断知乎在该页面运用了字体反爬。
接下来我们打开 F12 -> Network 页面,选择 Font,观察知乎加载的字体。
右键选择 Open in new tab 将字体保存下来。
将字体后缀名改为 .ttf [3] 并打开。
与正常字体对比,我们下载的字体明显替换了部分字体,这便是知乎用于反爬的字体了。接下来我们将分析这个字体并给出应对方案。
字体反爬的根本原理是替换原本的字为一个新字,再用字体将新字渲染为原字,这样对程序而言就只见到新字而不是旧字了,而用户看到的还是原本的内容。因此只要找到新字与原字间的对应关系便可解决该反爬。而要找到这个对应关系,抓住字体中各个字形的特征是必不可少的一环。
我们打开 FontDrop! 加载字体,向下翻,观察字形的特征。
我们发现字形的 Glyph 为 uni662F 而 Unicode 为 65F6,接下来我们试着查询这两个十六进制数对应的字:
1 |
|
正好,上文提到,「是」在源码中被替换为了「时」。知乎在反爬字体中保留了原字与新字的对应关系,为我们提供了一个极为便捷的捷径。我们可以直接读取这个对应关系,而不是比对每个字的笔画[4]。然而,这也是其字体反爬系统的致命缺陷,各位在自己的网站运用字体反爬时也要注意这一点。
至此,字形的特征与对应关系都被我们分析出了,接下来我们将编写程序从字体中提取对应关系。
要提取各个字间的对应关系,首先我们需要安装 fontTools [5]。
1 |
|
用 ttLib.TTFont(filename)
打开字体:
1 |
|
初始化一个存储对应关系的字典:
1 |
|
遍历字形,获得其 Glyph 与 Unicode,并写入字典(注意这里的Glyph对应的字可能不是标准的字,比如是康熙部首[6],因此我们要对其标准化[7]):
1 |
|
(这里的 cmap 是一个 dict,是字形的 {Unicode: Glyph}[8])
接下来,我们将使用得到的对应关系将带乱码的文章转为正常文章。
这段代码很简单,不作解释。
1 |
|
1 |
|
温馨提示:上面字体文件名记得换成你自己下载的字体文件名
在本文的带领下,我们粗略地了解了知乎所使用的反爬技术,分析了其使用的反爬字体,找出了原字与新字的对应关系,最终将带乱码的文章转为了正常文章。其中,知乎使用的反爬字体没有去掉 Unicode 与 Glyph 的对应关系,虽然这使我们更轻松地得到了对应关系,但是对于知乎而言,这种错误无疑是致命的,因此,在字体反爬的实际运用中,我们更需要避免这种错误。[9]
知乎也在该反爬系统部署到回答页不久以后升级了其专栏反爬系统,本文所介绍的致命缺陷已被修复[10],而解码新反爬系统的内容,就留到本系列的下篇吧。
(敬请期待)
data:font/ttf;...
代表该字体是 ttf 格式的。 ↩