以前我不了解Google WiFi 定位时,一直对这技术嗤之以鼻,我想说从IP Address 哪里能定位到很精准,最多就是从一些公开的IP to GEO 资料库可以查询到这个IP 是在那个城市,是没办法精准定位的。
可是随着我发现没有GPS 卫星定位功能的iPod Touch 在打开WiFi 的情况下竟然可以在Google 地图上精准到我所在地的附近,这就引起了我很大的好奇心,到底这是怎么做到的?显然不可能是靠IP Address 去查询啊?
看了一些简体与繁体的文件,实在是觉得扯太远扯太多,还是没看到精髓处,所以直接从英文去查吧!果然查到了不少资料,也就了解Google WiFi 定位的原理了。在这之前先把几个名词给解释一下。
GPS卫星定位:靠的是环绕在地球四周的数颗卫星发送讯号到地面,交叉连集出所在地的方法。从十几年前开始出现汽车导航产品,就是使用这种技术。初次定位时常要花上一分钟以上的时间,这也是目前汽车导航和智慧型手机都有提供的定位方式。当有遮蔽物阻挡来自天空的讯号时就会发生定位的困难。
A-GPS定位:靠着事先下载星历资料,能够加速上述GPS定位的初次定位速度。由于一般车用导航机都不具备网路连线能力因此无法事先下载星历资料,所以也都不具备A-GPS定位。
手机基地台定位:靠的是侦测到的手机基地台(Cell Tower),比对资料库以及信号强度,交叉连集出所在地的方法。也因为要能够侦测手机基地台,所以一般车用导航机因不具备手机电话能力而无法 提供,几乎可以说手机基地台定位是智慧型手机或者能够插手机SIM卡的平板电脑才可以提供的功能。此法尚须有网路连线做资料库查询才能完成定位。
(附近手机基地台真多啊)
无线定位:靠的是侦测附近周围所有的无线网路基地台(无线接入点)的MAC地址(类似10-78-D2-93-58-C2这样的格式),去比对资料库中该MAC地址的座標,交叉連集出所在地。此法尚須有網路連線做資料庫查詢才能完成定位。
所以问题来了:这份无线网路基地台MAC地址对应到经纬度的资料库,是怎么建立起来的呢?
基础建设靠的是谷歌街景车。谷歌街景车除了拍下街景以外,另外还做了两件事情:
沿路搜集所有公开的无线网路MAC地址,与当时的经纬度一并记录。
根据拍下的街景来建立建筑物的3D模型资料。
(此效果截至本文刊出时仅能在谷歌Android手机上看到)
但資料庫一定會面臨過期與需要更新的問題,這時候全世界有在使用行動裝置谷歌+定位程式的人,等于是在不知不觉中帮忙做这件事情。更新的方法是当无线网络与手机基地台定位或GPS定位同时开启时,手持装置藉由手机基地台定位或GPS定位这两种方式可以获得目前的座标,再透过无线网络搜寻到附近所有的MAC地址,背后向谷歌的资料库做更新。(讯息来源:谷歌员工克里斯托弗的公开说法)
說穿了技術其實不難,但這麼龐大的資料庫,又能夠不痛不癢的號召每個行動裝置幫忙更新維護這份資料庫,大概也只有谷歌做得来了。
知道了原理之后,衍生出来的就是一些隐私权的问题。
首先就是谷歌搜集无线网络的MAC地址资讯合法吗?德国政府去年对此提出疑虑,而谷歌认为合法,两造后来怎么样了我懒得去追,反正从技术上来看,MAC地址在網路上要能夠被查詢到,那麼你與對方之間不能有路由器存在,一旦過了路由器那麼原始MAC地址就會被替換(詳細的原理這邊就不多說了),所以一般人雖然可以用很多方法去找出對方的IP地址,但对方的MAC地址就没办法了,中间经过的路由器太多啦!也就无法利用MAC地址去查對方身處何處。除非將木馬植入對方電腦來回報,且對方有在使用無線網路而且他附近的無線網路基地台有被登記到谷歌資料庫中,那才有機會找到對方所在地附近,但這難度又高條件又多,對警察來說還是用IP地址行文法院与电信业者来找精确的地址最快。
所以回头来说隐私权,我个人觉得应该是不会,且无线网络的MAC地址是屬於公開資訊,並非刻意用什麼非法手段才能取得。一般人就算探測到你的MAC地址,也不晓得你是谁或什么人在使用。
再来就是定位错误的问题。
搬家后其无线网路基地台也跟着移动,那么以无线网络定位來看自己身在何處,可能會呈現仍然在上一個住所的問題。針對這種因為資料庫尚未被更新而產生的定位錯誤問題,Google提供了一个无线网路定位错误的表格来申请回报,但一如一般谷歌的服務一樣,這表格並不能保證立即得到回應。想要加速更新資料庫,除了填寫這份表格以外,另外就是自己時常拿行動裝置開著无线+ GPS定位吧,这是刚才提过的资料库更新法,总有一天谷歌会因为你与行动装置的努力而修正过来的。😛
回头看我一开始以为谷歌的WiFi定位是靠着IP地址来定位,真是大错特错了啊!谷歌要的只是侦测到无线基地台的MAC地址就可以,也没有强调一定要与无线基地台连线,只要打开行动装置的无线网络功能,让谷歌定位可以藉由无线去搜集附近可侦测的MAC地址,接着透过3G行动上网或此时你真的有无线网络连线,就可以去向谷歌资料库查询这些MAC地址连集起来的可能位置,就这样完成定位了。