【问题标题】:How to ban all countries but a few from my website如何在我的网站上禁止除少数几个国家以外的所有国家/地区
【发布时间】:2011-11-04 23:01:53
【问题描述】:

我主持了一个论坛,目标受众只有美国、澳大利亚和大洋洲。我想知道如何禁止所有其他国家访问我的论坛,除了上述三个。我一直在注册机器人时遇到问题,它们都来自其他国家/地区的 IP,所以我认为这可以解决问题并且不会打扰我的目标受众。

有没有简单的方法来做到这一点?建议将不胜感激。

【问题讨论】:

  • 您的目标受众从不旅行?
  • 我考虑过对任何传入请求执行tracert,然后交叉检查跃点...但是 IP 可以通过代理。我也很想知道这个问题的答案。可能想在serverfault.com 交叉发布此内容@
  • @DA。它是在美国托管的游戏的“粉丝网站”,仅允许从这 3 个国家/地区访问。其他国家/地区也有自己可以玩的游戏版本。
  • 如果问题是通过机器人自动注册,我建议先查看其他解决方案...即确保有某种形式的电子邮件验证确认等。
  • @DA:电子邮件验证(和验证码)已经被机器人破坏了一段时间。

标签: geolocation forum mybb


【解决方案1】:

机器人在世界各地使用代理服务器。运行机器人的人知道如何绕过 IP 屏蔽。

使用 GeoIP 阻止机器人在您的系统上注册并不能真正解决核心问题。

Captcha 可以在一定程度上有所帮助,但它实际上已经被破坏了好几年(从某种意义上说,编程良好的机器人可以解决 Captcha 挑战)。

StackOverflow 模型实际上非常好......在新用户获得一点声誉之前不要让他们做太多事情(例如发布一些被其他用户点赞的内容,或者需要前几篇帖子才能接收)版主批准)。

【讨论】:

  • 我想的也差不多。我不想仅仅为了阻止一些访客而付费(GeoLite City,并没有对我说免费 [免费试用!= 免费]!),而您的回答主要是我所期待的。谢谢。
  • @Jared:我的公司大量使用地理定位——比每个国家更细粒度,比 MaxMind 的数据集好得多。地理位置不适用于任何类型的访问限制。数据太有缺陷了,有人很容易只使用代理。
【解决方案2】:

MaxMind 的GeoLite City 免费数据库可以轻松下载、更新和处理以本地化 IP 地址。

【讨论】:

    【解决方案3】:

    使用此 PHP 代码,您可以允许选定的国家/地区查看您的网站。 所有其他用户将显示空白页面,并显示他们无法访问网站的消息。

    您可以通过添加&& $country != "XY" 来设置任意数量的国家/地区 其中 XY 是您允许查看您的网站的国家/地区代码。

    下面的示例韩国和美国可能会查看该网站,而其他人则不会。 稍作修改,您还可以根据需要阻止或允许选定的 IP

    $userIP = get_ipxx(false);
    $country = file_get_contents('http://api.hostip.info/country.php?ip=' . $userIP);
    
    if ($country != "KR" && $country != "US") {
        die ('ERROR : SITE IS UNAVAILABLE');
    }
    
    function get_ipxx($ip2long = true) {
        if($_SERVER['HTTP_CLIENT_IP']) {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        }else if($_SERVER['HTTP_X_FORWARDED_FOR']) {
            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        }else{
            $ip = $_SERVER['REMOTE_ADDR'];
        }
        if($ip2long) {
            $ip = ip2long($ip);
        }
        return $ip;
    }
    

    【讨论】:

      【解决方案4】:

      最简单但相当暴力的方法是获取每个国家/地区的 IP 列表(它们通常按国家/地区大致分配,http://www.countryipblocks.net/)。这可能会意外阻止合法客户的人,但仍允许不合法的人进入该站点,但它应该处理 95-99% 的情况。然后,您只需设置防火墙或网络服务器或您选择的任何技术来阻止任何这些 IP。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多