在 WordPress 取得正確的用戶端 IP

WordPress 上有一個很有名的防垃圾留言外掛「Akismet Anti-Spam」,可以阻止 WordPress 的垃圾留言,而不顯示出來,同時在一段時間後,會自動刪除這些留言。

平常,我不太會去看它,因為通常它已經幫我自動清除了,就算沒有自動清除,我也會自己手動清除垃圾,而不去看這些留言。

某日,我心血來潮,突然看了一下留言者的 IP,發現怎麼都是同一個 IP 的留言,突然有點想封鎖,仔細看了一下,IP 都是 127.xxx.xxx.xxx。等等!總覺得哪裡怪怪的!

看到 127 開頭的 IP,我突然警覺了起來,理論上來講,不應該要抓到 127 開頭的 IP 呀!

原因是 127.0.0.0/8(這代表可使用的 IP 位址是 127.0.0.1 ~ 127.255.255.254)是 loopback IP 呀!

題外話,有時我們會自己 Ping 自己,可能會用

ping 127.0.0.1

,但其實 127.0.0.1 這組 IP 也可以指定成 127.0.0.1 ~ 127.255.255.254 中的任一個 IP 位址。

回到正題,我大概可以知道原因了,以前在 Windows Server 上也曾碰過相同情況,簡單來講,就是和 Proxy、CDN、負載平衡器這類的東西有關。

雖然顯示成正確的 IP,不見得一定有用,但是看不到正確的 IP,還是覺得不開心。

用了「REMOTE_ADDR」當關鍵字,找了一下 WordPress 的程式,準備著手修改程式,找到了幾個檔案,最後在 /wp-includes/comment.php 中看到了一些詳細訊息,其中提到一個網址:https://core.trac.wordpress.org/ticket/9235,上去看了一下討論內容。

突然發現原來有人已經寫好外掛了,這倒省事多了,不用自己去改程式。二話不說,直接裝外掛比較快。

  1. 先下載這個外掛的檔案
    https://downloads.wordpress.org/plugin/real-ip.zip
  2. 解壓縮檔案
  3. 把 real-ip 這個資料夾放到 /wp-content/plugins/ 這個資料夾裡
  4. 到後台啟用 Real IP 這個外掛,完全不用設定,日後用戶端的 IP 也都會正確顯示

上述好像太麻煩了!另外也可以在外掛頁面,搜尋並安裝一個名為「Real IP Detector」的外掛,作者是「Masoud Binaei」,最後再啟用這個外掛就好了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Google reCAPTCHA 保護機制,這項服務遵循 Google 隱私權政策服務條款