Day 7032 洒水扬尘,抑或是喃喃自语

长久以来第一次正经写博文。

也不知道是否还会有访客意识到本博客的界面发生了变动,我想是没有的,毕竟除了基本上与原来没什么变化之外,还因为更新频次已经低于一年 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 多年前某个小站的首页诗句做结尾吧。

我知道每个人都要走
我知道每个人都有自己走的理由
我知道走的人还会回来
我知道他们还是会走
我知道曾经有人陪我一起走
我知道这些人都不见了
我知道我以后还会与他们相遇
我知道,哪怕是擦肩而过的故事

注:所有评论将在审核通过后显示,请不要在评论内容的任何位置出现链接,否则您的评论将被自动移入回收站,且永远不会被复审。

All comments will be available after being manually reviewed, please do not include any links anywhere in your comment, otherwise your comment will be automatically deleted and are not eligible for review.

5 条评论

  1. 弱密码不换你是真的头铁。
    我现在是先在本地用Markdown写好,然后本地转换成HTML再贴到WordPress上。HTML还是最可靠的。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注