獲取客戶的IP位址

2021-05-22 16:02:28 字數 1908 閱讀 7892

通常我們都通過下面的**獲得ip:

或 string ip =system.web.httpcontext.current.request.servervariables["remote_addr"];

remote_addr 說明:

訪問客戶端的 ip 位址。

此項資訊使用者不可以修改。

如果真的給改了的話,你也和伺服器連線不了了,伺服器就是按照這個來與客戶端建立連線並進行通訊的。實際我測試修改這個 servervariables , 一點效果都沒有。仍然獲得是實際的值。

但如果使用者使用了**伺服器,上述**獲得的是**伺服器的ip位址;如果使用者使用了多個**伺服器,則是到達伺服器的最後乙個**伺服器的ip位址。

如何繞過**伺服器獲得使用者真實的ip位址呢?

}request.servervariables["http_via"] ,servervariables["http_x_forwarded_for"],request.servervariables["remote_addr"]的值分下面幾種情況:

一、沒有使用**伺服器的情況:

remote_addr = 使用者的 ip

http_via = 沒數值或不顯示

http_x_forwarded_for = 沒數值或不顯示

二、使用透明**伺服器的情況:transparent proxies

remote_addr = 最後乙個**伺服器 ip

http_via = **伺服器 ip

http_x_forwarded_for = 使用者的真實 ip ,經過多個**伺服器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

這類**伺服器還是將您的資訊**給您的訪問物件,無法達到隱藏真實身份的目的。

三、使用普通匿名**伺服器的情況:anonymous proxies

remote_addr = 最後乙個**伺服器 ip

http_via = **伺服器 ip

http_x_forwarded_for = **伺服器 ip ,經過多個**伺服器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隱藏了您的真實ip,但是向訪問物件透露了您是使用**伺服器訪問他們的。

四、使用欺騙性**伺服器的情況:distorting proxies

remote_addr = **伺服器 ip

http_via = **伺服器 ip

http_x_forwarded_for = 隨機的 ip ,經過多個**伺服器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告訴了訪問物件您使用了**伺服器,但編造了乙個虛假的隨機ip代替您的真實ip欺騙它。

所以getip()也不是最好的,因為可以編造乙個假的ip,具體做法去看http://www.cnblogs.com/kingthy/archive/2007/11/24/970783.html

總結:"request.userhostaddress"是可信的.但是這樣的話卻又獲取不了那些已使用了**伺服器的使用者真實ip位址(因為在這時request.userhostaddress獲取到的就是這**伺服器的ip)..

getip()又有安全隱患

具體怎麼做就要看自己選擇了.

獲取客戶端IP位址

title generating test data author wufeng4552 date 2009 09 23 10 34 02 功能 獲客戶 ip位址 if object id getclientip isnot null drop proc getclientip go create ...

客戶端獲取IP位址

string ip request.getheader x forwarded for string regex 2 0 4 d 25 0 5 01 d d?2 0 4 d 25 0 5 01 d d?if ip null ip.length 0 ip.equalsignorecase locali...

Java獲取客戶端IP位址

參考 像移動閘道器一樣,iisforward這個isapi過濾器也會對request物件進行再包裝,附加一些wls要用的頭資訊。這種情況下,直接用request.getremoteaddr 是無法取到真正的客戶ip的。實際的iisforward附加頭如下 wl proxy client ip 211...