获取客户端ip地址
2016-03-15 15:22
183 查看
System.Web.HttpContext.Current.Request.ServerVariables 说明:
一、没有使用代理服务器的情况:
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。
代码实现:
public static string GetClientIp()
{
if (HttpContext.Current == null) return "";
var context = HttpContext.Current;
return
context.Request.ServerVariables["HTTP_VIA"] != null
? context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(',')[0]
: context.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。
代码实现:
public static string GetClientIp()
{
if (HttpContext.Current == null) return "";
var context = HttpContext.Current;
return
context.Request.ServerVariables["HTTP_VIA"] != null
? context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(',')[0]
: context.Request.ServerVariables["REMOTE_ADDR"];
}
相关文章推荐
- php模板引擎技术简单实现
- iOS GCD整理(一)
- 【转载】组合式测试:移动测试服务的发展趋势
- android studio svn的使用
- 【python】编程学习练习题-1
- 图片预加载与图片懒加载
- 【数据库】MySQL数据库简介及安装
- 一个不错的网站,搞技术的可以点点看偶
- 并行逻辑回归
- HTML组件化CSS方面的思考
- apache https配置
- 【2014蓝桥杯】六角填数
- jquery异步http请求
- 文本特效(输入框)demo
- word中删除脚注中的横线
- oracle数据库导入导出命令!
- 笔试题:发奖金
- 卷积神经网络
- (4.5.2.10)Android Studio如何引用jar包(非gradle)
- Node.js的线程和进程*2014年4月的文章