如何在Apache,Nginx和WordPress中阻止不需要的用户代理和引荐来源?

本文概述

阻止你在日志中看到的所有不必要的请求

我认为你已经查看了网站访问者日志, 并且厌倦了那些不必要的请求。它们不一定是坏邮件或垃圾邮件, 但是它们可能无法为业务增加价值。想象一下, 如果大多数点击是通过不受欢迎的用户代理或引荐来源获得的, 而你认为你的网站获得了良好的访问量, 但实际上, 它们是没有用的。

最好的管理方式是在网络设备, 负载平衡器, 防火墙或CDN等边缘将其停止。但是, 我知道个人博客作者或小型网站可能不可行, 并且你可能希望在较低级别进行屏蔽, 例如Web服务器, WordPress等。

我希望你已经有了要阻止的引荐来源网址和用户代理的列表。让我们开始吧。

最佳做法是, 在修改之前备份配置文件, 以便在出现问题时回滚。

选择你要阻止的位置

  • Nginx
  • Apache HTTP
  • WordPress

Nginx

Nginx支持数百万个站点, 并且在虚拟主机中非常受欢迎。如果你正在使用Nginx, 则可以通过以下方法停止它们。假设你通过以下用户代理收到大量自动请求, 而你决定屏蔽它们。

  • Java
  • 卷曲
  • python
if ($http_user_agent ~* "java|curl|python") {
    return 403;
}

如果你希望这些重定向到某个地方, 则:

if ($http_user_agent ~* "java|curl|python") {
    return 301 https://yoursite.com;
}

上面的配置必须在服务器块下。

并且以下内容被引荐来源屏蔽。以下示例应放在location块下, 以阻止来自semalt.com, badsite.net和example.com的请求。

if ($http_referer ~ "semalt\.com|badsite\.net|example\.com")  {
  return 403;
}

进行必要的更改后, 你需要保存文件并重新启动Nginx才能生效。

要重启Nginx, 你可以使用:

service nginx restart

Nginx是功能强大的Web服务器, 如果你对学习感兴趣, 请查看此在线课程。

Apache HTTP

要在Apache中阻止用户代理, 可以使用mod_rewrite模块。确保已启用该模块, 然后将以下内容添加到.htaccess文件或相应的.conf文件中。

如果你配置了多个站点, 并希望阻止特定的URL, 则可能需要将它们放在相应的VirtualHost部分中。

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} badcrawler [NC, OR]
RewriteCond %{HTTP_USER_AGENT} badbot [NC, OR]
RewriteCond %{HTTP_USER_AGENT} badspider [NC]
RewriteRule . - [R=403, L]

上面的规则将阻止任何包含用户代理的请求, 包括badcrawler, badbot和badspider。

并且, 以下示例按引荐来源网址名称BlowFish, CatchBot, BeingBot进行阻止。

RewriteEngine on
RewriteCond %{HTTP_REFERER} blowfish|CatchBot|BecomeBot [NC]
RewriteRule . - [R=403, L]

与往常一样, 重新启动Apache服务器并测试结果。

WordPress

如果你在共享主机上使用WordPress, 或者无法访问网络服务器配置, 或者不满意修改文件, 则可以使用WP插件。有很多WP安全性插件, 用于阻止不良bot的最受欢迎的插件之一是Blackhole for Bad Bots。

总结

希望以上技巧可以帮助你阻止不良行为, 以免影响合法请求。如果你正在寻找全面的安全保护, 那么你也可以考虑使用基于云的WAF, 例如Astra或SUCURI。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?