V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
doufenger
V2EX  ›  问与答

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

  •  
  •   doufenger · Apr 2, 2017 · 6221 views
    This topic created in 3322 days ago, the information mentioned may be changed or developed.

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

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