用 Ngrok 在本機測試 LineBot API 的示意圖

← INSIGHTS & PERSPECTIVES | 後端開發

Test LineBot API Locally with Ngrok: A Complete Setup Guide

想在本機測試 LINE Bot Webhook 又不想部署到有 HTTPS 的伺服器?這篇筆記分享如何用 Ngrok 把本機服務暴露到公網、解決 ERR_NGROK_4018 authtoken 驗證錯誤,並串接 Line Console 完成本地端測試。

在本機測試和 LINE 的 API 串接時,有幾種方法可以幫助你模擬和測試,而不需要將程式部署到有 HTTPS 的網址。這篇筆記記錄我用 Ngrok 把本機 webhook 服務暴露到公網的完整流程,以及遇到 `ERR_NGROK_4018` 驗證錯誤時的解決步驟。

為什麼在本機測試 LineBot API 需要 Ngrok?

Ngrok 是一個免費的命令行工具,可以將你本機運行的服務暴露到互聯網上。這樣,你可以在本機測試你的 API,同時讓外部服務(如 LINE 的 Webhook)能夠訪問你的本機服務。ngrok 的原理就是可以把外界的請求轉發到你本機指定的 Port,也就是由 ngrok 產生一串公開的網址來讓外網存取你本機上的 Port。它的優點是快速而且還提供了 https 的服務讓你使用上更安全,甚至還可以設置密碼保護。

這個服務在開發 Line Bot 時非常好用:我在本機開發 webhook 的後端程式,當然不想要每次都一定得部署到伺服器上面才可以測試。使用 Ngrok 可以擁有一個公開的網址,讓其他人直接連上該網址上的內容。

如何安裝 Ngrok?

可從下面網址下載,下載頁面可選擇平台以及安裝方式:

接著將 `ngrok.exe` 放置在你想要放置的硬碟位置即可。

遇到 ERR_NGROK_4018 驗證錯誤怎麼辦?

直接使用下面的指令會出現錯誤訊息 "authentication failed: Usage of ngrok requires a verified account and authtoken."

```bash

ngrok http 8080

```

查了一下,這是使用 ngrok 時遇到了身份驗證的問題,具體錯誤是 `ERR_NGROK_4018`,ngrok 需要使用一個已經驗證過的帳戶和 authtoken。

這裡有幾個解決步驟:

  1. 註冊 ngrok 帳號:如果你還沒有 ngrok 帳戶,請先前往 ngrok 註冊頁面 進行註冊。註冊完後,確認你的帳號是已驗證的。
  2. 取得 authtoken:登入 ngrok 後,前往 ngrok 的 authtoken 頁面,你會看到你的 authtoken。這是一串用來驗證你 ngrok 帳號的密鑰。
  3. 安裝 authtoken:在你的命令行或終端中執行以下指令來安裝你的 authtoken,請將 `YOUR_AUTHTOKEN` 替換為你從 ngrok 控制台中取得的 authtoken。
  4. 重新啟動 ngrok:完成上述步驟後,再次嘗試啟動 ngrok,應該就能正常運作。

```bash

ngrok config add-authtoken YOUR_AUTHTOKEN

ngrok http 11434

```

如何把 Ngrok 網址串接到 LineBot?

Ngrok 正常運作,顯示公開轉發網址

接著到 Line Console 創建一個 LineBot 串接到這個公開位置就可以啦!接著就可以在本機測試你的本地端程式了:

在 LINE Developers Console 設定 Webhook URL

ngrok 下載頁面的介面長這樣:

Ngrok 官網下載頁面

更多詳細教學請參考:快速讓外網連接本機的利器 ngrok

延伸閱讀

常見問題

Q為什麼 LINE Webhook 一定要 HTTPS 網址?

LINE 的 Webhook 伺服器只會呼叫公開且支援 HTTPS 的網址,本機的 `localhost` 或 `http://127.0.0.1` 外部連不到。Ngrok 會產生一組公開的 HTTPS 網址,並把請求轉發到你本機指定的 Port,剛好補上這一塊。

QERR_NGROK_4018 錯誤該怎麼解決?

這個錯誤代表 ngrok 需要已驗證的帳戶與 authtoken。先到 ngrok 官網註冊帳號,到 authtoken 頁面取得密鑰,執行 `ngrok config add-authtoken YOUR_AUTHTOKEN` 之後重新啟動 ngrok 即可。

QNgrok 免費版有什麼限制?

免費版每次啟動產生的公開網址是隨機的,重啟後會改變,需要回 LINE Console 更新 Webhook URL。另外免費版有連線數與併發的限制,正式上線前仍應部署到真正的伺服器。

Q本機程式要監聽哪個 Port?

由你自己決定,ngrok 指令的參數就是本機 Port,例如 `ngrok http 8080` 會轉發到本機的 8080 Port。重點是 ngrok 指定的 Port 必須和你的 webhook 後端程式實際監聽的 Port 一致。

參考資料

最後更新

2026-08-28(原文發布於 2024-10-16,本文保留原始筆記內容並補上 GEO 結構。)

關於作者 {#author}

Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。

首次發布:2024-10-16