電話號碼驗證 API:能做到與做不到的事
電話號碼驗證 API 會檢查某個號碼在國際編號計畫規則下是否格式正確,並回傳其地區與線路類型(例如行動電話或市話),過程中不會聯繫任何網路。它回答的是「這有可能是真實號碼嗎?」,而不是「這個號碼現在有接通嗎?」
這項區別決定了你需要哪一種服務。格式層級的驗證快速、執行免費且保護隱私,而任何回報即時狀態的服務,都仰賴電信級的資料來源,並且每次查詢都有成本。許多團隊在第一種就能解決實際問題時,卻付費購買了第二種。
規則式驗證擅長什麼
每個國家的編號計畫都是公開的:國碼、允許的長度、有效的區碼與前綴範圍,以及哪些前綴配發給行動、市話或其他服務。以這些規則建立的驗證器(通常是衍生自 Google libphonenumber 中繼資料的函式庫)能做到很多事:
- 正規化。將「(415) 555-0132」、「415-555-0132」與「+1 415 555 0132」轉換成相同的 E.164 字串,讓你的資料庫不再為同一個號碼保存六種寫法。
- 拒絕格式錯誤的輸入。長度錯誤、不可能的前綴,或錯位的字母,會在表單階段就被攔下,避免抵達你的簡訊供應商而白白花錢。
- 推斷地區。國家或地區由國碼與前綴得出,有助於路由、在地化與預設格式。
- 分類線路類型。行動、市話及其他數種類別,是根據前綴配置推導而來。
由於整個過程純屬運算,它會立即回傳,號碼也無需傳送給外部供應商。這是隱私上的優勢,因為在大多數司法管轄區中,電話號碼屬於個人資料。ipto 電話號碼檢查工具就是這樣運作的:它使用自行架設的解析器,輸出基於編號計畫規則,不進行即時電信業者查詢。請以國際格式輸入號碼,或選擇國家來解讀本地號碼。
它無法告訴你的事
規則式驗證有其明確的界線,在圍繞它設計流程之前,值得先了解這些。
- 號碼是否仍在使用。號碼可以符合所有規則,卻仍是未配發、已停用,或已被回收再配給新擁有者。
- 誰擁有它。編號規則對用戶隻字未提。
- 目前由哪家業者提供服務。號碼可攜性意味著原始前綴擁有者往往不是目前的電信業者。
- 該線路是否為 VoIP 服務。以前綴為基礎的類型偵測只是近似值,而虛擬號碼經常是從一般範圍配發的。
以 ipto 的說法,「valid」指的是「依編號規則看來合理」。若要取得關於可連通性的確切事實,你需要由具備該存取權的供應商提供即時電信業者或 HLR 類型的查詢,或是進行實際測試,例如傳送一次性驗證碼並看使用者是否輸入。
在兩種做法之間做選擇
從你要做出的決定出發。如果你是在清理聯絡人名單、在註冊時正規化輸入,或決定是否顯示國旗,規則式驗證就已足夠,付費的即時查詢只是浪費金錢。如果你要保護高價值的流程,例如帳號復原,最便宜的可連通性測試通常就是驗證碼本身:它能證明對該號碼的控制權,這是任何查詢都做不到的。
當你大量發送,並希望避免為傳給無效號碼的訊息付費,或必須高度確信地區分某些線路類別時,付費的即時查詢才變得值得。即便如此,也請先執行免費的格式檢查。它能剔除明顯的垃圾,讓你只需為有可能是真實的號碼付費查詢。
IP 端工具的定位
電話資料與網路及電子郵件資料並用時更有價值。IP 對電信業者查詢與電話號碼的電信業者查詢是不同的東西:它透過 MCC 與 MNC 目錄,將被分類為行動網路的 IP 位址對應到其營運者,屬於網路層級,絕不針對個別用戶。電子郵件檢查工具涵蓋語法、MX 記錄與拋棄式網域,而詐欺分數檢查工具則將電話結果納為四項選填輸入之一,與 IP、電子郵件及 User-Agent 並列。在該分數中,未通過驗證的號碼會提高風險,而看似合理的號碼則幾乎沒有加分,這與格式檢查作為合法性證據的薄弱程度相符。
關於從多個角度判斷帳號的相關閱讀,請見拋棄式電子郵件驗證解析。