B 站客户端是如何检测“当前网络可能是收费 WIFI(移动网络)”的?

2019-04-22 10:41:08 +08:00
 yksoft1ex
我觉得可能是检测机子 IP 段,比如 192.168.43.x (安卓的网络共享)、172.20.10.x ( iOS 的网络共享)等。使用专用的 mifi 之类设备,就检测不出了。
5659 次点击
所在节点    问与答
21 条回复
leafre
2019-04-22 11:11:12 +08:00
我觉得跟你觉得一样
Tianao
2019-04-22 11:13:43 +08:00
我猜是根据 SSID 的个人热点属性。
binux
2019-04-22 11:14:56 +08:00
因为连上 wifi 的时候,wifi 就会告诉你,它自己是个无线热点( portable hotspot )。
yksoft1ex
2019-04-22 11:15:20 +08:00
@Tianao 这个数据在 Android 的 Java 层里能获得?
gramyang
2019-04-22 11:17:13 +08:00
你问这个问题肯定是没有 google 过的,安卓自带接口可以检查当前网络是 2g 还是 3g 还是 4g 还是 wifi
passerbytiny
2019-04-22 11:17:33 +08:00
这东西难道不是系统提供的吗,而且还很有可能不是主动检测而是事件监听。

而且也不一定要客户端检测,服务器也可以检测到之后再推送给客户端。
lion9527
2019-04-22 11:17:48 +08:00
我感觉这个属于自作聪明的过度设计,也没有关闭的选项,非常恶心人。
yksoft1ex
2019-04-22 11:18:32 +08:00
@Tianao 好像还真能,3x0 的奇酷 UI 的 SystemUI 就能显示 Wifi 属于安卓和 iOS 热点。但是奇怪的是,iOS 能识别 iOS 共享的热点,却不识别安卓共享出的热点。
@binux 然后如果是安卓的话如何修改其分享出热点的 IP、DHCP 的 IP 池,以及使其不声明自己是热点?
shehuizhuyi
2019-04-22 11:20:30 +08:00
@gramyang 是连接 wifi 之后 提示可能是收费 wifi
binux
2019-04-22 11:23:19 +08:00
@yksoft1ex #7 反正 MIUI 是可以设置 device identification 的,还有 iOS 当然能识别安卓的共享热点。
yksoft1ex
2019-04-22 11:24:00 +08:00
@binux 至少 SpringBoard 上,安卓共享的热点是不会显示那个回形针标志的。
yksoft1ex
2019-04-22 11:27:38 +08:00
@binux ConnectivityManager.isActiveNetworkMetered() 能获得当前连接的热点是否被用户自己设置为计费 Wifi,但没说这个属性能被自动检测出来。
whileFalse
2019-04-22 12:41:08 +08:00
如果能获得路由器 mac 地址,可以根据这些 mac 地址反查对应的设备提供商。
Love4Taylor
2019-04-22 13:06:23 +08:00
Android 本身是有自动识别计费 WiFi 功能的. 或许看看 AOSP 相关部分?
0x4F5DA2
2019-04-22 13:06:48 +08:00
安卓 SDK 里有接口,网络变动还有事件可以监听
yksoft1ex
2019-04-22 13:24:44 +08:00
@whileFalse 这个要求定位权限吧?另外,很多山寨的安卓机里面各种信息包括 IMEI、MAC 都是可以改的。

@0x4F5DA2
@Love4Taylor ConnectivityManager.isActiveNetworkMetered() 能获得当前连接的热点是否被用户自己设置为计费 Wifi,但没说这个属性能被系统自动检测出来。
nanaw
2019-04-22 13:36:18 +08:00
@whileFalse 说到 mac 地址,都 9102 年了 Android P 应用居然还可以不需要权限取得本机 mac,真不知道 Google 是怎么想的
phy25
2019-04-23 03:17:17 +08:00
nanaw
2019-04-23 06:21:55 +08:00
@phy25 装个 devcheck 自己看能不能获取到。 权限接口封过但 Java 层还能获取
catalina
2019-04-23 11:02:48 +08:00
不不不,不太对,并不是读取的“是 wifi 还是 xg 还是移动热点”。
我在一个收费 wifi(不是蜂窝数据这类的,是我们学校的公共热点,每个月流量有限,ip172.20.18.0/24)下使用 b 站,它还是会弹出来“可能是收费 wifi ”。
appops 检测到了它使用了 wifi_scan 权限。但禁止后重启 b 站 app,它还是提示了,所以也不是这个。
话说,番剧页面就没有这个提示哎?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/557407

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX