松盛号

松盛号

最新多种方式, 判断客户端IP是国内还是国外 5月旅游推荐国内还是国外

最新多种方式, 判断客户端IP是国内还是国外

1、前言

如何根据IP判断是国内的IP还是国外的IP呢?

应用场景大多是网站开发时中英文版本的自动判断。

相信大多数人肯定会推荐淘宝的免费API,但是目前已经无法访问,并且也很不稳定。

那么,问题来了,除了这些看起来不太靠谱的方法,还有其他实现方法或者第三方方法吗?

答案是当然有,付费的有,我们这里只讲一些免费第三方的方法和可以自己实现的方法。

我们的需求是只需要判断IP是国内外,而不需要判断IP的具体城市,所以问题变得简单了许多。2、实现方法2.1、第三方库

比较强大的第三库,不得不推荐MaxMind的GeoIP®DatabasesandServices,他们有自己的IP库,提供各种准确的接口,付费的可以根据定位很准确,不付费的只可以模糊定位到国家,不过已经符合我们的需求。

通过这个免费的javascriptAPI,就可以判断当前IP是否是国内外,因为我开代理测试的,所以显示当前IP是新加坡。

MaxMind的其他实现方式,有的是需要付费,按次收费,获取到的数据也会更加详细更加准确。2.2、自己实现

上一个方式是借助第三方免费API判断IP所在国家,那么如果是我们做,该怎么做呢?

我们只需要判断IP所在国家是国内外即可。

首先我们需要获取IP库,通过IP库判断;

ip库在apnic的官方网站上可以下载

那么我们该如何处理呢?总体上分为以下几个部分:

1、使用脚本定期从apnic``下载IP库,筛选出所有apnic|CN|ipv4,生成china_ip.txt其实这里如果只判断CN不太准确,HK、MO和TW被apnic分成单独的,他们都是中国的领土不可被分割,不过我们这里不增加这个逻辑了,所以确切这个文本内的IP是中国大陆的IP;

2、基于java解析生成的china_ip.txt,这样的话相比解析全部IP,解析的成本就低了不少;

3、解析IP列表,存储到Redis,定时N小时过期,保证实时IP库的更新;

4、根据IP到Redis中存储的数据做判断,如果在各个地址段范围内,表示是国内ip,否则是国外ip;

5、判断过的IP也会保存在Redis,避免重复的判断。2.2.1定时更新下载IP库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。

上一篇 没有了

下一篇没有了