← 返回部落格

批次 IP 查詢 API:速率限制架構設計

批次 IP 查詢 API:速率限制架構設計

批次 IP 查詢 API 讓你能在一次請求中解析多個位址,而不必為每個位址各發一次呼叫,圍繞它的架構歸結為三項限制:最大批次大小、你可使用的請求額度,以及你能多有效地避免重複詢問相同的問題。本文以 ipto 的批次端點提供具體數字,介紹一套實用的設計。

批次 IP 查詢端點接受什麼

ipto 的批次查詢是對 /v1/ip/bulk 發出 POST,內容為 IP 字串的 JSON 陣列。每次請求最多接受 100 個位址,處理前會先移除重複項目,回應則是以 IP 位址為鍵的物件,每個項目的結構與單一查詢結果相同,包含國家、城市、ASN、組織,以及 is_vpn、is_tor、is_abuser、is_datacenter 與 bogon 欄位。批次查詢是付費方案功能,提供給 Pro 與 Enterprise,而 Free 方案涵蓋每天 1,000 次請求的單一查詢,且無須註冊。目前的請求格式請查閱 API 文件。

重要的計費細節是,批次查詢是依項目計費的。一批 100 個位址會從你的每日額度中扣除 100,與 100 次個別查詢完全相同。因此批次處理並不會延長你的配額。它節省的是網路往返、連線建立與用戶端的協調工作,而在處理日誌檔或客戶清單的資料擴充時,這些往往才是真正的瓶頸。

圍繞額度設計管線

由於每個位址都會消耗額度,最便宜的請求就是你從不發出的那一個。先從過濾開始。私有與保留位址永遠不會有有意義的地理位置,你可以在本機直接捨棄它們,或在它們產生任何成本之前,先用 bogon IP 檢查器將其分類。對其餘集合進行去重,因為正式環境的日誌多半由少數重複訪客、爬蟲與 NAT 閘道主導。在批次處理器前放一個雜湊集合,通常是投資報酬率最高的改動。

接著加入以位址為鍵的快取,其存活時間(TTL)要符合你關心的資料變動的速度。國家與 ASN 的對應能長期保持穩定,因此以天為單位是合理的。信譽旗標變動較快,因為 ipto 的威脅情資來源每 6 小時更新,其 IP 與 ASN 資料集每天更新,所以將判定結果快取超過數小時,只會增加過期程度而節省不了多少。如果可以,請為每個欄位分別設定 TTL,或以較短的 TTL 快取整個結果。

  • 在本機過濾 bogon 與明顯無效的輸入。
  • 在作業內以及對照快取進行去重。
  • 將其餘位址分塊,每組最多 100 個。
  • 以有上限的並行度送出各個分塊,而不是一次全部送出。
  • 將結果寫入快取與目的地儲存區,並以位址為鍵。

並行、退避與每日時間窗

每日額度是固定的時間窗,因此需要設計因應的失敗模式,就是作業進行到一半時額度用盡。開始之前先估算成本:不重複且非 bogon 的位址數量,就是該作業將消耗的請求數。如果這超過今天剩餘的額度,就把作業拆分到不同的時間窗,先處理最有價值的位址,或僅對風險最高的位址退回到單一查詢。請保存進度,讓重新啟動的作業從上一個完成的分塊繼續,而不是從頭開始。

使用適度的並行。少數幾個並行的分塊幾乎總是足夠,因為每個分塊已經包含 100 次查詢,而無限制的扇出只會讓失敗更難推理。遇到暫時性錯誤或超出額度的回應時,請以指數退避加抖動(jitter)重試,並將額度用盡視為停止並稍後繼續的訊號,而不是在緊湊的迴圈中重試。讓每次寫入都具備冪等性,這樣重試的分塊就不會重複插入資料列。

在批次與單一查詢之間選擇

對於即時路徑,例如註冊表單或結帳流程,每個事件使用一次單一查詢。延遲低,快取會吸收重複請求,而且你只會為實際到達的位址消耗額度。批次查詢適用於離線工作:回填資料表、為一天的日誌評分,或稽核允許清單。如果你的目標是風險評分而非單純的資料擴充,詐欺評分檢查器會將 IP、電子郵件、電話與 User-Agent 訊號合併為單一的 0 到 100 分數,可以取代數個獨立的呼叫。若想更完整比較各服務商的免費方案限制,請參閱我們的免費方案速率比較。

最後,記錄你自己的用量。追蹤每個作業消耗的請求數、快取命中率,以及因 bogon 或重複而被捨棄的位址比例。這三個數字能在額度警報響起之前很久,就告訴你架構是否運作良好。

在為大批次撰寫指令碼之前,先手動試幾個位址:ASN 查詢會顯示你在日誌中不斷看到的某個範圍屬於哪個網路,這往往讓你只需一個決策就能處理整個網路,而不必進行數千次單一查詢。

直接的答案

批次端點 POST /v1/ip/bulk 每次請求接受最多 100 個 IP 位址的 JSON 陣列。處理前會移除重複項目,回應以 IP 位址為鍵。
不會。批次查詢依項目計費,因此一批 100 個位址會從每日額度中扣除 100 次請求。節省的是網路往返次數,而不是配額。
Free 方案提供每天 1,000 次請求的單一查詢,且無須註冊。批次查詢可在 Pro 與 Enterprise 方案中使用。
← 返回部落格