# 如何在任意主機查詢對外的 IP 地址

我偶爾會需要查詢當前主機的對外 IP 地址 (出口 IP 地址)，其實提供這種服務的網站很多，你可以透過瀏覽器開啟網頁查詢 IP 地址，也可以透過 `curl` 命令列工具查詢。不過，最近我常用的 `ifconfig.co` 因為掛上了 Cloudflare 的 CDN，同時又啟用了**防機器人**功能([Cloudflare Bot Management](https://www.cloudflare.com/application-services/products/bot-management/))，導致我透過 `curl` 就抓不到 IP 了，感覺十分困擾。這篇文章我整理一些不同的選項，讓你可以在任意主機上查詢對外 IP 地址。

![the process of querying an external IP address on any host](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/0cadc8e41e5233c26701-ebf68673-437d-4dc9-965b-95b39983c657.webp)

我早期常用 [myip.com.tw](https://myip.com.tw/) 來查詢 IP 地址，主要是網址好記，打開網頁後直接顯示 IP 給你看，也沒其他功能，就顯示 IP 而已。不過他最近加上了 [Cloudflare Bot Management](https://www.cloudflare.com/application-services/products/bot-management/) 功能，直接被我拉黑不再用了。

其實還有很多其他查詢 IP 的網站，功能豐富且完整，不但可以查 IP 地址，還會顯示 IP 反查的域名、所在城市、國家、經緯度座標、時區與 ISP 資訊等等，相當不錯。

為此我重新選擇了幾個好用的網站，選用的標準如下：

1.  **網址短、好記**
    
    這很重要！
    
2.  **沒有啟用防機器人功能**
    
    如果網站啟用了防機器人功能，透過 `curl` 就抓不到 IP 了！
    
3.  **同時支援 HTTP 與 HTTPS**
    
    這是為了方便我用命令列執行時不用輸入 `https://` 完整網址！
    

以下是我目前的幾個選擇：

1.  最乾淨的網站 (沒有掛載 CDN 或 Bot Management)
    
    [ip.me](https://ip.me/)
    
    ```bash
    curl ip.me
    ```
    
2.  有掛載 Cloudflare CDN，但沒有啟用 Bot Management
    
    [ip.sb](https://ip.sb/)
    
    ```bash
    curl ip.sb
    ```
    
3.  回傳 JSON 格式的 IP 資訊
    
    [ipinfo.io](https://ipinfo.io/)
    
    ```bash
    curl ipinfo.io
    ```
    
    搭配 jq 就非常實用：
    
    ```bash
    curl ipinfo.io | jq
    ```
    
    取得當下 IP 所在的時區：
    
    ```bash
    curl -s ipinfo.io | jq ".timezone" -r
    ```
    

### 相關連結

-   [ip.me](https://ip.me/)
-   [ip.sb](https://ip.sb/)
-   [ipinfo.io](https://ipinfo.io/)
