聊聊WordPress博客的垃圾评论问题

垃圾评论(Spam)是各位WordPress博主们一直以来比较困扰的问题,这次我又遭遇了令人苦恼的垃圾评论,几乎每次我都要费劲时间去手动解决它们。这次来聊聊Pingback和Trackback带来的垃圾评论问题。

本文提到的所有垃圾评论均指的是机器生成的自动化垃圾评论(Spam),而非人类手动/使用用户脚本爆刷出来的恶意评论(比如XX刷屏、XX车),当然两种都是违反道德伦理的。它们的目的也有所差别:前者往往是垃圾站用来控制搜索引擎权重(SEO污染)从而引导来获得其推广收益,这种Spam其实是可以在技术上稍作优化以规避的;后者就是真的恶意了,规避的可能性不大,除非博主有效屏蔽,或与其和解,或改头换面。

玩WordPress这几年来,包括在Mr.Zan品牌成立之前,博客最不可避免的就是一些贴上了各种垃圾权重URL的垃圾评论,也试过了很多种应对办法,比如使用安全的Cloudflare HTTPS DNS解析(现在我全系网站都是Cloudflare),或者加reCAPTCHA,或者其他各种屏蔽垃圾评论的插件,比如机器人表单等等……

不过这些解决方案治标不治本:使用插件对Jetpack的手机客户端影响较大,没办法过reCAPTCHA(还令访客觉得反人类),而机器人表单不能规避一些有AI技术识别的Spam机器,都不是一种合适的方案。尽管加了Cloudflare撑过了一段时间,但现在Spam机器也突破了这一关口,虽然频率小了很多。这还是没有加「五秒盾」的情况,否则可能会更大的影响访客的访问体验。

忍耐不住,我便抽时间研究了一下WordPress的垃圾评论,也发现我博客的垃圾评论总是聚集在单一但是有特征的文章评论留言,即我上个月写的TeraCloud推荐文「来自日本的免费WebDAV网盘——TeraCloud动手玩」中,而在之前经营别的一些WordPress站点时,垃圾评论也总是聚集在一些包括了「大牌服务网站」网站URL的文章下方……

「大牌服务网站」 这是个什么概念呢?牌子可能不一定大,但是也有很多人访问,而且是包含服务的网站,相应的也有aff之类的推广链接机制等,而这些连接往往附带了一些跟踪属性,可用来定位推广文章…… 举个例子,各种aff推广的主机商比如Vultr、BandwagonHost等、同样使用新版本WordPress等程序搭建的动态网站博客等、甚至一些社交网络,商业化的或者自由开放的,包括Mastodon、Fediverse等……


环境因素

我发现垃圾评论往往盯在那些功能丰富的动态博客上,多数还是PHP,除了WordPress之外,同样是PHP编写的Typecho也遭遇了垃圾评论的问题;反观静态网站因为没有自己的评论组件程序所以自然不存在这个问题(评论组件本身的垃圾评论问题是另外一码事,不在讨论范围内)

那么PHP就真的那么不堪吗?肯定不是,这未免太过于刻板印象了,但是动态网站往往受灾严重是个事实。其实除了动态博客的垃圾评论之外,Spam的毒手也伸向了Fediverse中,我认识的一位网友,他经营的Misskey(还是Mastodon?忘了) Fediverse实例竟然收到了来自“外国友人”的注册申请,当然这个申请没有傻到在username一栏中填写网站URL,不过全英语描述,还是比较可疑的。
Misskey是一个日本开发的Fediverse社交网络程序,使用NodeJS编写,基本只在日本流行,不过对Fediverse衍生的ActivityPub协议标准有良好的支持(这个协议是个重点)。Mastodon想必大家也知道了,也是一个Fediverse社交网络程序,同样对ActivityPub标准有良好支持

我认识的动态博客软件,自带评论功能的,老牌的WordPress有垃圾评论,Typecho也有垃圾评论,ZBlog也有垃圾评论,不过我此前合作过,新兴简单的Halo目前没有Spam垃圾评论的问题👍;
静态博客外挂的评论组件多数是外部平台,比如Disqus、Gitalk、utterances、Valine(Leancloud)等,都是有服务商的,受到ToS等规则约束,所以垃圾评论一般不会轻易污染,不过像ISSO、staticman、comment.io这种可以自托管的,被Spam机器识别了之后,也会受到垃圾评论的污染。

一些论坛使用类似技术和结构的,也有垃圾评论的污染困扰,无论是老牌的PHPBB、XenForo还是中国流行的Discuz、WeCenter、XiunoBBS,即便是新兴的Flarum也逃不过其毒手,但是你可以看看mdui团队推出的比较简单、轻量的mdclub论坛系统,暂时也没有Spam垃圾评论的问题👍。

垃圾评论的原理

