錯誤訊息

Mac 上的「curl: (6) Could not resolve host」

curl 結束代碼 6 表示 curl 無法取得該主機名稱的位址。curl 說明文件寫道:「The given remote host was not resolved.」

適用於:macOS 內建的 curl 和 Homebrew 的 curl,所有目前的 macOS 版本。檢查日期:2026年10月29日

症狀

  • 終端機顯示 curl: (6) Could not resolve host: example.com。
  • 使用 curl 的腳本和安裝程式以結束代碼 6 停止。
  • 同一個網址在瀏覽器中可以打開,或者在瀏覽器中也一樣失敗。

可能原因

  • 輸入錯誤或主機為空。腳本中的變數可能是空的,導致 curl 拿到錯誤的名稱。
  • 沒有連線或沒有 DNS。Mac 無法連到 DNS 伺服器。
  • 使用自己 DNS 的 VPN。公司內部名稱只有在 VPN 開啟時才能解析。
  • curl 沒有使用代理伺服器。在只允許透過代理伺服器上網的網路上,curl 需要代理伺服器設定,這樣它才會讓代理伺服器解析名稱。

如何檢查

  1. 印出完整的指令,確認主機名稱正確。

  2. 透過 macOS 解析器查詢名稱。

    dscacheutil -q host -a name example.com
  3. 直接詢問公共 DNS 伺服器。如果這裡有回應、上一步卻沒有,問題就在你的 DNS 設定。

    dig +short example.com @1.1.1.1
  4. 顯示 curl 會讀取的代理伺服器環境變數。

    env | grep -i proxy
  5. 用詳細模式執行 curl,前幾行會顯示查詢過程。

    curl -v https://example.com

如何修正

  1. 如果 macOS 的查詢也失敗,請修正 DNS。請參閱Mac 上的 DNS 無法解析。

  2. 如果網路需要代理伺服器,請為 curl 設定。

    export https_proxy=http://proxy.example.com:8080
  3. 如果是公司內部名稱,請先連上 VPN。

  4. 清除 DNS 快取,然後再試一次。請參閱清除 Mac 上的 DNS 快取。

使用 Kilobat

  1. Kilobat 的連線診斷會逐層測試名稱:網路、代理伺服器、DNS、規則、IPv4、IPv6、TLS 和伺服器,並指出是哪一層失敗。

    kilobat why example.com
  2. 若要使用某個執行中處理程序的代理伺服器變數,請加上 --app 並指定它的名稱。

    kilobat why https://example.com --app process:curl
  3. 這些 Kilobat 檢查都是免費的。AI 代理程式可透過 MCP 以 diagnose_connection 和 diagnose_network 執行。請參閱找出某個網站或 API 連不上的原因。

常見問題

為什麼瀏覽器可以用,curl 卻不行?

瀏覽器可以使用系統代理伺服器或它自己的 DNS,curl 則讀取 https_proxy 等代理伺服器環境變數。請參閱代理伺服器設定讓 Mac 上的 App 無法連線。

資料來源

  • curl:libcurl error codes
  • curl(1) 的 EXIT CODES,macOS 27.2 內建的 man 頁面
  • dscacheutil(1) 與 dig(1),macOS 27.2 內建的 man 頁面

資料來源檢查日期:2026年10月29日。man 頁面為 macOS 內建版本;在終端機中用 man <name> 開啟。