路由器默認(rèn)都會(huì)進(jìn)行SSID廣播(除非用戶手動(dòng)配置關(guān)閉該功能),在廣播幀包含了該路由器的MAC地址弄砍。此時(shí)需要采集裝置進(jìn)行MAC信息采集和信號(hào)強(qiáng)度信息采集隔箍,并上傳到服務(wù)器,經(jīng)過(guò)服務(wù)器的計(jì)算梅尤,保存為“MAC-經(jīng)緯度”的映射。例如谷歌的街景采集車(chē)岩调,曾經(jīng)因隱私問(wèn)題在德國(guó)被定性為非法巷燥。在國(guó)內(nèi),通過(guò)用戶智能手機(jī)應(yīng)用的后門(mén)功能采集号枕,則是數(shù)據(jù)公司獲取“MAC-經(jīng)緯度”映射信息的主要途徑缰揪。一般情況下,用戶周邊會(huì)有多個(gè)WIFI信號(hào)源葱淳,此時(shí)手機(jī)會(huì)默默地解析出所有WIFI的MAC地址钝腺,如果某些WIFI的信息在數(shù)據(jù)庫(kù)中已經(jīng)存在,則可以根據(jù)信號(hào)強(qiáng)度赞厕,推導(dǎo)出未知WIFI的經(jīng)緯度艳狐。如果沒(méi)有已知WIFI,而手機(jī)碰巧開(kāi)著GPS皿桑,則也能完成數(shù)據(jù)采集僵驰。用戶在不知情的情況下為地圖公司搜集了所有的數(shù)據(jù), 這樣就建立了一個(gè)龐大的熱點(diǎn)位置數(shù)據(jù)庫(kù)唁毒,這個(gè)數(shù)據(jù)庫(kù)是對(duì)用戶進(jìn)行定位的關(guān)鍵
原理
- 每一個(gè)無(wú)線AP都有一個(gè)全球唯一的MAC地址,并且一般來(lái)說(shuō)無(wú)線AP在一段時(shí)間內(nèi)是不會(huì)移動(dòng)
- 設(shè)備在開(kāi)啟Wi-Fi的情況下,即可掃描并收集周?chē)腁P信號(hào),無(wú)論是否加密,是否已連接蒜茴,甚至信號(hào)強(qiáng)度不足以顯示在無(wú)線信號(hào)列表中,都可以獲取到AP廣播出來(lái)的MAC地址
- 設(shè)備將這些能夠標(biāo)示AP的數(shù)據(jù)發(fā)送到位置服務(wù)器,服務(wù)器檢索出每一個(gè)AP的地理位置,并結(jié)合每個(gè)信號(hào)的強(qiáng)弱程度,計(jì)算出設(shè)備的地理位置并返回到用戶設(shè)備
- 位置服務(wù)商會(huì)不斷更新、補(bǔ)充自己的數(shù)據(jù)庫(kù),以保證數(shù)據(jù)的準(zhǔn)確性,畢竟無(wú)線AP不像基站塔那樣基本100%不會(huì)移動(dòng)
位置服務(wù)數(shù)據(jù)庫(kù)的搭建
主動(dòng)采集
谷歌浆西、Skyhook兩家位置服務(wù)提供商會(huì)主動(dòng)搜集Wi-Fi等熱點(diǎn)的位置信息粉私。Google的街景拍攝車(chē)有一個(gè)重要的功能就是采集沿途的無(wú)線信號(hào),并打上通過(guò)GPS定位出的坐標(biāo)回傳至服務(wù)器。Skyhook在美國(guó)及歐洲一些國(guó)家也是直接開(kāi)著信號(hào)采集車(chē)采集AP和基站的信號(hào)數(shù)據(jù)
用戶提交
Android手機(jī)用戶在開(kāi)啟”使用無(wú)線網(wǎng)絡(luò)定位”時(shí)會(huì)提示是否允許使用Google的定位服務(wù)近零,如果允許诺核,用戶的位置信息就被谷歌收集到抄肖。iPhone則會(huì)自動(dòng)收集Wi-Fi的MAC地址、GPS位置信息窖杀、運(yùn)營(yíng)商基站編碼等漓摩,并發(fā)送給蘋(píng)果公司的服務(wù)器
如果關(guān)閉GPS,而WIFI模塊保持開(kāi)啟入客,手機(jī)會(huì)讀取周邊所有WIFI信號(hào)的MAC地址和信號(hào)強(qiáng)度管毙,并上傳至某公司(通常是地圖供應(yīng)商)的服務(wù)器,服務(wù)器查詢并計(jì)算后會(huì)返回經(jīng)緯度桌硫。WIFI的覆蓋范圍一般只在50米內(nèi)夭咬,因此定位精度非常接近衛(wèi)星定位系統(tǒng)
如果WIFI模塊也關(guān)閉了,就只能通過(guò)基站(蜂窩網(wǎng)絡(luò))了铆隘。此時(shí)手機(jī)會(huì)接收到基站的小區(qū)ID卓舵,上傳至服務(wù)器查詢,服務(wù)器同樣返回經(jīng)緯度膀钠。但此時(shí)精度較差掏湾,誤差一般在100以上,僅憑信號(hào)強(qiáng)度很難計(jì)算出精確位置
定位過(guò)程
通過(guò)采集和用戶設(shè)備上傳獲取WiFi的位置信息
此時(shí)無(wú)論設(shè)備有沒(méi)有連接WiFi肿嘲,只要打開(kāi)了WiFi設(shè)置忘巧,設(shè)備就會(huì)自動(dòng)掃描附近存在的WiFi信號(hào),如果掃描出來(lái)那么設(shè)備就能知道WiFi的MAC地址
此時(shí)如果設(shè)備打開(kāi)了GPS睦刃,那么采集方的數(shù)據(jù)庫(kù)中就會(huì)增加一條數(shù)據(jù),該數(shù)據(jù)是通過(guò)GPS得到的設(shè)備的坐標(biāo)十酣,并知道在一定范圍內(nèi)有WiFi的位置涩拙,當(dāng)該WiFi被多次采集后,通過(guò)算法算尺來(lái)的坐標(biāo)就更精準(zhǔn)
確定設(shè)備與WiFi的距離
Wi-Fi信號(hào)是電磁波耸采,其信號(hào)強(qiáng)度會(huì)隨著傳播距離的增加而衰減
當(dāng)設(shè)備連接上某WiFi時(shí)兴泥,設(shè)備的系統(tǒng)會(huì)記錄能夠捕獲的WiFi信號(hào)強(qiáng)度(RSSI)。信號(hào)會(huì)隨著距離衰減虾宇,通過(guò)RSSI=a+b*log(d)的理想化模型便可以計(jì)算出設(shè)備距離路由器的距離 d搓彻。但是理想化模型終究是理想化模型,無(wú)線信號(hào)因?yàn)楦蓴_嘱朽、反射等原因旭贬,計(jì)算出的距離其實(shí)并不太準(zhǔn)確
算法推斷出設(shè)備的位置
- 三角定位法
三角定位算法就是以WiFi 的坐標(biāo)為圓心畫(huà)圓,圓的半徑是設(shè)備與熱點(diǎn)之間的距離搪泳,多圓重疊處可能是設(shè)備的位置
缺點(diǎn):定位結(jié)果不精準(zhǔn)稀轨。因?yàn)閃iFi 的位置和設(shè)備距離WiFi 的長(zhǎng)度都是推算出的存在誤差 - 指紋定位算法
指紋算法是指手機(jī)會(huì)掃描周?chē)械腤iFi。這時(shí)所有能采集到的MAC地址與之前設(shè)備上記錄的數(shù)據(jù)進(jìn)行比對(duì)岸军,匹配之前已采集到的指紋奋刽,那么可以認(rèn)為此時(shí)的坐標(biāo)是指紋指向的坐標(biāo)
缺點(diǎn):采集量需要非常大瓦侮;對(duì)服務(wù)端性能和數(shù)據(jù)存儲(chǔ)要求高;Wi-Fi不密集的地方佣谐,定位結(jié)果不理想
防止被定位
最直接的辦法是關(guān)掉手機(jī)系統(tǒng)中的位置服務(wù)選項(xiàng)肚吏,以避免他人看到你的位置信息
如果要杜絕位置服務(wù)商獲取數(shù)據(jù),用戶需要不連接任何Wi-Fi狭魂,并且不使用任何相關(guān)的位置服務(wù)罚攀。可以使用某些工具趁蕊,例如谷歌曾發(fā)布過(guò)一款選擇退出工具坞生,讓無(wú)線路由器用戶有效阻止谷歌搜集他們的數(shù)據(jù)