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

现在的 app 是如何通过运营商直接获取当前手机号的?

  •  
  •   morethansean · 2019-06-14 18:45:00 +08:00 · 7587 次点击
    这是一个创建于 1749 天前的主题,其中的信息可能已经有所发展或是发生改变。
    下了个快狗打车的 app,刚打开发现自动填入了我的手机号,然后还可以一键登录。

    有点好奇需要什么样的资质可以向运营商申请这样的功能?

    另外,即便我连着 WiFi 为啥也可以获取到这些信息?原理是啥有没有老哥介绍一下哇?


    22 条回复    2020-12-29 19:22:39 +08:00
    ladypxy
        1
    ladypxy  
       2019-06-14 18:55:41 +08:00 via iPhone
    苹果获取不到,安卓随便获取
    morethansean
        2
    morethansean  
    OP
       2019-06-14 19:03:11 +08:00   ❤️ 1
    @ladypxy #1
    Android 能不能获取我就不说了...我这截图就是 iOS 啊亲...
    cb192c3
        3
    cb192c3  
       2019-06-14 19:05:57 +08:00
    移动联通 都有提供 sdk
    hihipp
        4
    hihipp  
       2019-06-14 19:06:52 +08:00 via iPhone
    很早就有了,三家运营商都有。

    可看一下这里
    https://www.cmpassport.com/dev/developer/h5/index.html
    Jirajine
        5
    Jirajine  
       2019-06-14 19:10:06 +08:00 via Android
    同想知道原理。按理说 Android 应该是拿 IMEI 像运营商提供的接口查询,iOS 应该实现不了。
    尤其在使用 WiFi 的情况下,应该没有可能关联到本机运营商信息的。
    morethansean
        6
    morethansean  
    OP
       2019-06-14 19:13:48 +08:00
    @cb192c3 #3
    这样的 sdk 通过什么实现的呢?
    lizhuoli
        7
    lizhuoli  
       2019-06-14 19:18:16 +08:00 via iPhone
    @morethansean 走的是运营商服务信道,你要是开发者的话,自己直接搜索 Core Telephony 的相关方法
    lizhuoli
        8
    lizhuoli  
       2019-06-14 19:19:10 +08:00 via iPhone
    @lizhuoli 只能是每个运营商 SDK 都接入一份(三份),电信取号 SDK,联通 SDK,移动不知道有没有
    cb192c3
        9
    cb192c3  
       2019-06-14 19:19:46 +08:00
    @morethansean 电信有个测宽带的服务,打开那个页面连宽带账号都会显示出来,你猜是怎么实现的
    lnim
        10
    lnim  
       2019-06-14 19:28:50 +08:00 via iPhone
    运营商有 sdk 的, 还分免费版本 付费版本
    morethansean
        11
    morethansean  
    OP
       2019-06-14 19:31:10 +08:00
    @lizhuoli 果然,搜了下这个 API,把应用的蜂窝权限关掉后这个功能就不行了……不知道 Android 上有没有这么细粒度的权限控制……
    Jirajine
        12
    Jirajine  
       2019-06-14 19:33:58 +08:00 via Android
    @morethansean @lizhuoli
    我测试了一下。
    在我 Android,xposed hook 所有网络数据,电话信息的 API 情况下安装这个应用完全没有被读取到电话号码。
    插了下资料,两个系统都有对运营商相关的 API,倒是并没有用什么无法阻止的骚操作获取。对 iOS 不了解,我以为 iOS 没有提供这种渠道的。
    值得一提的是,看 LZ 描述并没有任何授权提示就被取得了?这样看来 iOS 的安全性有点值得怀疑了。
    morethansean
        13
    morethansean  
    OP
       2019-06-14 19:53:29 +08:00   ❤️ 1
    @Jirajine #12
    看我上一条评论,至少国行 iOS 应用初次启动时会弹出一个框,询问是否允许 app 访问移动和 WiFi 网络,正常情况下为了 app 能联网都是能通过的,但只要允许了移动网络,app 就能通过 Core Telephony 的相关 API 获取 carrier 的网络等信息了,这个时候就能通过运营商给的 sdk 获取到手机相关信息包括唯一识别码了。
    Jirajine
        14
    Jirajine  
       2019-06-14 20:02:30 +08:00 via Android
    @morethansean 这就有点坑了。iOS 访问 LTE 网卡还是分应用的?这样的话简直比 Android 滥用 IMEI 更严重了。Android 只是搞拒绝就闪退,还能欺骗。这个和必须权限绑定一起的话,普及起来简直危害太大
    seabirds
        15
    seabirds  
       2019-06-14 21:19:12 +08:00 via iPhone
    @Jirajine 主要问题在运营商这边
    xshwy
        16
    xshwy  
       2019-06-15 02:22:16 +08:00 via iPhone
    ios 也可以了……抖音可以用本机手机号登陆
    honeycomb
        17
    honeycomb  
       2019-06-15 13:06:06 +08:00 via Android
    @morethansean 截图上已经说了
    honeycomb
        18
    honeycomb  
       2019-06-15 13:07:32 +08:00 via Android
    @morethansean 这个数据是直接从运营商获取的(只要是通过 cellular 的线路),期间不需要预先获得手机方面的识别码或者与电话有关的组件。
    lnim
        19
    lnim  
       2019-06-17 17:16:58 +08:00
    UchihaJay
        20
    UchihaJay  
       2019-12-11 14:26:52 +08:00
    安卓的话是从 SIM 卡那获取的 ,移动可以读取 . 至于怎么获取的我就不清楚了.
    lxk11153
        21
    lxk11153  
       2020-05-11 20:49:42 +08:00
    安卓获得的手机号格式是怎样的?"+86 18966665444" 还是 "+8618966665444" 还是 "18966665444"
    DingSoung
        22
    DingSoung  
       2020-12-29 19:22:39 +08:00
    @ladypxy Android 并不是随便取,会有提示。

    只不过按照国内的流氓 App 策略,不给就不让用,是一回事
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   956 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 21:10 · PVG 05:10 · LAX 14:10 · JFK 17:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.