為何 IP 地理定位的城市準確度有限
IP 地理定位的城市準確度有限,是因為 IP 位址記錄的是網路登記與路由的所在,而不是裝置實際所處的位置,因此國家層級的答案通常可靠,城市層級的答案則只是盡力而為的估計。了解這項差異,能讓你判斷哪些決策可以放心交由 IP 查詢來驅動。
為何國家可靠而城市不然
IP 位址空間是以階層方式配發的。區域網際網路登記機構將區塊交給組織,而這些組織在配發紀錄中登記國家。路由則增加了第二個獨立的見證者:在 BGP 中宣告某個區塊的網路,可由其 ASN 識別。兩個來源通常在國家上一致,因為大型網路在明確的國家範圍內營運,區塊也很少變更國家。這就是為何國家是大多數服務大部分時間都能判斷正確的欄位。但它仍不完美,因為登記國家可能與基礎設施所在地不同,跨國企業也可能將區塊登記在總部所在國,卻在其他地方使用。ASN 查詢會顯示位址背後網路的擁有者與登記國家,有助於推敲這些情況。
城市則是另一種性質的主張。沒有任何登記機構公布位址在何處使用,所以每個城市值都來自推論:登記機構的提示、延遲測量、使用者提交的更正,以及結合這些的商業或開放資料集。每種方法都有失效模式,而推論對於密集地區的固定寬頻最為有力,對其他所有情況則最弱。
哪些因素讓城市結果偏離目標
有幾種常見情況會切斷位址與地點之間的連結:
- 行動網路。來自許多裝置的流量從可能離手機很遠的閘道出口,而該位址可能由數千名用戶共用,因此顯示的城市往往是閘道所在的區域。
- 集中式路由。網際網路服務供應商可能將整個區域的流量經由單一接入點,導致數個城鎮的使用者都顯示在同一個城市。
- VPN、Proxy 與 Tor。可見的位址屬於出口伺服器,依設計它與使用者不在同一個地方。
- 雲端與主機代管位址。資料中心裡的伺服器就在資料中心所在之處,與應用程式的受眾無關。
- 重新配發的區塊。區塊在供應商與地區之間移轉的速度,快過位置資料被更正的速度,因此紀錄會過時。
- IPv6。較新的位址空間,其涵蓋範圍與更正通常較薄弱;我們在 IPv6 地理定位準確度中對此有所說明。
商業資料庫與免費資料庫面臨相同的根本問題,因為它們都是根據間接證據在估計。供應商之間的差異是真實存在的,但那只是程度上的差異。當兩家供應商對某個城市意見不一時,兩者都不一定是對的。
圍繞落差進行設計
實用的規則是,讓決策的精細程度與訊號的精細程度相匹配。國家適合用於內容授權、稅務與合規的預設值、語言預設值,以及粗略的路由。城市適合用於軟性的個人化,例如預先填入的天氣位置,使用者只需一次點擊就能更正。凡是答錯代價高昂的情況都不適合:不要根據城市的猜測就拒絕服務、斷言某人的地址,或做出法律上的判定。
利用網路情境來判斷該對城市信任到什麼程度。如果位址屬於資料中心或 VPN,那麼位置描述的是伺服器,ipto 的查詢以 is_datacenter、is_vpn 和 is_tor 標示這一點,VPN 與 Proxy 檢查工具會在結果頁面上顯示它們。如果 ASN 屬於行動電信業者,預期城市描述的是業者的閘道。公司查詢與 IP whois 頁面會顯示持有該區塊的組織,是檢驗某個位址屬於住宅、企業還是基礎設施的良好依據。
在產品端,請在精確度重要時詢問使用者。瀏覽器自身的地理定位權限是取得精確位置的正確工具,而使用者自行輸入的地址更好。ipto 的天氣與地點頁面遵循這種模式:它們先請求瀏覽器位置,只有在權限被拒絕時才退而使用大致的 IP 位置。請將 IP 估計值視為使用者可以覆寫的預設值。
使用 ipto 取得粗略位置
ipto 的 IP 查詢會回傳 country、city、ASN、組織以及上述旗標,資料集每日更新,威脅情資來源每 6 小時更新。它免費、無需註冊,每天 1,000 次請求,因此你可以拿結果與自己的真實資料比對,例如來自已告訴你其位置的使用者的位址,並測量在你自己的流量中城市吻合的頻率。這項測量比任何公開的準確度宣稱都更有價值。關於讓資料類型與工作相符的更多內容,請閱讀 IP 情資與地理定位 API,欄位定義請參閱 API 文件。