过去的七个月里,我都在忙什么
上一次写这种总结文章已经是七个月前的事了。那篇《我的个人博客历程》详细记录了我从 WordPress 迁移到 Astro + Fuwari 的过程。如今博客已稳定运行超过半年,这段时间我持续对它进行深度打磨。今天借这篇文章,和大家聊聊这几个月的经历。
Fuwari 完善
最初受二叉树树大佬影响,我选择了 Astro + Fuwari 作为新博客的底层。但我没有直接使用社区任何现成的 fork 版本,而是从官方 Fuwari 仓库重新克隆一份,从头开始按照它的架构思路进行改造。
这么做的核心原因只有两个字:理解。直接套用别人的完整修改版虽然快,但你很难真正搞懂每一处改动的来龙去脉,也不知道哪些功能对你真正有用。别人的代码再优秀,也可能包含对你而言的冗余甚至冲突逻辑。而从零开始虽然前期投入大,但能让你彻底吃透整个系统,后续维护、加功能、修 bug 时才能游刃有余。
基于这个思路,这七个月我陆续实现了:
- 说说页面
- 友链页面
- 赞助页面
- 关于页面
- Umami 访问统计卡片
- Uptime Kuma 监控卡片
- 全新设计的页脚
- 赞助卡片
此外还完成了对本站适配于 EdgeOne Pages 的服务器端渲染(SSR)的改造,调整完善了网站的动画与部分UI。
期间参考了 Mizuki、Firefly 等优秀 Astro 主题的实现思路,非常大家推荐使用。
在探索魔改 Fuwari 期间产出了几篇教程:
其中访问统计卡片一篇最受欢迎。将 Umami 访问数据以卡片形式呈现在侧边栏,虽然没有做到像二叉树树那样精确到单篇文章的 PV/UV,但对我来说效果已经完全够用。
图床问题
在持续魔改 Fuwari 的过程中,一个很早就埋下的雷终于爆炸了。
早期用 WordPress + InfinityFree 免费主机时,我注册了 rf.gd 的一个子域名。后来迁移到静态站点 + Netlify,很多老文章的图片链接仍然指向旧 WordPress 地址。一开始没太在意,直到某天 InfinityFree 因为长期无访问删除了我的旧站点……于是博客里的图片资源开始频繁 404。
那时我才真正意识到问题的严重性——虽然早在迁移文章里就说过要自建图床,但改链接 + 迁移图片实在太麻烦,就一直拖着。结果老图片完全没有备份,全部丢失。
绝望之际,我想到了去年10月加入的 BlogsClub(博客俱乐部)。它有一个“档案馆”功能,会为成员博客做文章和主页的定期截图存档。我像抓住救命稻草一样翻看了存档,成功通过截图找回大部分丢失图片。虽然画质不高,但至少保住了内容的完整性。在此特别感谢 BlogsClub 的用心维护。

找回图片后,新问题来了:放哪里?
- 自建兰空图床 → 服务器成本高 + 容易被刷流量,怕哪天续不起费就全挂
- 第三方免费图床 → 要么迟早跑路,要么删图
- 直接塞进博客仓库 → 仓库体积爆炸,不好管理
最后我选择直接单独把所有图片扔到一个仓库里统一管理,然后把这个图片仓库传到 EdgeOne Pages 上构建。
于是就有了这个项目:用 EdgeOne Pages 搭建随机图床。它最初就是为博客服务的,后来加了瀑布流图库 + 随机图片功能,并以 EdgeOne-Random-Picture 之名开源到 GitHub(目前 5 star 9 fork)。
现在博客所有图片都走 https://image.tianhw.top/ 域名(例如我的头像 https://image.tianhw.top/avatar.webp ),就算 EdgeOne Pages 哪天不可用,我也能无缝切换到 Vercel / Cloudflare Pages / ESA 等平台,只要更换域名的DNS记录到新的站点,甚至老文章里的图片链接都不用改。这个方案成本几乎为 0,且相当稳定。
域名与备案
随着博客逐步完善,我决定淘汰老域名 thw.lol,正式启用 tianhw.top(在 Namesilo 注册)。
之后因为想使用一些国内云服务(例如阿里云 ESA、轻量应用服务器等),几乎无一例外都需要 ICP 备案。没有 ICP 备案整天和这些厂商斗智斗勇太耗精力。
综合考虑下,我将域名转移到了阿里云并在 2026 年 1 月 3 日在阿里云提交了 ICP 备案申请,11 天后获得备案号 鲁ICP备2026002442号-1;寒假期间进行了公安联网备案,2026 年 2 月 26 日通过,备案号 鲁公网安备37030302001162号。这些信息你可以在页脚卡片中看到,此后也是实名上网了😭。

备案过程虽然繁琐,但完成后博客迁移到国内版 EdgeOne Pages,网站的加载速度和访问体验提升非常明显。以后在国内使用起来会方便很多。
攻击与安全
虽然站点是纯静态,但刷流量依然很烦人。
第一次:当时我一个部署在 Cloudflare Pages 的站点被来自美国的 IP 刷流量,整个静态站点文件加起来才几 MB,却产生了高达 196GB 的流量,不过这点流量对应 Cloudflare 来说只能算是洒洒水,要不是我主动打开控制台查看访问流量我都没发现。

第二次:我在文章《利用 IPFS 构建免费图床》里分享了一个通过 EdgeOne 反代的 IPFS 图床方案。并搭建了一个免费图床网站,得到了很多其他的博客站点的使用,但这却却导致了我连带遭到攻击。
从 EdgeOne 日志看,不是我的站点被针对,而是一个使用了我图床的博客被攻击,一张几百kb的图片却导致了我的流量暴涨上百 GB,而且访问ip居然全是来自国内。
从二叉树树的经历来看,就算 EdgeOne 宣传无限流量,被刷太多也可能被停用。我尝试联系了这个博客站长未果,最终只能屏蔽了被攻击的图片资源,最后以 ipfs.crossbell.io 接口直接卒了告终。
最近一次:我目前的博客图床再次被攻击,目标直指这个页面《Bilibili 美化扩展 — BewlyCat》,这篇文章里的所有图片流量出现了明显异常。这次我保留了较为完整的数据,攻击 IP 如下:
- 43.133.58.242
- 43.134.183.214
- 150.109.25.183
- 43.156.240.167
- 43.156.6.122
- 119.28.101.45
- 150.109.12.53
- 119.28.101.51
- 129.226.197.201
- 129.226.197.194

通过微步在线X情报社区查询,这些 IP 均为腾讯云的恶意傀儡机,有 Webshell 扫描、Nmap 端口扫描、爆破 Tomcat/WebSphere/OA、SSRF 探测等攻击行为记录。
分析
这几次很有可能都是PCDN刷下行流量,因为PCDN要为平台充当CDN分流,那么它的上传流量与下载流量的比例就会明显异常,而刷流量的目的就是平衡上传下载比,规避运营商的封禁。
至于为什么喜欢挑静态站刷流量,因为动态站点往往一打就死,很多站点可能只会用个2h2g的服务器,流量往往也很少,稍微一打就挂了。而静态站点承受更大的流量攻击,低速访问也不会触发防护策略,因此在某种意义上,静态站点反而更容易被攻击。
但这只能解释国内的情况,至于为什么海外ip也要刷流量我就百思不得其解了🤔
访问数据
流量来源:必应占 85%,其次是阿里云开发者社区和 GitHub。
浏览器分布:Chrome 50%,Edge (Chromium) 37%。
结束
非常感谢每一位访客的支持!