今天登陆百度统计,忽然发现网站流量大涨,卧槽,什么情况?仔细一看,全是广告搜索词,而且是一样的广告词,不同的IP进来的。

平时网站流量只有100左右,今天干到接近5000,非常不正常,所以立即去看来下实时访客。

发现很多垃圾关键词(广告关键词)的访问,主要就两条搜索词。

大家做网站有遇到这种情况吗?恶意搜索词攻击-米宝教室
大家做网站有遇到这种情况吗?恶意搜索词攻击-米宝教室

然后在网上找了一下解决方法,大概的意思就是设置站内搜索的次数限制,通过验证码来识别是否机器人访问。

小白一个的我开始着手解决自己遇到的问题,因为我使用的是WordPress程序,所以打算先用插件解决一下站内搜索的问题,首先是站内搜索词的监测和搜索限制:

WordPress监测站内搜索词的方法:

  1. 使用Google Analytics:如果你的WordPress网站已经集成了Google Analytics,那么你可以通过Google Analytics中的“站内搜索”功能来监测站内搜索词。要启用该功能,你需要在Google Analytics中设置站内搜索的参数,然后就可以在“行为”->“站内搜索”中查看站内搜索的数据,包括搜索词、搜索次数和搜索结果的成功率等。
  2. 使用插件:WordPress有很多插件可以帮助你监测站内搜索词。例如,Search Meter插件可以追踪你的站内搜索词,并在WordPress后台中提供一个报告,显示搜索词、搜索次数和搜索结果的成功率等。
  3. 编写自定义代码:如果你有一定的编程知识,你也可以编写自己的代码来监测站内搜索词。你可以使用WordPress的查询变量(query variables)来捕捉站内搜索词,然后将这些数据发送到你的分析工具中进行分析和报告。

WordPress的一些设置验证码来识别机器人的方法:

  1. 使用插件:WordPress有很多插件可以帮助你设置验证码来防止机器人攻击。例如,reCAPTCHA、Google Captcha等插件都提供了验证码的功能,你可以通过安装并配置这些插件来保护你的网站。这些插件通常非常易于使用,只需要几个简单的步骤就可以完成设置。
  2. 编辑WordPress主题文件:如果你熟悉编程,你也可以直接编辑WordPress主题文件,添加验证码功能。这种方法需要你具有一定的编程知识,并且需要小心操作,以避免破坏你的网站。

对我来说编写代码不太现实,所以,我选择用插件来解决问题。

安装了Jetpack,虽然阻挡了一些恶意攻击,但是根本问题没有解决。

大家做网站有遇到这种情况吗?恶意搜索词攻击-米宝教室
大家做网站有遇到这种情况吗?恶意搜索词攻击-米宝教室

没有办法,最后通过入口页面的历史趋势 ,可以查看到这些IP全部在网站的搜索栏中搜索他们的广告关键词。

大家做网站有遇到这种情况吗?恶意搜索词攻击-米宝教室

经过对比,发现他们都是用https://www.mbb180.com/?wd=*(关键词)来访问网站,想着通过阻止他们访问“?wd=”这个参数,看能不能解决这个问题。

目前通过“?wd=”这个参数访问我网站已经超过3天了。找到的处理方法有2种,先尝试下,不知道哪个有效果。

1、使用WordPress中的.htaccess文件来禁止通过特定的查询字符串访问网站

具体的步骤:

  1. 连接到你的WordPress网站的FTP或文件管理器,找到网站根目录下的.htaccess文件。
  2. 使用文本编辑器打开.htaccess文件,并在文件末尾添加以下代码:
RewriteEngine On
RewriteCond %{QUERY_STRING} wd=
RewriteRule ^(.*)$ - [F,L]

没有.htaccess文件的可以新建一个,如果你使用的是Nginx服务的话,这段代码是不能直接使用的

2、使用反向代理工具如 Nginx 或 Apache 来限制请求来源并进行更精确的访问控制的步骤

  1. 安装和配置反向代理工具:例如安装 Nginx 或 Apache,配置虚拟主机等。
  2. 配置反向代理规则:为了限制 “?wd=” 参数的访问,你可以使用反向代理规则来过滤这个参数。下面是一些示例规则:

Nginx:

location ~ / {
  if ($arg_wd) {
    return 403;
  }
  proxy_pass http://your-upstream-server;
}

Apache:

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^.*wd=.*$
RewriteRule .* - [F]
</IfModule>
ProxyPass / http://your-upstream-server/

这些规则将会拒绝所有带有 “?wd=” 参数的请求,并将其他请求转发到上游服务器。

3、配置访问限制:

通过以上第2步,进一步限制请求来源,以防止来自非授权来源的访问。下面是一些示例规则:

Nginx:

location / {
  # 允许来自白名单 IP 的访问
  allow 10.0.0.0/8;
  deny all;
  # ...
}

Apache:

<Directory "/path/to/wordpress">
# 允许来自白名单 IP 的访问
Require ip 10.0.0.0/8
</Directory>

这些规则将会限制请求来源,只允许来自白名单 IP 的访问。

以上方法,我觉得第3步不太合适,个人觉得添加白名单和黑名单太麻烦了,所以,我准备先试下第一步和第二步。

第一步比较简单,所以从第一步先来。

发现第一步用不了,因为我使用的是Nginx的服务,Apache的文件不能用,于是我修改了nginx.conf文件

保存的时候提示

ERROR:
nginx: [emerg] "lua_shared_dict" directive is not allowed here in /www/server/nginx/conf/luawaf.conf:1
nginx: configuration file /www/server/nginx/conf/nginx.conf test failed

找资料得出的结论是

根据错误提示,我们可以看出是在文件/www/server/nginx/conf/luawaf.conf的第一行出现了问题,因为 lua_shared_dict 指令不允许在这里使用。

由于在 nginx.conf 中没有使用 lua_shared_dict 指令,我们可以排除 nginx.conf 文件中出现问题的可能性。因此,问题应该出现在 luawaf.conf 文件中。

请按照以下步骤进行修正:

打开文件 /www/server/nginx/conf/luawaf.conf。
检查第一行,确保它只包含 lua_shared_dict 指令。
如果第一行不包含 lua_shared_dict 指令,则检查文件中的其他指令,以确定是否有其他错误。
保存并关闭文件。
重新加载 nginx 配置文件:nginx -s reload。

后续效果待更新。