如何獲取當前訪問者的IP地址?獲取用戶的IP地址
19
A
回答
20
HttpContext.Current.Request.UserHostAddress;
或
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
或
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
2
Request.UserHostAddress
25
編輯:也發現了一個關於IP相關的http頭文件here的有趣問題。
編輯2:正如評論和我在上面提供的鏈接中所述,HTTP_X_FORWARDED_FOR
標頭可能包含多個由逗號分隔的IP地址。我沒有面對這種情況,但假設我的答案需要一些更正。
我用這個代碼來獲取IP地址(它返回IPAddress.None
值,如果得到某種原因失敗):
/// <summary>
/// Gets the IP address of the request.
/// <remarks>
/// This method is more useful than built in because in some cases it may show real user IP address even under proxy.
/// <summary>
/// Gets the IP address of the request.
/// <remarks>
/// This method is more useful than built in because in some cases it may show real user IP address even under proxy.
/// The <see cref="System.Net.IPAddress.None" /> value will be returned if getting is failed.
/// </remarks>
/// </summary>
/// <param name="request">The HTTP request object.</param>
/// <returns></returns>
public static IPAddress GetIp(this HttpRequest request)
{
string ipString;
if (string.IsNullOrEmpty(request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
{
ipString = request.ServerVariables["REMOTE_ADDR"];
}
else
{
ipString = request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.FirstOrDefault();
}
IPAddress result;
if (!IPAddress.TryParse(ipString, out result))
{
result = IPAddress.None;
}
return result;
}
1
public String GetIP()
{
string ipString;
if (string.IsNullOrEmpty(Request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
{
ipString = Request.ServerVariables["REMOTE_ADDR"];
}
else
{
ipString = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
}
return ipString;
}
首先試圖找出代理IP,如果它的空,我們可以得到該系統的IP
0
嘗試使用此方法獲得的用戶外部IP地址..
public static string getExternalIp()
{
try
{
string externalIP;
externalIP = (new WebClient()).DownloadString("http://checkip.dyndns.org/");
externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"))
.Matches(externalIP)[0].ToString();
return externalIP;
}
catch { return null; }
}
相關問題
- 1. 獲取網絡用戶的IP地址
- 2. 獲取IP地址
- 3. 獲取IP地址
- 4. 獲取IP地址
- 5. 在Sinatra獲取客戶的IP地址?
- 6. 獲取本地IP地址
- 7. 如何獲取客戶端IP地址
- 8. 如何獲取客戶端IP地址
- 9. 獲取ip地址的值
- 10. 獲取我的IP地址
- 11. 使用Boost.Asio獲取本地IP地址
- 12. 如何使用用戶IP地址獲取用戶位置?
- 13. 獲取客戶端屏幕的用戶IP地址
- 14. 如何獲取客戶端/用戶的IP地址?
- 15. 在vb.net獲取IP地址
- 16. 獲取全球IP地址
- 17. 獲取多個IP地址
- 18. 如何獲取IP地址?
- 19. 獲取ip地址與XcvData
- 20. 如何獲取IP地址?
- 21. 獲取使用PHP的用戶的IP地址
- 22. PHP |從客戶端用戶獲取私有IP地址?
- 23. 如何使用socket.io獲取用戶的IP地址?
- 24. 如何使用node.js在bot中獲取用戶的IP地址?
- 25. 如何使用.net獲取用戶的IP地址?
- 26. 取IP地址
- 27. 從網址獲取IP地址
- 28. Django:使用信號獲取IP地址
- 29. 獲取Yahoo IP地址不起作用
- 30. 使用PHP file_get_contents獲取IP地址
有什麼不同在兩個第一替代方案之間呢? – 2011-02-08 13:56:52