阻止非英国访问者到我的网站

我想阻止所有非英国访问者到我的网站,有谁知道我会如何做到这一点?

我想我需要有一个.htaccess文件,其中列出了拒绝命令旁边的所有IP,但是如何find英国IP允许的最新列表。

这样做的原因是尝试减less我的网站上的垃圾邮件数量。

谢谢你的帮助

看看GeoIP数据库。

但我想阻止所有非英国游客不是最好的方式。 想象一下,你的一个用户是在英国假期,并希望到达你的网站。

看看Spamhaus的DROP清单。 它包含所有Spammer拥有的networking。 我在我的防火墙规则中使用了这个列表,在托pipe的博客上减less了大约98%的垃圾邮件。

我想到了两个解决scheme。

如果您的网站是dynamic的,您可以检查每个请求与访客IP相关的国家,例如Maxmind GeoIP数据库( http://www.maxmind.com/app/geolitecountry )如果用户不是来自英国,只是显示一个404或任何你想要的。

另一种解决scheme是只允许在一定范围内的用户访问该网站。 您必须获取uk的ip范围,然后将它们添加到.htaccess文件的allow指令。 范围可以在这里获得( http://www.ipaddresslocation.org/ip_ranges/get_ranges.php

你想要做的是通常称为地理定位 。

这个问题在StackOverflow有一些有用的答案。

不确定地理位置是一个完整的解决scheme – 也不会阻止访问使用.htaccess

有人在您的系统上发布垃圾邮件意味着您已经有一些自定义代码在运行 – 而AFAIK则没有简单的方法可以直接从.htaccess文件进行有效的查找。

当然使用地理位置可能会有所帮助 – 但是您只需要控制对允许发布内容的function位的访问。 有一个免费的数据库,你可以在这里运行一个本地副本。

如果是我,我会用这个作为评分系统的一部分,也包括在内

1)自我主持的职位 – 要求用户提供一个电子邮件地址 – 当他们发布,不要发布,直到他们点击一个链接,你发送电子邮件给他们

2)pipe理员审核 – 也许你没有时间去审核每个post – 但是如何检查特定用户的前N个post?

3)使用spamassassin来识别垃圾邮件的post (注意你可以捕获更多的垃圾邮件(但显然不发布)越好,这将工作)