当苍蝇尝试在蛋上钻缝:又谈站点垃圾广告
又休息了一段时间之后,回来更一篇吧。虽然还没完全适应过来,尤其是精力不足的问题多少还是有点,但日子总得过下去,因此只能想办法继续调整了。
这篇博文,算是翻出来点冷饭,掺点新鲜饭,炒一炒。之前已经有两篇文章(这个,以及这一篇)讲过垃圾广告相关问题,但主要还是集中在通过垃圾评论打广告上。然而,在平时运行时检查站点发现,能注入广告的地方其实并不止评论区,还有一些你可能从来没想过的地方。
来自Umami统计的Referer,可以先猜猜这三个都是什么1. 前言
『开设一个个人博客』似乎是很多计科学生都想做的事情,甚至也有一部分教程会建议你尝试一下。然而,开设一个站点和『维护一个站点』却是截然不同的两件事情,如果说前者是技术问题的话,后者其实多多少少涉及到社会工程学的问题了。
为什么这么说?其实很简单,一个公开在互联网上的站点,访客是可以访问到的,但访客也有好坏之分。好访客,过来读读文章,看看评论,和站长交流一下哲♂学问题,甚至过来晒个卡,都是正常的,但对于另一部分访客来说,这些在互联网上的站点,似乎只是一种搞黑灰产(例如上面提到的,投放垃圾广告)的好地点罢了。运营一个站点,除了和技术打交道之外,还得和这些不怀好意的访客打交道。
本文其实并没有什么太新鲜的道理,也只是把运营过程中碰到的一些东西展示出来给大家看,让各位看个乐罢了。当然,本文也会说清楚这些灰色手段背后到底是什么情况,所以虽然可能有点教唆鼓动之嫌,但应该可以通过后面的一些辨别手段来反制回来吧。
2. 找缝的苍蝇
俗话说,苍蝇不叮无缝的蛋,而这些搞灰产的苍蝇,又似乎个个都自带电钻。
从站长的角度看,我们处于弱势方,因为你不知道恶意访客可能会有什么新手段。
2.1 广告评论
我们的老朋友,垃圾评论,在之前的文章里已经有所提及,所以这里只记录发现的新情况。
注意看发送评论的时间垃圾评论的发送者,逐渐出现了定时发送的情况。以前常见的都是一次性发送,一两次,就消停了,但现在已经有两个『广告商』成为了博客的常驻用户,每个月雷打不动地发送一次他们的广告信息,也不管有没有人看,会不会被删。
从技术上来说,这种定时发送的脚本并不难实现,尤其是现在AI加持下(上次的文章讲的就是有人让AI Agent来编写此类脚本,AI(LLM)并未拒绝此类请求),要写一个脚本简直易如反掌。目前只有两个人在发,但如果是二十个,二百个呢?脚本是很容易复制和修改的,运行起来也是几乎零成本的,即使每月只推广一次,基数大了之后依然会对站长(和其他访客)形成非常明显的骚扰。另外,假如攻击者愿意的话,还可以进行垃圾评论轰炸,很多站长都遇到过类似的情况,同一个(或者不同的)垃圾评论发送者一天就能往站内投放上百条垃圾评论,站长删都删不过来。
对付此类垃圾评论,目前还没有一个万能的方案,只能说多角度入手,比如限制IP发送频率(至少能挡掉一部分没有代理IP池的),通过插件来判别关键词(或者是Akismet这样的,通过云端来判别),然后扔到垃圾/待审核队列,等等。具体的办法已经在前文讲过,这里不再赘述。
这里提一个经验之谈:如果有可能的话,想办法让任何评论动作都及时通知到站长,不论是邮件,还是QQ机器人,还是像笔者这样使用ntfy.sh推送,甚至定期手动检查都好,尽量及时知道站上有什么新动作。毕竟,垃圾评论防护的一个重要点就是,尽可能减少垃圾评论存在的时间,所以如果对站点有一个(近)实时的监控,其实也是非常好的。
2.2 垃圾邮件
如果想要联系上一个个人博客的站长,一般情况下,最快的方式就是发送电子邮件(除非你和站长比较熟,那么还可以通过IM软件来联系,但对于陌生人来说,确实如此),所以很多博客都会在关于页/联系页等地方放上站长自己的邮箱。
然而,正如你想象的这样,这些留下来的联系方式,很多情况下就是垃圾广告投放的一个重要渠道。关于垃圾邮件到底有多猖狂,早年间的互联网用户应该都有所耳闻:脚本大批量抓取网页,用正则表达式匹配邮件地址,形成发信列表,批量发SPAM。也正因为如此,很多互联网应用都多多少少对此有一定的预防措施,例如本站在使用的Cloudflare,他就会默认开启一个电邮地址混淆的功能,直接抓取HTML是看不到任何邮件地址的,只有页面加载后浏览器执行了js,才能对地址进行解混淆。即使是没有此类技术,互联网用户也会对此有所提防,最典型的就是,把自己的电邮地址写成xxx#example.com,然后后面补一句『把井号换成@符号』。
前两个月的时候,笔者的域名邮箱(开了CF Email Routing,实际上会转发到主邮箱,然后推送到浏览器)收到了这么一封信:
邮箱收到的知乎入驻邀请函,他们似乎不知道我有知乎账号看聚合站内其他站长发文,这不是孤例,而且知乎官方人员也提到,这是自动寻找博客上的联系方式并发出的。出现这个情况,至少能证明三点:
- 这是广泛发送给不特定人群的邮件
- 自动抓取的邮件地址
- 是一份营销邮件
因此,笔者会将其归类为垃圾邮件。
举上面的邮件的例子,主要是想说明,现在是2026年,是LLM的年代,且不论CF的混淆算法已经算得上是明文了,随随便便就能让AI去逆向一下这个库,即使我们假设这个混淆算法真的这么坚不可摧,AI也完全可以通过调用无头浏览器,或者说是抓取页面上没被混淆算法照顾到的其他地方的电邮地址(例如上面把@换成井号的),给还原成正式的电邮地址。
尤其是后者,这种脏文本清洗的活,并不需要太高级的LLM,简单的小模型都可以识别出来。笔者的电脑安装的是RTX4060,有本地的Qwen3.5-0.8B小模型,正好拿来测试。结果就是这套中等水平的显卡+最小号的LLM,对于『电邮地址还原』来说,不仅识别相对准确(不绝对,但够用),而且速度非常快(155t/s),完全可以拿去对接别的工作流程:
三个测试样例全部通过至于你问我这种玩意的解决方法......老实说,我也没有找到太好的方法。垃圾邮件过滤一直是一个老大难问题,比如说各大邮箱服务的垃圾邮件过滤器,不是说没法过滤,而是说很容易产生误报,我这边已经试过几次把完全正常的邮件给扔到垃圾箱的情况了,因此只能强制指定『所有邮件都不进垃圾箱』,让我自己去看,这也是没办法的办法。
2.3 『嵌入式』广告
如果说上面还算是相对较为常规的广告投送方式,下面就要讲一些很不常规的了。
作为一个站长,最关心的是什么?大概率是站点最近的访客情况,流量获取情况,等等,因此很多站长都会在站点上安装统计程序,或者用Google Analytics之类地第三方工具,来检查站点的运行情况。一般而言,这种统计平台都会记录URL参数、Referer这两个参数,有的还会记录User-Agent,目的当然是为了统计用户看了什么网页,从哪里来的,用的什么设备。
然而,部分读者可能已经注意到了,这三个参数是可以伪造的,客户端写什么,统计服务就会记录什么。于是,有垃圾广告发送者就开始打这三个参数的主意,开始把自己的推广内容塞进去这三个字段里,那么当站长查看日志的时候,自然也就会注意到广告的内容。
这方面的例子,除了引言里的图片(那个是伪造Referer)之外,还有以下从本站生产环境dump下来的真实案例:
Referer注入,某矩阵推广,下面会提
URL参数注入,某色情图片网站
User-Agent注入,某基于AI的网安服务这些边边角角的地方,虽然曝光度不是很足,但考虑到能看到这种地方的一般都是站长/技术人员,因此反而形成了定向推广的效应,能精准推送给可能有需要的人。又或者说,站长好奇这些链接是什么,为什么会链接到自己的站点(当然,实际上大概率没有,不妨猜猜为什么有这个结论),所以点进去看了,于是又能吸引一次曝光。
3. 蛋里有什么?
上面提到的第一种和第二种广告,较为通用,因此没有太多好说的,基本上都是常见的灰黑产,传统的有网上菠菜平台,某些药物(减肥药之类的),现在新鲜的有机场,AI中转站,以及『免费算命』。然而对于第三种来说,就颇为有趣。笔者会把(不是全部,也是相当大一部分的)通过第三种渠道投放的广告,称为『专门广告』,意思是,针对特定一类人群投放的高相关度垂直领域广告。本例中,这个特定人群就是站长/技术员/数据分析师。
3.1 矩阵广告
我们先来稍微离个题。
上面提到,某次站点被Referer注入,就是一个矩阵推广,其在Referer中的链接形如:
# 星号代表一个字符
https://m.baidu.com/s?word=www.****.cn
https://m.baidu.com/s?word=www.***.cn
https://m.baidu.com/s?word=****.cn百度,这个暂时不管他,我们来看后面的那个搜索词。很显然,这个搜索词是某个域名,如果我们打开这个域名,就可以看到一个长得非常粗糙的推广网页:
很好奇鱼苗场的老板在想什么正常情况下,如果收到了来自外站的Referer,一般是代表有人通过那个站点上列出来的链接来到了你的网站。然而,查看这些推广网页源代码可以发现,网页都是简单的HTML内容,一眼能看到底,没有什么神奇的代码,也没有混淆,当然也根本找不到你站点的信息。很显然,这个Referer头是伪造的,唯一目的就是让好奇的站长点进去看,这就达到了他的推广目的。
页面内容比较有趣的点是,上面有『关于我们』页面,但发出请求后,后台的Nginx实际上会发出302,跳转到上面列出来的百度搜索词链接。这么做的具体意图,会在3.2节继续分析。
顺带着分析了一下,这类站点都是批量收购人家已经过期且未续费的域名(一个明显的证据是,某域名是car+年份,明显和汽车有关,但打开也是鱼苗场广告),通过海外的VPS/虚拟主机开起来(因为不用备案,可以一口气开几十上百个),放上宣传信息,就可以坐等流量上门了。而且因为只是单文件HTML,顶多带一两张图片,也就几MB大小,对服务器的性能需求几乎没有,所以背后的操纵者可以肆无忌惮地开站。
这种简陋的页面,笔者有个猜想:不完全是给人看的,是给机器看的,这里的机器包括搜索引擎以及LLM。因为这些网站上留下的信息就只有鱼苗厂老板的电话,没有指向鱼苗场网站的链接,笔者并不认为这是某种添加外链的服务。相反,有一个相关的名词叫做GEO(生成式模型优化),大概的意思是说,通过某种方式,提高某个目标客户的产品,在生成式AI的联网搜索结果中的排名。考虑到现在有相当一部分人已经把豆包当做日用搜索引擎(至少从笔者的身边统计学来看,有这个趋势),出现这种GEO的行为,只能说是必然了。
此处借用一下群友收到的推广这种GEO推广,使用比较多的客户,大概率是长期做线下生意的,因为他们本来就没什么太好的线上推广渠道,现在有了AI,正好可以让GEO提供商在AI软件上推广,上面那个鱼苗场就很符合这个特征。笔者猜测,其运作方式大概率是:运行某流量网络的商家过来问,想不想让用户第一时间看到你的鱼苗场?客户购买推广流量服务后,商家就建立大量写有鱼苗场联系方式的页面,然后通过各种运作,试图使其能被搜索引擎收录,然后就可以被某AI所搜索到。当用户在AI上询问『广东去哪里买鱼苗』的时候,AI就能将其展示出来。
当然,一个『成熟的』推广流量提供商,并不是单渠道进行的,一张推广流量网络,可能除了做GEO,还做普通的SEO,也做外链。这就正好提到了下面要讲的内容,也是笔者在站点日志里面找到的另外一类广告商:PBN网络。
3.2 PBN
上面提到,能看到这种推广信息的人,一般来说都是站长,或者某个和站点数据有一定关联的人。比如说站长吧,作为站长,当然是希望自己的站点被更多人知道,有更多的人来看,这样不论是知名度也好,站点广告的带来的收益也好,也是有所提升的。又因为站点流量有很大一部分来自于搜索引擎(尤其是对于新站),所以SEO优化就成了兵家必争之地。
搜索引擎,我们可以把他看做是基于信任的系统。假如某个权威网站引用了你的网站上的链接,从直觉来看,这就相当于是这个权威网站认可了你的内容,所以在搜索引擎看了,你的网站的权重就会提升,也就会被搜索引擎放在更前面的位置。做过SEO的朋友应该知道我在说什么,对,这个就是所谓的外链。
有很多想做海外生意的商家,或多或少都听说过,甚至购买过外链服务,意思就是,你付钱并提供站点地址后,流量商就会在他的推广流量网络(就是统一控制的一群网站)里发布你的网站链接(早年间是直接堆砌链接,做成链接农场,后来就没这么直白了,通常是撰写虚假的博客文章,在文章里面插入被推广的网站),营造一种你的网站被很多人认可的错觉。由于这种行为其实已经被搜索引擎认定为是作弊,所以很多情况下,流量商家都是偷偷在干,不让人发现这些网站之间有关联,尽量降低流量网络内的发布站点,甚至是被推广的网站,被一锅端的可能性。结合以上特性,他们就有了一个专门的称呼:PBN(Private Blog Network,私有博客网络)
某PBN服务商的宣传页面一方面是渴望流量的站长,经常看Referer想知道有没有人链接过来;另一方面是售卖此类流量推广服务的商家,知道怎么做推广,两者一结合,啊~ PPAP 就有了插入到Referer里的推广信息,完完全全的就是定向推广了。
PBN网络的一种变体,笔者管他叫PBN-SERP网络。它和PBN最大的区别,就是那些虚假博客文章里面并不直接指向目标站点,而是指向该站点关键词的SERP,也就是搜索引擎的搜索结果展示页(Search Engine Results Page)。这样当真实的人类读者访问,或者爬虫爬到的时候,就会产生一次对搜索引擎的请求。在搜索引擎看来,就好像是有大量的搜索流量指向了被推广的站点的关键词,于是认为这个关键词很重要很热门,就提高了权重。上面鱼苗场的『关于本站』有不小概率就是作为此用,让想查看一下这鱼苗场到底是何方神圣的用户,点进去了搜索引擎页,于是也就提高了这个广告页的权重。
4. 写在最后
目前碰到的情况也就是这些,暂时没有其他类型的广告进入。
当然,站点在线的时候,笔者肯定会密切关注的,所以建议不要往本站发垃圾评论广告评论了,看到就删的。
(完)