aidevs
V2EX  ›  问与答

如何通过一个网址,判断当前设备的网络类型( 3G wifi)?

  •  
  •   aidevs · Jun 1, 2016 · 3077 views
    This topic created in 3638 days ago, the information mentioned may be changed or developed.
    我能想到的是通过获得 IP (通过 IP 可以得知是电信、还是移动、联通的)
    还有没有其它办法?
    10 replies    2016-06-01 17:57:54 +08:00
    4679kun
        1
    4679kun  
       Jun 1, 2016 via Android   ❤️ 1
    ipip.net 实测能识别 3G
    loyd1234
        2
    loyd1234  
       Jun 1, 2016
    @4679kun 403
    4679kun
        3
    4679kun  
       Jun 1, 2016 via Android
    notgod
        4
    notgod  
       Jun 1, 2016
    首先
    前端是肯定无法判断的
    只能另想办法,能收集到的数据 就是 UA 和 IP 地址
    所以只能根据 IP 地址来判断设备网络类型

    基于 IP 数据库的准确性 这个判断准确性并不高
    因为 IPv4 地址已枯竭 经常出现分配给 A 省的 IP 跑 B 省去了
    分配给移动的网段和 IP 池 也会分配给部分 wifi 热点 在大城市这个问题尤其突出
    根据你的需求
    判断电信联通移动这种结果用处并不大

    结论 除非你有内部的 API 得到内部的 IP 池分配表
    否则基本不太现实
    BOYPT
        5
    BOYPT  
       Jun 1, 2016
    要是做微信里面浏览器的话 UA 里面有说现在是 Wifi 还是 3G
    newbieo0O
        6
    newbieo0O  
       Jun 1, 2016
    @notgod 不要太早下结论。 navigator.connection.type
    loading
        7
    loading  
       Jun 1, 2016 via Android
    我用长城宽带,根据 ip ,我一直在广州和天津…
    ys0290
        8
    ys0290  
       Jun 1, 2016 via iPhone
    然而手机上网都是要回归属地的,虽然我在外地,挨批依然在归属地
    notgod
        9
    notgod  
       Jun 1, 2016
    @newbieo0O
    也许我能力有限 如果对准确度要求高的 我是没方案

    你说的 navigator.connection.type ,这种 API 的标准 并不符合中国网络大环境

    主要的原因在于
    1. 各种换壳的浏览器 改的原版他妈都不认识 兼容性渣
    2. 越新的 W3C 标准 对旧浏览器支持太差 (国内 XP 用户还有很多)
    3. 原生接口使用的普及度 需要 IE/火狐 /Chrome 的共同支持才有能力普及和推动
    如果从商用产品方向考虑 这种目前基本属于鸡肋 根据以往的 W3C 标准从发布到成熟
    要 long time long time long time long time
    ncisoft
        10
    ncisoft  
       Jun 1, 2016 via Android
    借助智能 DNS 解析有多点接入的大厂域名?比如 dnspod 的移动解析 D+,可以试试
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5290 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 05:55 · PVG 13:55 · LAX 22:55 · JFK 01:55
    ♥ Do have faith in what you're doing.