Apache中的块代理用户

Apache中的块代理用户,apache,.htaccess,Apache,.htaccess,我的理解是,在apache访问日志中,一行中列出了2个IP地址,而不是1个,这是一个使用代理的“用户” 例如: 112.96.179.188 36.56.114.20-[2017年11月30日:12:43:05-0500]“POST/customer/HTTP/1.1”302-“Mozilla/5.0(Windows NT 6.1;WOW64;rv:29.0)Gecko/20100101 Firefox/29.0” 我管理的网站上的所有垃圾邮件流量都来自这些“用户” 在htaccess中是否有方

我的理解是,在apache访问日志中,一行中列出了2个IP地址,而不是1个,这是一个使用代理的“用户”

例如:

112.96.179.188 36.56.114.20-[2017年11月30日:12:43:05-0500]“POST/customer/HTTP/1.1”302-“Mozilla/5.0(Windows NT 6.1;WOW64;rv:29.0)Gecko/20100101 Firefox/29.0”

我管理的网站上的所有垃圾邮件流量都来自这些“用户”


在htaccess中是否有方法阻止这些用户访问站点?

您可能正在寻找的是X-Forwarded-For头

虽然您通常可以假设每个带有该头的请求都来自a)代理背后的某个人或b)假装是代理的某个人,但您无法确定缺少该头是否意味着有人没有使用代理。许多代理不会传递此信息。而且,由于它只是一个普通的HTTP头,当提供内容时,您不能信任它,因为客户端可以将其设置为它想要的任何值

也就是说,您可以使用
RewriteCond
检查该字段的存在和值,并拒绝请求:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-For} !^$
RewriteRule . - [F,L]
这将匹配报头不为空的所有请求(如果报头不存在,则视为空)。

应注意,“X-Forwarded-For”不是从“匿名代理”发送的。通常,只有标准代理才会发送X-Forwarded-For,而匿名代理会删除标头。