Fwrd 標誌Fwrd在 App Store 下載

用 iPhone 把簡訊驗證碼送進 CI 與 QA 自動化

作者:Fwrd · · 更新於

要把簡訊一次性驗證碼送進 CI 或 QA 自動化,就把接收驗證碼的 SIM 卡放進一支團隊 iPhone,讓「捷徑」的「訊息」自動化操作把每則驗證碼簡訊交給 Fwrd,由它以 JSON 格式 POST 到你自己的 HTTPS Webhook。接著你的 CI 工作從該端點讀取最新的驗證碼,並輸入到登入畫面。

你需要: 一支執行 iOS 26 或以上版本、裝有接收驗證碼號碼 SIM 卡的 iPhone、「捷徑」App(手機本來就有)、Fwrd,以及一個 CI 讀得到的公開 HTTPS 網址,例如預備環境的路由或 n8n 工作流程。Fwrd 會拒絕 IP 位址以及 .local 或 .internal 名稱,而且不傳送登入標頭,所以請在網址裡放一段很長的金鑰。

為什麼簡訊驗證碼很難自動化?

簡訊驗證碼會卡住 CI,因為它們送到的是手機,而不是你的執行器,除非有東西把每則簡訊送到你的管線讀得到的地方。

撰寫這類檢查的團隊,大多只有自己的手機可以接收驗證碼。裝著 Fwrd 的團隊 iPhone,能讓這支手機變成你的管線可以讀取的來源。

什麼時候適合用團隊 iPhone?

當驗證碼必須送到某個特定的電信業者號碼時,它很適合:例如你要登入的第三方服務、已經綁定公司手機號碼的預備帳號,或依號碼類型區別對待的流程。Twilio 的 Lookup 文件(2026 年 10 月 17 日查閱)指出,App 能區分行動號碼和非固定 VoIP 號碼,後者被描述為在線上取得的虛擬號碼。團隊 iPhone 裡的 SIM 卡是真正的電信業者號碼,所以驗證碼會像寄給客戶時一樣送到。

取捨在於:一支手機只有一個號碼,而且必須保持開機並連上網路。下面的段落會談到這兩點。

如何把 iPhone 上的簡訊驗證碼傳送到 CI

在 Fwrd 中加入一個只保留驗證碼的 Webhook 轉寄目標,再建立一個把每則驗證碼簡訊交給 Fwrd 的「訊息」自動化操作。端點這一側的做法,Webhook 指南裡有完整說明。

  1. 在 Fwrd 中加入 Webhook。 打開 Fwrd,點一下 +,選擇 Webhook。把你端點完整的 HTTPS 網址貼到「設定」欄位,點一下「傳送測試訊息」,讓你的端點看到這些欄位,然後點一下 ✓ 儲存。

  2. 只保留驗證碼。 在同一個轉寄目標中,於「轉寄哪些簡訊」底下選擇「只轉寄部分簡訊」,並開啟「看起來像驗證碼」,它會保留含有 4 到 8 位數驗證碼的簡訊。這只算一個條件,所以免費方案也能用。

  3. 建立「訊息」自動化操作。 在 iOS 27 上,打開「捷徑」,依序點一下「資料庫」、「自動化」和 +。如果看到「描述捷徑」,點一下「編輯」。點一下「自動化操作」,再點一下「訊息」,把「寄件人」改成「訊息」,然後輸入 code,或你的服務寄來的簡訊所用的字詞。在 iOS 26 上,打開「自動化」標籤頁,點一下 +,選擇「訊息」,並在「訊息包含」底下輸入它。

  4. 讓它無需詢問便自動執行。 在 iOS 27 上,點一下觸發器旁的箭頭,確認「執行前確認」已關閉。依序點一下 ⓘ 和「隱私權」,確認「鎖定時允許執行」已開啟。在 iOS 26 上,選擇「立即執行」,然後點一下「下一步」和「新增捷徑」。

  5. 加入 Fwrd 的動作。 搜尋「轉寄」,加入「轉寄訊息到所有轉寄目標」。把它的「訊息」設為「捷徑輸入」(在 iOS 26 上,依序選擇「捷徑輸入」和「訊息」)。點一下返回來儲存(iOS 26 上是「完成」)。

  6. 在 CI 中讀取驗證碼。 讓你的端點把每個內文連同收到的時間一起儲存下來。在你的執行請求驗證碼之後,輪詢此後收到的最新簡訊,並用規則運算式取出其中的數字。

  7. 這樣就完成了。 含有驗證碼的新簡訊現在會自動送到你的端點,不論 iPhone 是否鎖定。

