V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
doufenger
V2EX  ›  问与答

如何禁止日本访客访问网站?

  •  
  •   doufenger · 2017 年 4 月 2 日 · 6099 次点击
    这是一个创建于 3227 天前的主题,其中的信息可能已经有所发展或是发生改变。

    既然比如百度统计之类的能识别各地区访客,那应该也有办法做到禁止日本访客访问网站吧?

    第 1 条附言  ·  2017 年 4 月 2 日
    楼下介绍了 GEOIP ,我想在页面上判断,但是出现了奇怪的问题


    这样写,日本的 IP 可以访问,其他国家不行
    [mw_shl_code=php,true] //geophp 的位置
    include ('geoip.php');
    // GEOIP 数据库位置
    $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);

    $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
    geoip_close($gi);

    if($country=='jp') {;} else {exit;}[/mw_shl_code]

    这样写,任何国家 IP 都访问不了
    [mw_shl_code=php,true] //geophp 的位置
    include ('geoip.php');
    // GEOIP 数据库位置
    $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);

    $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
    geoip_close($gi);

    if($country=='jp') {exit;} else {;}[/mw_shl_code]
    第 2 条附言  ·  2017 年 4 月 3 日
    谢谢大家提供的思路 已经通过禁 IP 禁日语浏览器解决了
    34 条回复    2017-04-04 11:36:51 +08:00
    a342191555
        1
    a342191555  
       2017 年 4 月 2 日 via iPhone
    nginx geoip module ?
    doufenger
        2
    doufenger  
    OP
       2017 年 4 月 2 日
    @a342191555 = =。。这个好像要把日本 IP 一个个添加
    a342191555
        3
    a342191555  
       2017 年 4 月 2 日 via iPhone
    coyove
        4
    coyove  
       2017 年 4 月 2 日
    如果你愿意用 cloudflare 的话。。。
    GoBeyond
        5
    GoBeyond  
       2017 年 4 月 2 日 via Android
    nginx geoip
    自行在后端程序里前置判断访客 ip
    直接在防火墙侧( Incapsula 支持,其他的不确定) ban 掉对应国家
    etc.
    fytriht
        6
    fytriht  
       2017 年 4 月 2 日
    好奇怎么会有这样的需求...
    GoldenPillow
        7
    GoldenPillow  
       2017 年 4 月 2 日
    默默求会员
    DoraJDJ
        8
    DoraJDJ  
       2017 年 4 月 2 日
    可以,很爱国。
    最简单的用 Nginx 的 GeoIP
    KingBillSame
        9
    KingBillSame  
       2017 年 4 月 2 日 via Android
    如果挂了全局为皮嗯不就进不去了
    doufenger
        10
    doufenger  
    OP
       2017 年 4 月 2 日
    @coyove cloudflare 怎么弄的 我用的就是
    bobylive
        11
    bobylive  
       2017 年 4 月 2 日 via Android
    @doufenger 不需要一個一個添加啊, GeoIP 本身就是個 IP 庫,支持國家匹配的
    boter
        12
    boter  
       2017 年 4 月 2 日 via iPhone
    日本版权么
    coyove
        13
    coyove  
       2017 年 4 月 2 日
    @doufenger firewall 里面设置
    doufenger
        14
    doufenger  
    OP
       2017 年 4 月 2 日
    @coyove 那里只能用设置验证 不能把整个国家添加到黑名单
    doufenger
        15
    doufenger  
    OP
       2017 年 4 月 2 日
    @bobylive 谢谢,刚了解了。 我想在页面上判断访客,但是这样写了代码到页面判断也不行,可以请问是什么问题吗

    [mw_shl_code=php,true] //geophp 的位置
    include ('geoip.php');
    // GEOIP 数据库位置
    $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);

    $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
    geoip_close($gi);

    if($country=='jp') {exit;} else {;}[/mw_shl_code]
    misaka19000
        16
    misaka19000  
       2017 年 4 月 2 日 via Android
    @DoraJDJ 小林赛高
    des
        17
    des  
       2017 年 4 月 2 日 via Android
    浏览器不是有带支持语言吗?判断一下不行吗?
    zc666
        18
    zc666  
       2017 年 4 月 2 日 via iPhone
    认同楼上的观点,直接判断浏览器发送请求头的 Accept-Language 简单些。
    doufenger
        19
    doufenger  
    OP
       2017 年 4 月 2 日
    @des 好思路
    Showfom
        20
    Showfom  
    PRO
       2017 年 4 月 2 日 via iPhone
    光设置 IP 还不行 你得用 UA 把浏览器带 JA 语言的都屏蔽掉
    notgod
        21
    notgod  
       2017 年 4 月 2 日 via iPhone
    Felldeadbird
        22
    Felldeadbird  
       2017 年 4 月 2 日 via iPhone
    从 ip 判断,其次是语言环境。
    GG668v26Fd55CP5W
        23
    GG668v26Fd55CP5W  
       2017 年 4 月 2 日 via iPhone
    geoIP 之后,在 nginx 里直接就可以屏蔽了,不需要到网站应用层。
    herozhang
        24
    herozhang  
       2017 年 4 月 2 日 via iPhone
    要求手机注册短信验证码登录,不支持日本手机号即可
    kmdd33
        25
    kmdd33  
       2017 年 4 月 2 日 via iPad
    安装 csf 防火墙,参考我这篇文章: https://segmentfault.com/n/1330000008451475
    paulagent
        26
    paulagent  
       2017 年 4 月 3 日
    @fytriht 很多这种需求啊,购买版权的公司可能只买了一个国家的版权,所以只有这个国家的人才能看
    UnisandK
        27
    UnisandK  
       2017 年 4 月 3 日
    lalala2016
        28
    lalala2016  
       2017 年 4 月 3 日 via Android   ❤️ 1
    我觉得这问题挺简单的,用不着什么复杂的技术,用 cloudxns 把亚太组的日本访客解析到 fbi 的服务器上不就好了?😏
    lun10439547
        29
    lun10439547  
       2017 年 4 月 3 日
    dnspod 国际版!
    shuson
        30
    shuson  
       2017 年 4 月 3 日   ❤️ 1
    var isJapanese = prompt("日本人ですか?", "はい")
    if(isJapanese) {
    alert("滚")
    }
    Mazda
        31
    Mazda  
       2017 年 4 月 3 日 via iPhone
    再提供个思路,还可以判断时区,东九区就日本韩国用,在此基础上再加个语言判断,被禁的人都不知道怎么回事,封 ip 要绕过太简单
    julyclyde
        32
    julyclyde  
       2017 年 4 月 4 日
    @Mazda 浏览器会上报时区吗?
    Mazda
        33
    Mazda  
       2017 年 4 月 4 日 via iPhone
    @julyclyde 通过 js 获取
    julyclyde
        34
    julyclyde  
       2017 年 4 月 4 日
    @Mazda o ,这个我倒没想到。我对前端技术基本上一无所知……
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:58 · PVG 18:58 · LAX 02:58 · JFK 05:58
    ♥ Do have faith in what you're doing.