本文概述
阻止你在日志中看到的所有不必要的请求
我认为你已经查看了网站访问者日志, 并且厌倦了那些不必要的请求。它们不一定是坏邮件或垃圾邮件, 但是它们可能无法为业务增加价值。想象一下, 如果大多数点击是通过不受欢迎的用户代理或引荐来源获得的, 而你认为你的网站获得了良好的访问量, 但实际上, 它们是没有用的。
最好的管理方式是在网络设备, 负载平衡器, 防火墙或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。