端點會收到什麼?

一個 POST 請求,JSON 內文裡是原封不動的簡訊文字,同時放在 content 和 text 中。其中沒有時間戳記,所以請在你這一側記錄時間。

{
  "content": "Your verification code is 482913",
  "text": "Your verification code is 482913"
}

同一則簡訊的每次嘗試都帶有相同的 Idempotency-Key 標頭,所以你可以丟棄重複的請求。如果傳送逾時、遇到 429 或 5xx,或是連線中斷,Fwrd 最多會再試兩次。15 秒內回傳的任何 2xx 回應都算已送達,重新導向會被拒絕。在 Fwrd 的「設定」中開啟「附上寄件人」,並在 Fwrd 的動作上選擇「寄件人」,內文還會多出一個 sender 欄位,當多個服務寄簡訊到同一個號碼時很有用。

這個做法做不到什麼

  • 一個號碼一次只能服務一次執行。 平行的工作在同一個號碼上請求驗證碼,可能讀到對方的驗證碼,所以請讓登入步驟排隊,或把每個驗證碼與請求它的那次執行對應起來。
  • 免費方案每月涵蓋 15 則驗證碼。 超過之後,驗證碼要到下個月才會繼續轉寄,忙碌的管線很快就會用完;Fwrd Pro 可取消這個限制,每月 $4.99 或每年 $29.99,均為美國售價,以美元計。
  • 它只能接收。 Fwrd 無法替你的 CI 從 iPhone 傳送簡訊。
  • 手機必須保持開機並連上網路。 重新啟動後,轉寄要等有人解鎖一次才會繼續;連續三天沒有解鎖的 iPhone 會自行重新啟動。請讓它保持充電,並放在有人拿得到的地方。
  • Fwrd 的動作會送到每個已啟用的轉寄目標。 如果同一支手機還要轉寄到別處,請改用「轉寄訊息到轉寄目標」,再選擇這個 Webhook。
  • 只處理新簡訊。 自動化操作建立之前收到的驗證碼不會被傳送。

如果你要的是給人看的驗證碼,而不是給管線用的,在 Slack 中與團隊共用 2FA 驗證碼介紹了那種設定。

關於自動化中的簡訊驗證碼的問題

Selenium 或 Playwright 能直接讀取簡訊驗證碼嗎?

不能。瀏覽器自動化看不到手機裡的訊息。必須先有東西把簡訊從手機上移出來,例如由「捷徑」自動化操作加上 Fwrd,把它傳送到你的指令碼輪詢的 Webhook。

驗證碼會經過 Fwrd 的伺服器嗎?

不會。Fwrd 沒有帳號,也沒有自己的伺服器;每則簡訊從 iPhone 直接傳送到你的 HTTPS 端點,網址儲存在 iPhone 的鑰匙圈中。

它支援簡碼寄件人嗎?

支援。自動化操作比對的是簡訊的內容,而不是寄件人,所以來自不在你聯絡人裡的簡碼的驗證碼,也能符合 code 這樣的字詞。

我可以用 n8n 工作流程作為端點嗎?

可以。加入一個設為 POST 的 Webhook 節點,使用它的 Production URL,並發布工作流程,否則它不會回應。把 iPhone 簡訊傳送到 Zapier、Make 或 n8n 裡有具體步驟。

想讓簡訊驗證碼出現在 CI 讀得到的地方嗎?

Fwrd 會把每則符合條件的簡訊從團隊 iPhone 以 JSON 格式 POST 到你自己的 HTTPS Webhook,不需要帳號,中間也沒有 Fwrd 的伺服器。每月 15 則免費轉寄。

每月 15 則免費轉寄。Fwrd Pro 移除轉寄和篩選條件的上限,並新增「永不轉寄」清單,每月 $4.99 或每年 $29.99,年度方案為符合資格的客戶提供 7 天免費試用。

在 App Store 下載

iPhone · iOS 26 或以上版本