长久以来第一次正经写博文。
也不知道是否还会有访客意识到本博客的界面发生了变动,我想是没有的,毕竟除了基本上与原来没什么变化之外,还因为更新频次已经低于一年 10 篇文章,所以不指望会有多少访客,也就不指望会有人记得之前这里长什么样子。但不论如何,这个 WordPress 是从头重新安装的(当然数据还是恢复了的),甚至整台 VPS 都是格掉重来的。
新系统装完,不发点东西表示一下好像有点不好,于是以下是一大堆零零碎碎,权当我在记流水账。
一、VPS 重装的缘起
重装整个 VPS 的起因,是 2024 年三到四季度期间本站发生了一件奇怪的现象:当一个 IP 地址当天第一次通过浏览器访问时,会被劫持跳转到某广告页面,并且仅限于单一 IP+真实浏览器访问+当天第一次这三个条件凑齐时才会出现此种情况,不论你是同一个 IP 访问第二次,还是用 curl 配合浏览器 UA 进行尝试均不可复现。
起初拿这事儿没当回事,以为又是国内运营商劫持搞的鬼,虽然感觉在 HTTPS 已经成为标配的今天已经不太可能再发生类似的事情了,但由于想要兼容一些本站采用 HTTPS 之前被转载的链接,所以在 nginx 中配置了 HTTP 301 规则,故而还是有机会,而且访问量如此之低,修不修都两可。直到有次想与某位群友交换友链,对方发现会跳广告页面后表示拒绝,才下定决心将这件事情查个清楚。
在群友们的指点下,首先摸清了跳转是在访问 /blog/ 时直接被 302 引导至广告页面的,既不是被注入了 JS 也不是页面 HTML 被整体替换,基于此,开始检查全站中有没有 header(‘Location:…’); 或 curl_init() 相关的代码,以排除在 PHP 运行时阶段注入 Header,或通过下载远程代码并执行的方式进行跳转。进一步检查没有找到相应的内容,不过可以发现当广告生效时,响应头中会出现一条 X-Redirected-By: WordPress,而这个 header 是由 WordPress 的一个公用方法 wp_redirect() 生成的,于是尝试在几个入口页面中查找,无果,但也进一步坐实了跳转的代码不在本地。
多方查找无果后,干脆直接跑到 wp_redirect() 方法的开头下 var_dump(debug_backtrace()) 并最终发现调用方是一个 WordPress 插件,而这个插件具备两种特征:一是该插件在 WordPress 后台的插件-已安装插件中不显示,二是它会调用 WordPress 的内置方法来 eval() 注入的代码。既然找不到它生效的地方,干脆直接跑到 wp-content/plugins/ 下将其删除,结果药到病除,效果拔群。
本以为事情到此结束,结果还没高兴一天,第二天广告跳转就又恢复了,不论是将相应的插件进行再次删除,还是将插件目录设为只读,均会在短时间内失效,而最终生效的彻底解决方法,竟然是将我那连 Chrome 都提醒我已经泄露的管理员密码更换一个。
事后总结,一是虽然大概率只是我的弱密码被猜到了而变成了别人的跳板,但考虑到跳转内容是广告,也可能是我评论区严格的过滤规则——不允许出现任何连接——将对方惹恼了,才有了后面的事情;二是考虑到这个密码已经成为弱密码,还不知道主机中是不是被种了别的什么东西,以防万一才有了后面重装整台 VPS 的事情。
二、尝试更换 Blog 平台
有了这次被打穿的经历,便思考着不妨借着这次的契机,将又大又重的 WordPress 更换为其他更加轻量化的系统或框架。
之前曾经想更换为 Hexo 未果,原因已经遗忘,大抵是咕吧。这次尝试更换为 Typecho,尽管似乎有一键导入的方案,但本着已经一年多没写过博客、想重新看一看自己曾经中二时的心路历程的想法,选择了手工一篇一篇文章进行迁移,这期间的一些思绪后述。
然而迁移的道路是短暂的,在迁移了大约五分之一的文章后,我终于被 Typecho 原生只支持 Markdown、不必说嵌入 iframe 这种略微高级一点的用法,甚至连改个文字颜色、文本居中都要配合修改 CSS 或安装插件来进行,这对我的博文中的部分内容是致命的。例如,在 13 年前(怎么都过去这么久了!)的那篇讲述饭否网历史的博文中,配图接近百张,且由于其宽度不一,较为适合居中排布,这在 Typecho 中竟成为一件难事;又比如「筱林乐音」分类下的内容会同时涉及到文本居中、字体变换、字体颜色修改、iframe 嵌入这四类要求,Typecho 实在难以应对。
于是乎,便有了重生之还是 WordPress 这么个现实情况。
三、2024 年,以及其他
整个 2024 年,我同时被某内部平台的建设和某项目作为“技术人员”参与的事情裹挟,亲身感受了连续一个月无休加班、忙到凌晨等等过去不曾有过的体验。
出于生活与工作隔离的想法,这里不会提及细节,但好歹全年所做的工作还是自己工作多年来熟悉的 IT 相关领域,累是真的累,不过也还算掌控之中。
但没曾想到,2025 年直接来了一个开幕雷击:大领导高升,公司被合并,因各种原因被调到行政岗,并从事 100% 生疏且不适应的工作,上一次体会到心塞得睡不着觉还是另一个不太好意思提及的事情,甚至需要用药物来缓解症状才能正常入眠或起床。好在经过与领导面谈,后面正式合并时应该会回到 IT 相关岗位,并且已经在截至目前的上半年通过一件小事证明了自己的价值,但在此之前仍然要忍受行政工作带来的不适感。
翻了翻 2024 年散落在各处的记录,基本上除了各种琐碎的记忆之外,也就剩下组装了一台属于自己的 AI 体验机这件事值得一记。
2023 年时的 AI 服务尚处于起步阶段,远没有现在广泛易用。为了能早一步体会当时还大热的 LLM 的威力,经过近三个月的四处攒集,终于于当年 2 月拼起了自己的第一台也是唯一一台 AI 体验机——或者说,应该叫寨板+矿机机箱,这也是我第一次接触能一次性上 9 张 PCI-E 设备的怪物主板,其基本配置如下:
GPU:P102-10G×9(实际用到 8 张,图中最左侧的 iChill 是拍摄时放进去亮机用的 2080S)
亮机卡:七彩虹 GT1030(装机时使用,必须有 UEFI BIOS,只有 Legacy ROM 的古董卡不识别)
主板:定制款 X79 工控主板(共 9 个 PCI-E 插槽)
CPU:E5-2660v2×2
内存:三星 DDR3-1660 REG ECC 32G(该主板只有一根内存插槽)
存储:致钛 SC001(SATA)+梵想 S301 PRO(mSATA)
电源:链力 4U 2000W AT 规格矿电(对应该主板上非常特殊的、只有 11 个 6pin 而无 24pin 的接法,做法为先接 5 个 6 pin,再将剩下的所有 PCI-E 供电接到 8 张 P102 上即可)
上述配件合计花了大约 5000 元,在接下来的一年里尝试各种本地模型方面立下了汗马功劳。
除了上面这件事之外,毕竟我也不是什么有上进心的人,完成日常工作基本上已是极限,让我去相亲之类的我也跟别人聊不到一起去,所以没什么好说的。
四、洒水扬尘,抑或是喃喃自语
或许以后我会把这里捡起来,偶尔更新一下内容,让这里不至于积灰吧?
又或者是慢慢将以前的内容用新插件优化起来(比如将有代码的内容用新装的某语法高亮插件 Prettify 一下——缺点是不支持经典编辑器,但似乎已经很难再找到支持经典编辑器的新插件了),让这里看上去不再是一成不变的旧样式了呢?
我不知道。
说到旧样式,想起了一个 1999 年至今都存在于中文互联网上的非商业个人网站,即便内容不再更新,仍因其不可替代的地位,吸引着很多已经迈入中年的人去缅怀自己的青春。
性格使然,年龄越大越少言寡语,被领导批评“你人生得有个目标”我也无言以对。
摘一则 20 多年前某个小站的首页诗句做结尾吧。
我知道每个人都要走
我知道每个人都有自己走的理由
我知道走的人还会回来
我知道他们还是会走
我知道曾经有人陪我一起走
我知道这些人都不见了
我知道我以后还会与他们相遇
我知道,哪怕是擦肩而过的故事