获取客户的IP地址
来源:互联网 发布:车行网络推广策划案 编辑:程序博客网 时间:2024/05/04 11:21
通常我们都通过下面的代码获得IP:
string ip =System.Web.HttpContext.Current.Request.UserHostAddress;
或 string ip =System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
REMOTE_ADDR 说明:
访问客户端的 IP 地址。
此项信息用户不可以修改。
如果真的给改了的话,你也和服务器连接不了了,服务器就是按照这个来与客户端建立连接并进行通讯的。实际我测试修改这个 ServerVariables , 一点效果都没有。仍然获得是实际的值。
但如果用户使用了代理服务器,上述代码获得的是代理服务器的IP地址;如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址。
如何绕过代理服务器获得用户真实的IP地址呢?
private static string getIp()
{
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
return System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
else
return System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
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地址
- 获取客户真实的IP地址
- Nginx获取客户真实的IP地址
- JSP中获取访问客户的IP地址
- apache+weblogic10g获取客户实际IP地址
- 获取访问网站客户ip地址
- Java 客户用户请求IP地址获取
- 获取客户IP并查询IP的地理位置(使用淘宝IP地址库)
- 获取真实的客户IP
- 如何取得客户段的ip地址
- 得到客户机器的ip地址
- unix网络基础-显示客户IP地址和端口号的时间获取服务器程序
- IP地址的获取
- 取客户IP地址
- 利用【淘宝IP地址库】根据客户ip获取客户地理信息
- 利用js或者后台获取客户ip地址
- 获取客户地理地址的ASP代码
- javaweb获取客户用户的真实ip。
- 在multiline模式下限制textbox 的长度
- 解决python ConfigParser文件编码问题(按指定格式存储文件(txt))
- 比尔盖茨大学毕业典礼演讲文本(十一项原则)
- 感恩的心
- 选择路径
- 获取客户的IP地址
- 凌阳教育嵌入式Linux暑期强化班
- 汉字转换成拼音
- TwoDays BLOG
- 汉字转换成拼音
- 选择文件夹
- 选择文件
- dom
- 常用正则表达式