自行架設與 API IP 地理定位資料庫
自行架設的 IP 地理定位資料庫是你下載後在自己的處理程序內查詢的檔案,而 IP 地理定位 API 則是對供應商發出的網路呼叫,由供應商替你持有並更新資料。這項選擇主要在於你想把成本花在哪裡:營運工作與更新紀律,或是網路延遲與對他人服務的依賴。
自行架設 IP 資料庫涉及什麼
使用自行架設的資料庫時,一個二進位檔案(視供應商與所含欄位而定,通常從數十 MB 到數百 MB)就放在你的應用程式旁邊。查詢是記憶體內的讀取,通常在微秒內完成,沒有每次請求的網路躍點,也沒有任何位址離開你的基礎架構。如果你的隱私審查認為訪客 IP 是不應與第三方共享的個人資料,最後這一點就很重要。
成本在於這個檔案周邊的一切。必須有人依排程下載新版本、驗證它們、將它們部署到每台伺服器或容器,並處理部署時帶出過時副本的情況。授權因供應商而異,有些商業資料庫的條款與免費資料庫不同,因此在將檔案嵌入產品之前請先閱讀。資料庫也只能回答它所包含的內容:如果你想要 VPN、Tor 或濫用旗標,這些來自獨立的檔案或服務,你必須以它們各自的頻率更新。
IP 地理定位 API 帶來的改變
API 將資料管線移交給供應商。你送出一個位址,得到結構化的 JSON,背後的資料則在你無需觸動任何部署的情況下更新。對小型團隊而言,這省去了一項反覆出現的雜務。它也讓取得那些不便以檔案形式出貨的欄位變得容易。對 ipto 的 IP 查詢發出一次呼叫,就能回傳 country、city、ASN、組織與 currency code,外加旗標 is_vpn、is_tor、is_abuser、is_datacenter,以及 bogon 與 bogon_type。
取捨是真實存在的。每次查詢都增加一次網路往返,因此延遲以毫秒而非微秒計。你依賴供應商的可用性與速率限制,這意味著你需要逾時設定、備援機制,最好還有快取。此外,位址會被傳送給第三方,這需要寫入你的隱私文件。ipto 免費、無需註冊,每天允許 1,000 次免費請求,足以用於原型開發或執行低流量的服務,不過高流量的工作負載應依此上限來規劃。
新鮮度不等於準確度
人們常以為 API 因為是「即時的」所以更準確。大多數時候,它只是更新鮮而已。底層的問題,也就是將位址對應到地點,在兩種模式下是相同的,而且對兩種模式而言,城市層級的結果都比國家層級的結果弱,在行動與住宅連線上尤其如此。差別在於資料可能過時的程度。自行架設的檔案與你上次成功更新的時間一樣舊。API 則與供應商的更新週期一樣舊:在 ipto 上,威脅情資來源(VPN、Tor、濫用)每 6 小時更新一次,IP 與 ASN 資料集每日更新。兩者都不是即時的,全新的 VPN 端點在某個來源收錄之前也不會被標記。
實用的決策原則
- 流量極高或延遲預算嚴格:本機資料庫通常勝出,因為每次呼叫的網路成本與速率限制都消失了。
- 嚴格的資料落地規定:讓查詢留在本機,因為沒有任何位址被傳送到任何地方。
- 小型團隊、中等流量、需要風險訊號:API 在工程時間上通常較便宜,因為來源、ASN 資料與信譽都已經整合好了。
- 介於兩者之間:使用 API,搭配以位址(或網路範圍)為鍵、並設有合理存活時間的本機快取。許多應用程式會反覆看到相同的位址,因此快取能吸收大部分流量。
你也可以結合兩種模式:熱路徑使用本機的國家層級檔案,只有在請求看起來不尋常、需要 ASN、VPN 或濫用情境時,才呼叫 API。VPN、Tor 與 Proxy 檢查工具會準確顯示這些風險旗標對特定位址是什麼樣子,而 ASN 查詢則顯示其背後的網路擁有者。請求與回應格式說明於 API 文件。
決定之前先試試看
評估 API 模式最便宜的方法,是把你真實的流量樣本跑過一遍並進行比較。將日誌中的幾個位址貼到 IP 濫用檢查工具,或從腳本呼叫查詢端點,並從你的伺服器實際執行的地點測量往返時間。請測量你自己的延遲與命中率,而不是相信籠統的說法,並判斷剩餘的差異是否值得你自行維運資料管線。