
黑喽,我是阿小信,一个不上班、靠自己做点互联网产品谋生的独立开发者(关于我是为什么选择不上班的,可以阅读 这篇文章 )。
又是好久没写周记了。
上次的 周记 还在感叹今年大概要入不敷出了。转眼又过去了大半个月,收入没见有什么起色,活倒是干了不少。
不过提起上一次周记,少记了2件值得记录的事情:
- 手机丢了,但是失而复得,感觉生活还是很美好的。
- 和大学室友胡少在深圳见面了,嘿嘿,开心,感觉还是很亲切的,一晃也好多年没见过面了。
最近这段时间基本都在跟服务器、数据库、垃圾流量较劲。每天都有新问题,每天都在解决问题,解决完一个又冒出来两个。
这半个多月其实干了不少活,而且很多工作并不是原本计划要做的,而是一个问题引出另一个问题,不断修复、重构、优化,最后把自己卷进了更大的工程里。
有时候感觉自己技术越来越牛逼了,有时候又觉得自己像个蠢逼。
忙了这么久,回头想想,好像也没干几件能直接赚钱的事。
如果要给这段时间定一个主题,我觉得是:
一个没钱升级服务器的独立开发者,在 AI、垃圾流量、数据库性能和收入压力之间,努力把自己的小系统改造成更能扛事的系统。
以下是 2026 年第 42 周 - 44 周(10 月 12 日至 30 日)的周记。
这段时间主要在忙什么?
主要工作:
- 反爬虫、垃圾流量治理(持续时间最长,反复迭代)
- 网站多语言系统、全文检索重构(技术改造最深入)
- 服务器性能与成本优化(内存、日志、缓存和架构)
- AI 编程、新产品界面设计(高频使用 DeepSeek)
- 内容创作、广告收入(文章发布、变现和流量观察)
- 骑行、健康、日常生活(骑行、体检、生活记录)
反爬虫和垃圾流量治理:从依赖 Cloudflare 到自己实现安全防护
10 月 14 日—29 日,贯穿整个阶段
反爬虫和垃圾流量基本是这半年多以来最持续、最让人头疼的一件事。
今年 5 月,来了一次流量爆发,那时候收入确实迎来了一波增长。但也就从那以后,开始出现了大量垃圾流量,并且屡禁不绝,并且越来越凶猛。
以前看到网站流量上涨,多少还会有点开心。现在一睁眼看到浏览量暴涨,第一反应就是:完了,又有人来搞我了。
搜索引擎的爬虫就不管了,其中很多是 AI 爬虫(包括抓取数据去训练的、回答用户时实时搜索的)和一些伪装成正常人的爬虫,后者是最恶心的。
他们都不是固定的IP,是一大片全球各地区的IP,每个IP每次就请求一两次,但量非常的大。这些爬虫不像是那种来偷你网站数据的,即使是来偷数据的,其实我也无所谓的,只要你不要影响我的服务器稳定,都随意。
其实我本身并不是非要屏蔽爬虫,但这些大量的爬虫流量把服务器资源吃了,正常用户(虽然没几个)访问对应服务器上的网站就会卡,甚至无法访问浏览。那我的广告就无法展示,我就会失去收入。
更大的担忧(没有实质证据)是,每一次爬虫访问都会触发网页的广告请求,如果广告平台认为这是我在恶意刷展示量,就会封号或者降低我的广告单价。
从去年11月开始,广告单价就在一直下跌,到目前已经惨不忍睹了。现在没办法确定是被认定成低价值流量而降低了广告单价,还是由于请求次数剧增导致分母变大。
在5月份我就开始基于Cloudflare(免费版)的WAF安全规则进行防护,并通过分析日志行为来自动屏蔽可疑IP。陆续也是搞了接近快一个月。
同时也带来了很多问题。
比如免费版 Cloudflare 的 WAF 规则是有数量限制的,最多配置5条,每一条还有字符串长度限制。可疑的IP可以保存在它的列表里面进行访问前质询,但免费版只有一个列表可用,最多放1万条记录。刚开始还好,但很快IP就查出容量限制,为了保护系统,只能把识别的可疑的IP直接完全禁止访问,这样导致各个网站都流量大跌,很多真实用户也被屏蔽了。
还有更可气的是,Cloudflare 上有专门针对 AI 爬虫的一键屏蔽,我也用了,效果也有,但不想它默认把搜索引擎也屏蔽了,导致各个网站的收录也在跌跌不休。直到近期我才发现并修复这个问题,平白损失了很多SEO流量和排名。从我的日志分析结果来看,免费版 Cloudflare 对 AI 爬虫的屏蔽管理不够精细,很多爬虫要么被误杀、要么被漏杀,总之慎用。
另外就是还有一些明明是配置了 Cloudflare 质询规则,却仍然有大量异常请求穿透到源站,对于这种能破解 CF 的爬虫根本防不住。
还有日志里的那些难以区分是真人还是爬虫的流量,对于行为异常的请求 Cloudflare 也没法识别。
以上的种种我都忍了,想着你们把数据爬完就该消停该走了吧。
但直到 10 月 24 日,一觉醒来发现服务器被打挂了。25 日有一个网站的最高同时在线人数竟然高达 1.2 万。要是真有这么多人来访问我的网站,那我做梦都能笑醒。问题是,这些流量大部分都不是什么正常用户。
这一切我终于是不能忍了。为了满足自己的特定需求,我决定开始造自己的 Cloudflare。
采取的解决办法:
第一阶段:自定义质询
废弃了原来的依赖Cloudflare的日志分析自动屏蔽工具。采用新的服务器离线脚本分析日志识别异常IP,Web服务端通过中间件的形式识别异常行为,要求可疑 IP 完成验证挑战才能正常访问网站。第二阶段:分层拦截
Cloudflare WAF规则是第一层独立逻辑的拦截。
第二层是离线脚本分析的确定性恶意 IP,直接在 Nginx/Caddy 反向代理层禁止访问。
不确定的可疑IP进入业务层质询。第三阶段:本地规则引擎
把 Cloudflare 的部分安全规则能力迁移到本地,不再受免费版规则语法限制。
现在本地服务器同时支持IP列表和表达式的质询拦截,不限量,随便配。第四阶段:持续完善
自己实现质询挑战总会遇到很多问题。比如出现无限重定向BUG、绕过验证的防护、精准识别异常IP等。
取得的效果: 流量曲线在逐步恢复正常,业务数据验证也确实比单纯用 Cloudflare 抵挡住了很多异常访问。
另外,最近AdSense小号很确定的被人恶意搞了一次,又出现了无效流量限制,但在两天后就自动解除了限制恢复正常,另一次可能就是爬虫垃圾流量导致的,于是在对应网站的web服务上也加了新实现的质询系统中间件,最终 9 天后解除了限制,但无法确认是否由新质询系统促成。
还做了一个比较有意思的实验:在质询页面放了一些其他广告平台的“流氓”广告,试图让垃圾流量产生一点收入。但收入却微乎其微,上线至今半个月,累计展示12.5万次,收入仅有 10.99 美元,垃圾流量果然是垃圾。
顺便屎上雕花,为各个网站都做了个精美的 403 页面。不得不提一下,现在 DeepSeek 写前端页面的样式效果和审美都已经非常在线了。
这里最大的收获是:安全防护不是配置几个规则就结束了,而是需要持续观察、识别、拦截、验证的系统工程。验证不仅要验证不该访问的被拦住了,更要验证该访问的不要被拦截的,这里反复踩了两次坑。
最大的痛点是:现在各个网站实现和部署的架构都不同,而且国内服务器和国外服务器用的反向代理也不同,无论是中间件还是离线脚本,每一个小功能更新都要维护多个不同版本。
多语言系统重构:从内容自动翻译到百万级全文检索
10 月 15 日—21 日
这部分是这段时间技术含量最高、重构幅度最大的一项工作。
之前一段时间已经完成了将部分网站中的使用 Gettext PO 文件的多语言实现方式改造成了 MySQL 数据库管理+自实现的内存维护,有效的将内存使用量减少了1GB。
但依然还有一些工作没有收尾,于是完成了收尾工作。
实现了多语言内容自动同步更新的机制:
- 数据库业务对象新增/变更后,自动完成数据库中多语言的翻译,并更新对应服务中的多语言译文。
- 支持本地终端和 GitHub Action 远程 CLI 执行自动翻译任务并通知服务同步更新。
- 处理旧译文清理、业务对象关联、缓存清理等复杂逻辑。
- 接下来就开始计划实现多语言全文检索。
真正的困难出现在全文检索。
MySQL 全文检索的性能困境,理想总是败给现实
- 197 万 最大单表行数
- 257 万 唯一 Token 数
- 2 核 / 8GB 服务器配置
- 40–45 秒 优化前部分查询耗时
不禁感叹一下,我现在已经是百万级数据量了。最初以为是服务器配置不够,全文索引在这台机器上,低频词一次查询也要 40 秒+。
尝试过分析 InnoDB 全文索引缓存、CPU、内存和磁盘 IO,还调整过 MySQL 参数,但查询性能依然无法满足业务需求。
做了详细排查,每次查询都要从磁盘/换页读。IO 最高才 7.7% 不饱和,但内存 90% 导致 InnoDB 频繁做 page eviction,CPU 低频词只用了 70%——说明 CPU 也是在等内存 IO。但 8G 是我能承受的上限了,不可能再升级配置。
一波三折。各种验证,最终采用了 按语言分表 的方案,每个表的行数降下来,就快了。
- 单表数据量 降至约 1/17
- 数据返回速度 提升约 100 倍
不仅如此,拉丁文和 CJK 语言还能分别采用不同的分词器,进一步减少索引体积。
代价是刚上线还没热乎的代码又要重构,涉及通用检索层、业务适配、业务对象排序逻辑调整、多语言的 Fallback 兜底,而且不止一个项目。
那天又搞到了凌晨,,但看到全文检索在这台服务器上终于丝滑地跑起来,心里还是很满足的!!!可能这就是程序员的快乐吧。
这件事带来的经验:
以前从来没有 MySQL 在生产级别做过全文检索,都是直接 Sphinx / Elasticsearch。
但如今自己的小作坊,自己部署个 MySQL 就很吃资源了,都是能用的组件都尽量复用,性能都是其次的。
虽然都说 MySQL 全文检索垃圾,但之前自己小打小闹也感觉凑合能用,但真正到了百万级数据量,才发现功能支持和生产可用还是两回事。
服务器性能优化:没钱加配置,只能不断优化代码
10 月 19 日—28 日
服务器资源不足,几乎贯穿了前面所有问题。这段时间一直在想办法降低服务器的资源消耗。
之前已经将项目内存占用从约 6GB 持续优化到 4GB 以内,一度觉得可以把服务器从 8GB 降到 4GB,节约开支。
但 10 月 25 日晚上又出现意外:服务器宕机约 80 分钟。
一开始还以为是垃圾流量突破了防护,后来排查才发现,垃圾流量基本挡住了,真正把服务器搞崩的,居然是我自己写的离线日志分析脚本。
因为天量的请求,日志文件单日最小都要近700MB,分析程序处理这些日志的时候把资源耗光了。
于是又开始优化日志分析:
- 全量读取日志的处理改为流式处理,避免一次性加载大量数据。
- 将按天滚动的日志文件改为按大小滚动,每次执行日志分析时先滚动一次确保日志别太大。
- 重写 IP 分析脚本,降低复杂度,提高自动化程度。
- 对 Python
str.startswith()的不同调用方式进行性能测试,发现传入 tuple 的方式表现更好。 - 优化后,原来40秒完成的任务现在秒速完成。
甚至开始考虑更原始的架构方向:尽量把数据库查询后展示的内容预生成静态 HTML,通过 CDN 缓存,只有写入、更新等动态操作才请求后端。但这还只是架构设想,尚未实际落地,主要是现在还没到那程度。
网站运营、广告收入和内容创作
10 月 12 日—28 日
这段时间并不是只有写代码,也在处理网站经营和手工内容输出。
内容方面:
| 日期 | 已发布内容 |
|---|---|
| 10 月 12 日 | 《今年大概要入不敷出了:阿小信的自由职业周记(2026W38-W41)》 |
| 10 月 15 日 | 《AI 没能让我早点下班,反而让我有了更多干不完的活》 |
| 10 月 22 日 | 《微信公众号流量主广告费委托他人收款完整操作教程》 |
另外,10 月 13 日,最后上线的一个网站,在 Google 最近28天的点击量达到了 7000 次。
网站运营方面:
明显感觉到 AI 搜索与 AI 爬虫正在改变小网站的生存环境。
AI 搜索越来越普及,对我们这些靠网站流量吃饭的人,到底意味着什么?
以前做网站,主要是想办法让搜索引擎收录,争取排名,吸引用户点击进来。
现在越来越多的人直接问 AI。AI 把答案整理好了,用户可能根本就不需要再访问原网站。
但 AI 生成答案之前,又需要大量抓取互联网上的内容。
于是网站可能要承受更多爬虫请求,却不一定能获得相应的真实访问。
这就很离谱了。
AI 抢走了我的一些网站流量,顺便还反手给我制造了一大堆垃圾流量。
为了让网站有机会被 AI 提及,还不能把所有 AI 爬虫都一刀切屏蔽掉。要承接更多请求,要么升级服务器,要么优化代码。
没钱,只能选择后者。
这也是为什么最近一直在折腾安全防护、数据库和性能优化。
折腾到最后,我甚至开始觉得,网站最理想的形态可能就是纯静态 HTML。这样至少不用每来一个爬虫,就让数据库跟着忙活一次。
世界的尽头不只是 WordPress,更是 HTML。
广告收入方面: AdSense 再2次出现无效流量限制;虽然短时间内恢复,但整体仍面临收入不稳定、异常流量和运营成本的多重压力。Adsterra目前即将达到下一次1000美元的付款额度,目前已改为了欧元收款,可以省点手续费,还没收过欧元外汇,试试吧。
骑行、身体健康和日常生活
老婆最近换了个 COROS 运动手表,于是我终于正式继承了她之前那个一百多块钱的 Keep 手环,没事看看心率。
以前长期待在家里不出门,运动量实在太少,腿部肌肉都掉了不少。有段时间又经常熬夜,静坐心率都快到 100 了,稍微站起来活动一下就能飙到 130。后来坚持每天出门走动,情况才慢慢好转。
现在天气不热的时候,快走想把心率提到 130 都不容易了。但跑步还是不太行,连续跑起来心率有时候能飙到 190。
不上班之后,倒是越来越爱往医院跑了。
之前在新疆布尔津的时候,低着头吃着椒麻鸡,盯着纯白色的餐桌时突然发现视野中出现了一个漂浮的黑点。但后面也一直没管,据说挺正常的,很多人都有。
前几天顺带去医院看了下眼睛的黑点问题,结论是,人老了,玻璃体浑浊。
眼底照片和眼部超声比较贵,整个检查费花了 529 块钱。贵是真贵。不过想想医保每年也交了不少,不用也是白交。
以前上班的时候,除非实在难受,否则很不愿意去医院。现在不上班了,反而更愿意主动检查身体。可能是时间更自由了,也可能是年纪大了,越来越在意这些事。
今年跑医院的次数,比以前多了不少。倒也不是说喜欢医院,只是这段时间来医院的次数多了,也许是习惯了,没有以前那么恐惧了。
另外还去骑了一次银湖山。骑完感觉:真的太难了,全是陡坡,最大坡度能达到26.3%。
逛了一家永辉,被里面的熟食区震撼到了。品类多得有点夸张。感觉每天买两种,能吃一两个月不重样。
有时候觉得生活其实也没那么复杂。天气凉快了出去骑骑车,逛逛超市,买点好吃的,回家休息。这些事情本来就挺让人开心的。可惜我经常一坐到电脑前,就忘了时间。
昨晚又搞到凌晨快五点才睡。
忙了这么久,到底图什么?
回头看看这大半个月,确实做了不少事。自己实现了一套网站安全防护,优化了 IP 分析和日志处理,把多语言全文检索跑通了,还顺手重构了不少代码。
服务器资源利用率比以前更好了,网站面对异常流量时也有了更多应对办法。从技术上来说,还是挺有收获的。
但这些事情有个共同点。它们大多不是直接能赚钱的功能。
我花了大量时间,只是为了让网站能够继续正常运行,让服务器不要崩,让广告不要因为垃圾流量被限制,让原本就不多的收入尽量少受影响。
以前做网站,想的是怎么获得更多流量。现在做网站,想的却是怎么挡住更多流量。
以前担心没人访问。现在一看到访问量暴涨,反而开始紧张。
以前觉得服务器配置不够,升级一下就好了。现在收入不稳定,能不花钱就尽量不花钱,于是把本来可以用钱解决的问题,变成了自己没完没了的工作。
表面上看是省下了服务器的钱,实际上却搭进去了不少时间。
最讽刺的是,现在有了 AI,写代码的效率已经比以前高了不知道多少。
可我并没有因此变得更轻松。反而因为很多事情都能做了,越来越难停下来。有时候也会怀疑,自己是不是把太多精力花在了不那么重要的事情上。毕竟技术优化得再漂亮,如果网站赚不到钱,好像也没什么值得骄傲的。
但话又说回来,不把这些问题解决,网站可能连正常运行都成问题。
不做不行,做了又不一定有回报。这大概就是一个人做项目经常会遇到的困境。没有专门的运维,没有安全团队,没有数据库专家,也没有产品经理。什么问题都得自己解决。
好在现在还有 AI,至少遇到问题的时候,能有个随时可以讨论和帮忙干活的家伙。虽然它偶尔也会胡说八道。
这几周最深的感受,大概就是:自由职业确实不用上班,但不上班不代表不用干活。
没有人要求我几点开始工作,也没有人要求我几点下班。我可以在工作日去医院、逛超市、骑车,也可以凌晨四五点还坐在电脑前折腾服务器。
时间确实是自由的。只是有时候,我自己反而成了那个最不愿意让我下班的人。
今年大概率还是要入不敷出了。希望接下来能少折腾一点这些不直接赚钱的事情,多做点真正有收入的东西。
当然,也只是希望。毕竟谁知道明天醒来,服务器又会冒出什么新问题呢。
好了,这次就先写到这里。下次见。








