HttpContext.Current.Request.ServerVariables["REMOTE_ADDR "]
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
HttpContext.Current.Request.ServerVariables["HTTP_VIA"];
都可以获取IP http://nrshwm.blog.163.com/blog/static/14060694120104435759203/ 这里说了有5中代理情况下他们的区别 问题是我怎么获得正确的客户端IP呢 如果是使用高匿名代理服务器的情况 通过上面三个属性更本就获得不到嘛 还有什么其他方法吗 求高手指教 小弟在感激不尽
------解决方案--------------------------------------------------------
没有办法。
你可以把高匿代理想象成这样:
代理服务器收到代理请求,他亲自访问你的服务器,就像他自己主动浏览一样。你有什么办法知道他是在为一个用户代理,还是他自己主动来访问?
------解决方案--------------------------------------------------------
/// <summary>
/// 获取客户IP
/// </summary>
/// <returns></returns>
public static string GetClientIP()
{
//Socket tcpclient = tcpListener.AcceptSocket();
//NetworkStream stream = new NetworkStream(tcpclient, System.IO.FileAccess.ReadWrite, true);
//IPEndPoint remoteIP = (IPEndPoint)(tcpclient.RemoteEndPoint);
string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (null == result || result == String.Empty)
{
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (null == result || result == String.Empty)
{
result = HttpContext.Current.Request.UserHostAddress;
}
return result;
}
------解决方案--------------------------------------------------------
不知道那个免费的IP服务是不是满足你的要求,就是网上人家提供的webservice接口。
------解决方案--------------------------------------------------------