0

我最近在垃圾邮件和机器人注册方面遇到了一些问题,所有这些反验证系统似乎都不起作用。

我分析了我的访问日志,发现用户代理没有被人类使用,可能是因为它们很旧......但也注意到有一些 HEAD / GET / POST / 攻击也进入了 Web 服务器以及使用用户代理上完全相同的字符串。可能引导程序使用与垃圾邮件/添加机器人相同的用户代理。

216.151.139.172 - - [24/Mar/2013:00:58:20 +0000] "GET /index.php?action=verificationcode;vid=register;rand=12c64196f4558b2dff00db7ed3ee8ad9 HTTP/1.1" 200 2189 "index.php?action =register" "Mozilla/4.0(兼容;MSIE 7.0;Windows NT 5.1;Trident/4.0;.NET CLR 1.1.4322)""-"

在不阻止所有用户代理的 nginx 中,无论如何只阻止用户代理中包含的这个字符串,这样这些机器人就可以停止注册和广告。

“Mozilla/4.0(兼容;MSIE 7.0;Windows NT 5.1;Trident/4.0;.NET CLR 1.1.4322)”

谢谢阅读。

4

2 回答 2

3

你可以试试这个

if ($http_user_agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322)") {
  return 444; # 444 is a special nginx status code that's useful in fighting attack
}

但是该用户代理字符串是有效的,这意味着您也可以阻止一些合法访问。

我建议你尝试基于 ip 的访问控制。请参阅http://wiki.nginx.org/HttpAccessModule进行设置。在我看来这更好。

于 2013-03-24T16:09:32.030 回答
0
if ($http_user_agent ~* (Windows 95|Windows 98|wget|curl|libwww-perl) ) {
return 403;
}

有关此检查的更多信息,请访问以下链接 https://www.nxtcloud.io/block-unwanted-user-agent-traffic-on-nginx/

于 2017-04-17T12:18:59.743 回答