倡萌最近发现一个客户的网站被别人进行了恶意搜索攻击,导致他的网站域名下被收录了很多不良信息数据,如下图所示:
什么是恶意搜索攻击?
这种恶意搜索攻击,其实非常简单,就是通过既定的网址结构不断对网站发起不良关键词搜索访问,比如WordPress的搜索网址结构为 域名/?s=搜索词
,而且可能还会顺便将访问的地址推送到各大搜索引擎,加快这些恶意网址的收录。这样,你的网站就会沦为这些不法之徒传播不良信息的渠道,这对网站排名是非常不利的,甚至可能会直接被搜索引擎K站。
如果网站管理员没有定期检查网站的情况,很可能就会遭殃。
怎么处理恶意搜索攻击?
要处理这种恶意搜索攻击,同时还要确保WordPress网站搜索功能的正常使用。操作起来思路是比较明确的,不过步骤和时间可能有些多。
第1步:屏蔽恶意搜索
要屏蔽恶意搜索,首先我们需要监控到对方使用什么恶意搜索词,所以我们先安装 Search Analytics 插件,在 仪表盘 – 搜索分析 页面,我们就可以看到搜索词:
知道了搜索词以后,我们就需要做屏蔽。下载并安装倡萌开发的 WPKJ Block Search Words 插件,启用以后,就可以在 设置-阅读 界面,看到【搜索关键词屏蔽】,根据上面的搜索数据提取恶意关键词,然后填进去,保存:
插件采用的是部分匹配机制,填入【微信】,所有包含【微信】的搜索词都会拦截。
然后我们在网站搜索包含已填写的屏蔽词,就会返回如下错误界面,并且这个界面返回的状态码是 404,这样一来,搜索引擎也不会去收录了:
WPKJ Block Search Words 插件已经兼容 Search Analytics 插件,只要搜索内容包含有屏蔽词,就不会在 Search Analytics 的搜索分析中记录,这样一来,你可以很方便地知道,哪些词已经被屏蔽,继续观察一段时间,发现有新的词,就提取填入【搜索关键词屏蔽】。
第2步:禁止搜索引擎收录搜索结果页
搜索结果页一般我们都不推荐被收录,所以建议大家还是禁止收录。
现在几乎所有搜索引擎都遵循robots.txt的规则,也就是我们可以通过 robots.txt 定义规则,阻止搜索引擎收录搜索结果页面。我们可以在网站根目录,创建一个robots.txt 文件,填入下面的内容:
User-agent: *
Disallow: /index.php
Disallow: /index.html
Disallow: /wp-admin/
Disallow: /*/feed
Disallow: /trackback/
Disallow: /*?replytocom=*
Disallow: /*/comment-page*
Disallow: /?s=*
Disallow: /search/
上面内容的倒数第1、2条规则,就是禁止收录搜索结果页。
更多robots.txt的介绍,请看:为你的 WordPress 站点添加 robots.txt
第3步:向百度提交死链
禁止收录搜索结果页面的规则已经添加,但是搜索引擎不会马上做出回应的,之前收录的恶意链接,也不会那么快去掉。这时候,我们可以通过百度的死链提交功能,让搜索引擎快点去掉已收录的恶意网址。
首先,我们需要收集恶意网址,访问百度搜索首页,通过 关键词 site:www.你的域名.com
进行搜索,比如 微信 site:www.abc.com
就可以得到你网站下关于这个关键词的结果:
创建一个名为 silian.txt 的文件,然后访问上面的恶意网址,将网址复制到 silian.txt 中,每行一个:
我们可以搜索前面收集到的恶意关键词,尽可能将所有收录数据收集。
然后将这个 silian.txt 文件上传到网站根目录,然后访问 百度搜索资源平台 ,在站点管理中,提交死链网址:
注:如果你的网站还没有提交到百度资源平台,可以先看教程《WordPress SEO:提交网站到百度搜索资源平台》提交好网站再进行死链提交操作。
2021年8月29日更新:Google搜索引擎需要做额外的处理,详情请阅读 Google Search Console 警告“已编入索引,尽管遭到 robots.txt 屏蔽” 的处理方案
好了,今天的教程就到这里。建站不易,建议大家每隔一段时间就检查下网站的健康情况,尽早发现和处理问题。
有没有好用的关键词推荐
任何恶意的内容都会包含联系方式,也就是会用到数字,比如 1一壹① 等各种数字类型都屏蔽掉,那就差不多了
去年中过招,谷歌站长里突然多了大几百页的收录,就是这种搜索页,后来通通加了noindex
更好的解决办法是现在搜索字符数,大多的搜索都是只有4到10个字符,而这些广告都需要很长,如果能够屏蔽禁止搜索太长的关键词,可以杜绝大多非法搜索关键字
屏蔽数字基本就完胜,因为他们免不了要留微信号,而用户基本不会搜索数字
比如我搜索个“404”可咋整?限制10个中文字我觉得还行!
要根据网站内容类型来选择,比如我的网站就不屏蔽0、5、4、3等可能会搜索的数字
我试了一下,没卵用。用了你的插件,搜屏蔽关键词的结果是404错误,用了长度限制的搜索规则,结果是500错误,反正两者都需要消耗服务器200-300ms,目前正在寻找更好的屏蔽方法。
就是故意设置了返回404错误码的,因为我们后面需要收集提交已被百度收录的恶意搜索结果,百度要求必须是404状态码才会删除已收录的这些页面信息。
如果你有更好的办法,欢迎分享
主要是无论404还是500错误,都要消耗服务器100-200ms,所以目前我选择在cdn处设置URL匹配。这样有两种方案:一,将/?s=*列入人机识别,但是严重影响搜索体验;二,将/?s=及部分关键词匹配直接拦截、拉黑,但是该方法部分服务商没有,部分需要付费套餐。
我当初一个网站也被人刷外链搜索,后来就都屏蔽搜索页收录了。
嗯,一般都推荐屏蔽搜索页收录。不过像我客户必须保留搜索功能,而且还要统计搜索词,弄个热搜,所以还是折腾了屏蔽的措施。还真的挺好用,这些攻击关键词也就哪些,提取了20个左右就OK了