2009-08-21 120 views
1

我正在開發一個應用程序,人們似乎很可能會試圖隱藏其代理服務器後面的客戶端IP地址。獲取客戶端IP地址的方法

是否有一個統一的方式來獲得實際的客戶端IP地址是在代理後面?縱觀Ruby docs,它明確指出,

request.remote_ip 

request.remote_addr 

都將返回代理地址,而不是實際的客戶端IP,我通過在「可能含有」的描述拋出其餘的HTTP頭文件。

回答

2

這取決於代理是否支持X-Forwarded-For。我會運行一些測試以確保remote_ip不是您要查找的內容 - 基於快速瀏覽代碼,它會嘗試讀取HTTP_X_FORWARDED_FOR標題。

+0

如果remote_ip正在檢查「最遠的」HTTP_X_FORWARDED_FOR,那麼我不必擔心嘗試自行排序。謝謝。 – 2009-08-21 06:11:03

1

我從代理服務器後面的機器上輸入。我不是「隱藏」的,這就是我的組織(以及大多數其他人能夠擁有服務器)的工作原理。我沒有固定的IP地址:它是動態分配的。所以我看不出知道我的「當前」IP地址會如何幫助,因爲它明天會有所不同。哎呀,我明天可能會通過另一個代理連接(我爲一個大型組織工作)!

在家裏,我有幾臺機器通過路由器連接。同樣,我沒有固定的IP地址:它由我的ISP動態分配。這是一個龐大的ISP,因此可能在上游有一個代理服務器。

所以我認爲你想要的不是技術上可行的。無論如何,什麼樣的應用程序會使它「很可能會試圖隱藏他們的客戶端IP地址?你想解決什麼問題?

+0

我正在創建一個在線投票應用程序,並希望採取合理措施來防止投票填充 - 結帳http://musicmachinery.com/2009/04/15/inside-the-precision-hack/用於最糟糕的情況。 我應該在我的原始問題中指定「匿名代理」,因爲您列出的示例(企業或本地NAT)是正確的,但從我的角度來看是可管理的。 – 2009-08-21 14:08:46

+0

幾年後,在這裏,但即使IP時常變化,它對於高層次的地理信息也很有用。我的ISP可能會不時給我一個不同的知識產權,但他們看起來都是一樣的。例如,顯然我在美國的某個地方。這對於很多應用程序來說足夠好。 – juanpaco 2012-05-16 13:43:08