Tom*_*mas 1 android android-wifi
有任何想法吗?
WiFis无法可靠地将自己标识为移动热点.基本上,一个热点没有告诉你它是如何连接到互联网的,所以没有一种干净的说法.热点的上游连接可能是以下任何内容:
(这里描述如何检测你是否连接到后三者之一).
Radiobeacon(根据AGPLv3许可)有一种检测移动热点的方法.(这里的想法有些不同,因为应用程序地理配置热点用于位置跟踪,因此需要过滤掉位置可能会发生变化的热点 - 但这些热点往往是在移动数据连接上,所以你应该受到好评来自他们的比率.)
这是Radiobeacon采用的两种方法之一.检查SSID以查找移动热点中常用的模式(Android,移动设备,iPhone等字符串).当然,任何人都可以在非移动热点中使用它(人们确实对其SSID名称有所了解),因此需要考虑错误接受和错误拒绝率.
Radiobeacon采用的另一种方法:查看BSSID(热点的硬件地址).BSSID是该形式的十六进制字符串00:60:0d:c0:ff:ee,其中前半部分标识芯片的制造商.一些芯片主要用于移动设备,而其他芯片用于固定设备,因此一些前缀表示移动热点.一些前缀已经可以帮助您过滤掉所有iPhone.尽管如此,在移动设备和固定设备中都可能存在前缀,我们甚至没有谈论将移动数据连接作为其上游链路的家用路由器.
对于这两个示例,请访问Radiobeacon链接以获取包含黑名单的代码.它们是通过反复试验获得的,可能远未完成甚至包含错误 - 但它们可以作为起点.
作为第三种方法,您还可以尝试通过Mozilla Location Service等服务查找BSSID的地理坐标.还有一些其他较小的提供商,以及谷歌和苹果提供的服务,但最后两个可能不合法用于此目的.
虽然我真的不知道这些服务如何处理移动WiFis的细节,但他们需要采取一些预防措施来防止使用这些服务来建立用户的位置.如果它们过于频繁地移动,或者给它们一个低置信区间,或者只是将它们保存在数据库中并将其留给消费者来决定用于建立其位置的BSSID位置元组,则可以从数据库中消除热点.
如果他们选择前两种方法中的一种,那么获得一个高信度的位置(高达2000米,这是WiFi的典型范围)就表明你使用固定的WiFi.如果他们采用最后一种方法,您还需要通过GPS或单元格查找来确定您的位置.如果这远离WiFi的位置(超过4000米),则表示移动热点.
您可以研究的第四种方法是确定您的外部IP地址(不是分配给您的设备的地址,而是您的通信对等方将视为原始Internet地址的地址),并将其与Internet提供商列表进行匹配.你需要研究一下:
同样,运营商有可能为移动和固定数据客户使用相同的IP地址池.
这里提到的所有方法都可能产生假阴性或误报.您可能希望将所有四种方法的结果与您在移动数据连接上的可能性相结合,并避免在可能性超过某个阈值时移动大量数据.
| 归档时间: |
|
| 查看次数: |
1476 次 |
| 最近记录: |