手机号归属地查询实例

简介: 手机号归属地查询实例


背景

最近有个需求,需要使用查询手机号归属地,进行客户地区统计分析。

思路

  • 方案1
    首先想到的是找第三方的api接口,直接根据手机号调用. 网上有很多,比如360的。
    弊端: 这些有的收费的,有的个数限制的,而且批量查询调的确是很费劲的。
  • 方案2
    想到能不能找到一个手机号归属地的数据库字典,比如excel等。我们保存到自己的数据库或服务器中,去一行行解析呢。的确网上也是有这种方案的。
    弊端: 自己维护数据库字典,自己写的查询效率不知如何。
  • 方案3:
    感谢大神们的分享精神,找到一个开源项目,他直接给把字典和查询给封装成了jar包,打到了maven中央仓库,我们只要引用jar就可以了。顺着这个思路,找到了网上有很多实现,都是基于那位大神的项目做得封装。比如java 的,go语言的,python等。
    https://gitee.com/oss/phonedata?_from=gitee_search

实战

本人就基于第三种方案实现。具体看下面的方式:

1.引入jar包

<dependency>
   <groupId>me.ihxq.projects</groupId>
   <artifactId>phone-number-geo</artifactId>
   <version>1.0.9-202108</version>
</dependency>

2.测试使用

@Test
    public void testPhone(){
        PhoneNumberLookup phoneNumberLookup1 = new PhoneNumberLookup();
        String province = phoneNumberLookup1.lookup("13565403278")
                .map(PhoneNumberInfo::getAttribution)
                .map(Attribution::getProvince)
                .orElse("未知");
        log.info(province);
        PhoneNumberLookup phoneNumberLookup = new PhoneNumberLookup();
        PhoneNumberInfo found = phoneNumberLookup.lookup("13565403278").orElseThrow(RuntimeException::new);
        found.getNumber(); // 18798896741
        found.getAttribution().getProvince(); // 贵州
        found.getAttribution().getCity(); // 贵阳
        found.getAttribution().getZipCode(); // 550000
        found.getAttribution().getAreaCode(); // 0851
        found.getIsp(); // ISP.CHINA_MOBILE
        log.info(JSON.toJSONString(found));
    }

运行结果如下:

3.项目中使用

比如我有个小需求,根据用户登录过app的手机号,进行数据大屏展示。就可以直接这样用。

/** 
     * 1.查询当日登录过用户
     * 2.基于当日登录用户的手机号,获取手机号对应的归属地
     * 返回数据结果
     */
    @Override
    public  List<PhoneProvinceDTO>  statisticsUserMap() {
        //获取今日日期
        String day = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        //获取今日登陆过的 所有用户手机号
        List<String> todayLoginUserPhones = this.baseMapper.getTodayLoginUserPhones(day);
        List<PhoneProvinceDTO> list = new ArrayList<>();
        todayLoginUserPhones.parallelStream().forEach(item -> {
            PhoneProvinceDTO phoneProvinceDTO = new PhoneProvinceDTO();
            //调用手机号归属地的工具方法
            PhoneNumberLookup phoneNumberLookup = new PhoneNumberLookup();
            String province = phoneNumberLookup.lookup(item)
                    .map(PhoneNumberInfo::getAttribution)
                    .map(Attribution::getProvince)
                    .orElse("未知");
            phoneProvinceDTO.setProvince(province);
            list.add(phoneProvinceDTO);
        });
        if (CollectionUtils.isEmpty(list)){
            return Collections.emptyList();
        }
        //分组统计今日登陆过的 省份人数
        Map<String, List<PhoneProvinceDTO>> groupMap = list.parallelStream().collect(Collectors.groupingBy(PhoneProvinceDTO::getProvince));
        //定义返回的集合对象
        List<PhoneProvinceDTO> resultList = new ArrayList<>();
        groupMap.forEach((k, v) -> {
            PhoneProvinceDTO dto = new PhoneProvinceDTO();
            int size = v.size();
            dto.setProvince(k);
            dto.setCount(size);
            resultList.add(dto);
        });
        if (CollectionUtils.isEmpty(resultList)){
            return Collections.emptyList();
        }
       //重写了Comparable 进行倒序排序
        Collections.sort(resultList);
        return resultList;
    }

这样就直接拿到了所有的登录人省份,进行数据分析了!!!

特别提醒

目前:这个手机号库是21年8月份更新,如果后续更新了,跟着替换下jar的版本即可。如果等不及,也可以继续找最新的手机号库源,定时同步,自己封装sprinboot-start奥,然后调用奥。大功告成,完!

相关文章
|
6月前
分享:2秒快速查询40万手机号码归属地,批量手机号码归属地查询可以导出excel表格,WPS表格查询手机号码归属地怎么操作,批量手机号码归属地批量查询软件,批量号码查询按省份和城市分类,按运移动号码电信号码联通号码分类整理
本文介绍了如何批量快速查询手机号码归属地并进行分类。首先,通过提供的百度网盘或腾讯云盘链接下载免费查询软件。其次,开启软件,启用复制粘贴功能,直接粘贴号码列表并选择高速查询。软件能在极短时间内(如1.76秒内)完成40多万个号码的查询,结果包括归属地、运营商、邮箱和区号,且数据准确。之后,可直接导出数据至表格,若数据超过100万,可按省份、城市及运营商分类导出。文章还附带了操作动画演示,展示全程流畅的处理大量手机号码归属地查询的过程。
320 0
分享:2秒快速查询40万手机号码归属地,批量手机号码归属地查询可以导出excel表格,WPS表格查询手机号码归属地怎么操作,批量手机号码归属地批量查询软件,批量号码查询按省份和城市分类,按运移动号码电信号码联通号码分类整理
|
6月前
|
C# 索引
C# | 【完全开源】手机号码归属地查询,一秒内百万次查询
这个开源项目是一个.NET库,可以通过手机号码获取号码归属地信息,包括运营商、国家、省份、城市、邮政编码、区号等信息。 该库加载了一个包含46万条数据的“中国手机号归属地信息”数据集,并实现了高速查询。在我的7年老笔记本上执行一百万次查询耗时不足一秒。
309 0
|
数据挖掘 API
手机在网状态API 查询功能分析
手机在网状态API 查询功能分析
174 1
|
JavaScript 前端开发 搜索推荐
HTML+JS 实现手机号码归属地查询功能
HTML+JS 实现手机号码归属地查询功能
314 0
HTML+JS 实现手机号码归属地查询功能
|
XML JSON 搜索推荐
一文轻松掌握手机号码归属地的的应用技巧
手机号码归属地API为我们提供了一种快速、准确获取手机号码归属地信息的工具。它在电信、电商、市场营销和金融等领域具有广泛的应用前景。随着技术的不断进步,手机号码归属地API将为我们带来更多便利和实用性,为我们的生活和工作带来更多的便利和效率。
284 0
|
开发工具 Android开发 开发者
Appium 移动端自动化 - Android SDK连接安卓手机,adb连接一加8手机USB调试实例演示,连接一加8手机不显示USB调试选项问题排查
Appium 移动端自动化 - Android SDK连接安卓手机,adb连接一加8手机USB调试实例演示,连接一加8手机不显示USB调试选项问题排查
487 0
|
开发工具 Android开发
Appium 移动端自动化 - Android SDK的安装与配置,使用安卓SDK连接手机实例演示
Appium 移动端自动化 - Android SDK的安装与配置,使用安卓SDK连接手机实例演示
183 0
|
5月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
4706 2
|
6月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
199 0
|
6月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
107 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用