通过Apache,如果发出特定页面请求www.mysite.com/this_page/
,是否可以排除对我网站的访问?引荐来源IP地址发生变化。
我意识到我可以在我的代码中“捕获”这个请求并返回一个错误页面,但我更希望请求永远不会出现在我的实际代码中。我也可以删除该页面,但随后我的网站将返回其“找不到页面”页面。所以,仍然是一个页面。
我的主机是Webfaction,我使用Django。所以这是Apache。
原因是我看到这个特定页面有些奇怪的活动。对于好奇的人来说,我每天要求这个页面大约20次,在2秒钟内连续发出1-3次请求。 IP地址是乌克兰语。推荐人大多是各种乌克兰网站,看似真实,但它们不包含我网页的实际链接。
答案 0 :(得分:0)
我不认为阻止整个国家是一个好主意,但这是如何做到的。
首先,获取相关国家/地区的CIDR列表。对于大多数国家来说,它将是一个很大的列表。一个地方就是http://www.find-ip-address.org/ip-country/。然后,只需将它们放入.htaccess
或Apache配置文件中:
<Location /this_page>
order allow, deny
deny from 5.1.0.0/19
deny from 5.22.156.0/22
deny from 5.34.176.0/21
deny from 5.53.112.0/21
deny from 5.56.24.0/21
deny from 5.57.64.0/21
deny from 5.58.0.0/16
deny from 5.83.16.0/21
deny from 5.104.32.0/19
deny from 5.105.0.0/16
#...
</Location>
(领先的空白是可选的,.htaccess
文件如果您乐意阻止整个目录,则不需要位置标记。)
以上配置键在客户端IP上而不是引用链接主机的IP上。这部分要难得多,尽管对乌克兰顶级域名(TLD)的关键也足够了:
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^https?://[^:/?#]*\.ua[:/?#]
RewriteRule ^/this_page - [F,L]
(注意%{HTTP_REFERER}
没有双Rs。规格拼写错误,上面的配置不是。)
如果您因高容量而受到猛烈攻击,您可能需要考虑在防火墙级别而不是Apache上删除连接。同样,这将是客户而不是推荐人。