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

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

  •  
  •   doufenger · 2017-04-02 17:55:23 +08:00 · 5696 次点击
    这是一个创建于 2796 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  2017-04-02 19:34:27 +08:00
    楼下介绍了 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-04-03 20:13:35 +08:00
    谢谢大家提供的思路 已经通过禁 IP 禁日语浏览器解决了
    34 条回复    2017-04-04 11:36:51 +08:00
    a342191555
        1
    a342191555  
       2017-04-02 18:06:31 +08:00 via iPhone
    nginx geoip module ?
    doufenger
        2
    doufenger  
    OP
       2017-04-02 18:07:25 +08:00
    @a342191555 = =。。这个好像要把日本 IP 一个个添加
    a342191555
        3
    a342191555  
       2017-04-02 18:08:59 +08:00 via iPhone
    coyove
        4
    coyove  
       2017-04-02 18:10:24 +08:00
    如果你愿意用 cloudflare 的话。。。
    GoBeyond
        5
    GoBeyond  
       2017-04-02 18:10:40 +08:00 via Android
    nginx geoip
    自行在后端程序里前置判断访客 ip
    直接在防火墙侧( Incapsula 支持,其他的不确定) ban 掉对应国家
    etc.
    fytriht
        6
    fytriht  
       2017-04-02 18:10:46 +08:00
    好奇怎么会有这样的需求...
    GoldenPillow
        7
    GoldenPillow  
       2017-04-02 18:12:42 +08:00
    默默求会员
    DoraJDJ
        8
    DoraJDJ  
       2017-04-02 18:16:38 +08:00
    可以,很爱国。
    最简单的用 Nginx 的 GeoIP
    KingBillSame
        9
    KingBillSame  
       2017-04-02 18:18:50 +08:00 via Android
    如果挂了全局为皮嗯不就进不去了
    doufenger
        10
    doufenger  
    OP
       2017-04-02 18:19:15 +08:00
    @coyove cloudflare 怎么弄的 我用的就是
    bobylive
        11
    bobylive  
       2017-04-02 18:33:49 +08:00 via Android
    @doufenger 不需要一個一個添加啊, GeoIP 本身就是個 IP 庫,支持國家匹配的
    boter
        12
    boter  
       2017-04-02 18:42:54 +08:00 via iPhone
    日本版权么
    coyove
        13
    coyove  
       2017-04-02 18:47:13 +08:00
    @doufenger firewall 里面设置
    doufenger
        14
    doufenger  
    OP
       2017-04-02 19:14:12 +08:00
    @coyove 那里只能用设置验证 不能把整个国家添加到黑名单
    doufenger
        15
    doufenger  
    OP
       2017-04-02 19:32:51 +08:00
    @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-04-02 19:33:02 +08:00 via Android
    @DoraJDJ 小林赛高
    des
        17
    des  
       2017-04-02 19:57:28 +08:00 via Android
    浏览器不是有带支持语言吗?判断一下不行吗?
    zc666
        18
    zc666  
       2017-04-02 20:02:24 +08:00 via iPhone
    认同楼上的观点,直接判断浏览器发送请求头的 Accept-Language 简单些。
    doufenger
        19
    doufenger  
    OP
       2017-04-02 20:28:03 +08:00
    @des 好思路
    Showfom
        20
    Showfom  
       2017-04-02 20:47:07 +08:00 via iPhone
    光设置 IP 还不行 你得用 UA 把浏览器带 JA 语言的都屏蔽掉
    notgod
        21
    notgod  
       2017-04-02 21:24:37 +08:00 via iPhone
    Felldeadbird
        22
    Felldeadbird  
       2017-04-02 22:13:22 +08:00 via iPhone
    从 ip 判断,其次是语言环境。
    falcon05
        23
    falcon05  
       2017-04-02 22:29:12 +08:00 via iPhone
    geoIP 之后,在 nginx 里直接就可以屏蔽了,不需要到网站应用层。
    herozhang
        24
    herozhang  
       2017-04-02 22:43:27 +08:00 via iPhone
    要求手机注册短信验证码登录,不支持日本手机号即可
    kmdd33
        25
    kmdd33  
       2017-04-02 23:19:35 +08:00 via iPad
    安装 csf 防火墙,参考我这篇文章: https://segmentfault.com/n/1330000008451475
    paulagent
        26
    paulagent  
       2017-04-03 00:41:21 +08:00
    @fytriht 很多这种需求啊,购买版权的公司可能只买了一个国家的版权,所以只有这个国家的人才能看
    UnisandK
        27
    UnisandK  
       2017-04-03 01:01:01 +08:00
    lalala2016
        28
    lalala2016  
       2017-04-03 08:51:01 +08:00 via Android   ❤️ 1
    我觉得这问题挺简单的,用不着什么复杂的技术,用 cloudxns 把亚太组的日本访客解析到 fbi 的服务器上不就好了?😏
    lun10439547
        29
    lun10439547  
       2017-04-03 08:57:12 +08:00
    dnspod 国际版!
    shuson
        30
    shuson  
       2017-04-03 09:27:15 +08:00   ❤️ 1
    var isJapanese = prompt("日本人ですか?", "はい")
    if(isJapanese) {
    alert("滚")
    }
    Mazda
        31
    Mazda  
       2017-04-03 11:31:33 +08:00 via iPhone
    再提供个思路,还可以判断时区,东九区就日本韩国用,在此基础上再加个语言判断,被禁的人都不知道怎么回事,封 ip 要绕过太简单
    julyclyde
        32
    julyclyde  
       2017-04-04 09:47:34 +08:00
    @Mazda 浏览器会上报时区吗?
    Mazda
        33
    Mazda  
       2017-04-04 09:56:30 +08:00 via iPhone
    @julyclyde 通过 js 获取
    julyclyde
        34
    julyclyde  
       2017-04-04 11:36:51 +08:00
    @Mazda o ,这个我倒没想到。我对前端技术基本上一无所知……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1200 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:15 · PVG 07:15 · LAX 15:15 · JFK 18:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.