搞清楚环境因素之后,来分析下垃圾评论是怎样执行的?一般机器都会在抓取的网页中寻找评论相关的表单,填充文字发送数据,当然也有hack绕过网页表单直接向源站发送垃圾评论数据的,像是早期ZBlog比较常见。(这也是为何PHP总是被针对的原因)(因此我建议你使用Cloudflare的安全DNS解析服务)

不过垃圾评论机器不会随便找个表单输入框填充内容直接提交,比如搜索框,对吧?刚才提到,博客程序只有被Spam机器识别到评论组件之后才会受到污染:像ISSO早期没有垃圾评论,能够被侦测识别后现在有了;论坛程序被识别后,也有了垃圾评论;Fediverse被广泛认知了以后,一些程序也有了垃圾评论,当然在社交网络和论坛中,往往还没过注册申请这一关就被拒之门外Game Over了。不过这样看来,WordPress的确是垃圾评论的重灾区。

那么垃圾评论从哪来?为什么别的文章没有垃圾评论呢?一般来说,除了服务器被暴力扫IP、扫域名、然后再扫网站程序(类似于电子邮件和暴力登录测试)(现在基本不常用了,因为ICANN的域名类型太多了),再一个就是Pingback和Trackback的引用造成的污染了。

罪魁祸首:Pingback & Trackback

在Web 2.0时代,网站用户的交流互动性被提升,此时开始有了各种各样的Web交流标准,不乏XML-RPC、Atom RSS等协议标准,而Pingback和Trackback同样属于这个范畴,当然,ActivityPub也是一种协议标准……

Pingback和Trackback都是一种回源通知的工具协议,多用于博客当中,用来通知博主文章URL的引用,它俩的区别在于一个是自动引用的广播通知、一个是手动摘要通知,不过都会对端发送链接通知。怎样发送通知呢?通过服务端程序扫描与解析URL所在的服务器,如果对站服务端程序支持Pingback或者Trackback,则自动发送通知。

Web 2.0时代强调互动性,Pingback和Trackback这样的理念还是比较先进的,但现实往往不那么美好:Pingback和Trackback(一般来说主要是Pingback)会让博客文章广播出去,从而引来大量的垃圾评论的污染,这也是为什么基本上垃圾评论在有安全防护的网站上只会盯着少数几篇文章污染。(如果你要是连源站IP地址都没做保护那基本完蛋了,在DNS暴露出源站IP的情况下,我遇到过一天2K多的垃圾评论)

(参考了这篇文章 wordpress中的PingBack评论 – 天祺围棋 (tianqiweiqi.com) ,其网站博客也是WordPress搭建的,希望能back到这位博主)

WordPress支持Pingback和Trackback的功能,也可以在文章设定里「讨论」栏中设定Pingback和Trackback的状态,也可关闭整站的Pingback和Trackback功能。

而上述提到的一些博客、评论、社交程序,虽然并不是都支持Pingback和Trackback这两种特定协议,但其内部也有实现一种ping类型的back通知,总而言之是Spam机器可以识别到的技术。而ActivityPub也是类似的技术,并且实现得更加完善,具有收件箱的概念才得以用作分布式去中心化的社交网络。另外Fediverse也还有几个服务器列表网站,只要与外站发生互动就会被收录了,因此Spam机器顺着发现的列表就能够去污染Fediverse,不过正如我所说,没有匿名性,往往在注册时就被拒之门外了。

而我推荐的mdclub、Halo由于其运行机制简单,没有使用太多技术,所以暂时没有遭到Spam的污染。但跑得过和尚跑不了庙,不排除有些联盟再去Hack出它们的漏洞,无论是中文还是英文Spam。当然它们相比早年的ZBlog来说,其安全性还是值得信赖的。

总结

WordPress博客网站的Spam垃圾评论大概的流程就是说,一般在文章、网页被Pingback和Trackback引用之后,会间接的引来更多的垃圾评论,如果不想引来垃圾评论的话,做好站点和DNS层面防护(防止被扫),关掉Pingback和Trackback就好。这可以类比成一种区块链,你不去碰它,它自然不会找你。回想一下我在本文提到的TeraCloud、Vultr等服务商的Aff这类广播跟踪的网站,是不是就和垃圾评论有点联系了?

当然,互联网是开放的,不可避免的要承担相应的风险,因此各位独立博主也要做好自己站点的网络安全防护工作!

2 评论

  1. 我也建了一个小小的站点用来写写没什么营养的博客,前段时间也在受到 spam 的影响,后来添加了评论时小学数学题的人机验证,情况有所缓解,再后来又频繁收到此类评论,于是换了简单的图片验证码,目前体验还好。

    对于评论审核的话,还是感觉挺麻烦的,毕竟实际上还是被 spam 通过邮件通知的方式骚扰到了

  2. WordPress的话,可以考虑开启评论审核(每一条都审核),配合WP Mail SMTP这个插件(用来推送新评论,邮件种有审批链接),使用体验极佳。

    效果如下↓
    !

Leafee98进行回复取消回复

%d 博主赞过:
订阅推送通知    OK 不用了,谢谢