- 浏览: 386632 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (285)
- test (0)
- 分类 (1)
- java (281)
- tttttttttttt (1)
- android程序复制数据库 (1)
- Hibernate 动态 HQL (1)
- java编写扑克的洗牌程序 (1)
- NIO 之 选择就绪模式 (1)
- wpo另类问题:不可轻视的蜘蛛爬行对服务器造成的负担 (1)
- haml (1)
- cvcvcvc (1)
- 开源史上最成功的8个开源产品 (1)
- XML文件转换成Word文件或者Excel文件 (1)
- 一些利用开源浏览器核心开发专用浏览器的连接 (1)
- 毛笔效果简单思路 (1)
- 年终考评以后 (1)
- RFC821 简单邮件传输协议(SMTP)中文定义文档 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- 极限编程(XP)的重构与设计模式 (1)
- MapInfo2005年第三期电子新闻 (1)
- 想到目前各BLOG站点和搜索引擎的一点点缺陷 (1)
- 成功通过DB2的700和701考试 (1)
- 基于记录登陆信息的防止网页暴力破解方法 (1)
- Router路由 (1)
- 终于稍微完整的学习了一下Linux (1)
- android手机通讯录备份还原代码 (1)
- Qt之美(一):d指针/p指针详解 (1)
- DB2 静默安装 (1)
- linux开机启动脚本的顺序 (1)
- Hibernate实体对象的三种状态 (1)
- Hibernate面向对象的hql语句 (1)
- ibatIS调用存储过程 (1)
- Linux启动过程(详细说明) (1)
- C3P0配置 (1)
- memcache安装 (1)
- js event.keyCode (1)
- java获取汉子首字母 (1)
- Eclipse GC log (1)
- java轻量级httpserver (1)
最新评论
-
smilea001:
我知道了,作者采用的是gbk编码,我采用的是utf-8编码,
java获取汉子首字母 -
smilea001:
我输入的也是--
java获取汉子首字母 -
di1984HIT:
写的不错啊。
Router路由 -
kaixinyou:
...
2011.07.20——— android 获得当前view在屏幕的坐标 -
zhengjianbo:
你好,可以将你的实现代码公布下吗!万分感谢!
毛笔效果简单思路
我们知道在jsp里,获取网页客户端的ip地址的方法是:request.getremoteaddr(),这种方法在大部分情况下都是有效的。但是在通过了apache,squid等反向代理软件就不能获取到客户端的真实ip地址了。如果使用了反向代理软件,用request.getremoteaddr()方法获取的ip地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实ip。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 ip,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的http头信息中,增加了x-forwarded-for信息。用以跟踪原有的客户端ip地址和原来客户端请求的服务器地址。当我们访问index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getremoteaddr()的方法获取的ip实际上是代理服务器的地址,并不是客户端的ip地址。
于是可得出获得客户端真实ip地址的方法一:
public string getremortip(httpservletrequest request) {
if (request.getheader("x-forwarded-for") == null) {
return request.getremoteaddr();
}
return request.getheader("x-forwarded-for");
}
获得客户端真实ip地址的方法二:
public string getipaddr(httpservletrequest request) {
string ip = request.getheader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
ip = request.getheader("proxy-client-ip");
}
if(ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
ip = request.getheader("wl-proxy-client-ip");
}
if(ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
ip = request.getremoteaddr();
}
return ip;
}
可是,如果通过了多级反向代理的话,x-forwarded-for的值并不止一个,而是一串ip值,究竟哪个才是真正的用户端的真实ip呢?
答案是取x-forwarded-for中第一个非unknown的有效ip字符串。如:
x-forwarded-for:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用户真实ip为: 192.168.1.110
通过以上方法可以得到网页浏览者的真实ip地址。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 ip,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的http头信息中,增加了x-forwarded-for信息。用以跟踪原有的客户端ip地址和原来客户端请求的服务器地址。当我们访问index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getremoteaddr()的方法获取的ip实际上是代理服务器的地址,并不是客户端的ip地址。
于是可得出获得客户端真实ip地址的方法一:
public string getremortip(httpservletrequest request) {
if (request.getheader("x-forwarded-for") == null) {
return request.getremoteaddr();
}
return request.getheader("x-forwarded-for");
}
获得客户端真实ip地址的方法二:
public string getipaddr(httpservletrequest request) {
string ip = request.getheader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
ip = request.getheader("proxy-client-ip");
}
if(ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
ip = request.getheader("wl-proxy-client-ip");
}
if(ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
ip = request.getremoteaddr();
}
return ip;
}
可是,如果通过了多级反向代理的话,x-forwarded-for的值并不止一个,而是一串ip值,究竟哪个才是真正的用户端的真实ip呢?
答案是取x-forwarded-for中第一个非unknown的有效ip字符串。如:
x-forwarded-for:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用户真实ip为: 192.168.1.110
通过以上方法可以得到网页浏览者的真实ip地址。
评论
3 楼
youjianbo_han_87
2011-09-07
2 楼
四书五经
2011-08-12
这个可以有
1 楼
zhaoaifeiyu
2011-08-11
第一次看到有关的文章 谢谢!
发表评论
-
java轻量级httpserver
2012-02-08 11:48 1561httpclient+httpserver demo ... -
Eclipse GC log
2012-02-04 16:59 1391为了查看Eclipse GC log,需要在eclip ... -
java获取汉子首字母
2012-02-03 09:14 1512public class StringUtil { ... -
js event.keyCode
2012-02-03 09:09 1195<span style="" ... -
memcache安装
2012-02-02 12:04 1137? <blockquote> 1. ... -
C3P0配置
2012-02-02 11:34 971cquireIncrement[3] ... -
Linux启动过程(详细说明)
2012-02-01 09:09 1554<div class="post ... -
ibatIS调用存储过程
2012-01-31 15:38 1598<p>一、ibatIS调用存储过程(调用存 ... -
Hibernate面向对象的hql语句
2012-01-11 13:14 992Hibernate中hql条件语句的书写方式有: ? ... -
Hibernate实体对象的三种状态
2012-01-11 12:59 1266<p style="text- ... -
linux开机启动脚本的顺序
2011-12-21 15:14 1096下开机自动启动脚本所涉及的知识和方法、如下: ... -
DB2 静默安装
2011-12-21 11:59 1049<span style="color: ... -
Qt之美(一):d指针/p指针详解
2011-12-20 15:14 1940[/b]2011.11.16 [size=18px;] ... -
android手机通讯录备份还原代码
2011-12-20 11:54 2927<span style="font-f ... -
终于稍微完整的学习了一下Linux
2011-12-19 12:14 1162Linux以前也装过两次,不过几乎没去用。头几天看一些 ... -
Router路由
2011-12-19 10:54 1153Router路由:设定线的轨迹,在Connection ... -
基于记录登陆信息的防止网页暴力破解方法
2011-12-17 10:49 1426对黑客方面比较感兴趣的或者是比较熟悉的,应该知道溯雪这 ... -
成功通过DB2的700和701考试
2011-12-16 17:27 854嘿嘿,原以为比较没有信心的701考试也被俺成功的攻克了 ... -
想到目前各BLOG站点和搜索引擎的一点点缺陷
2011-12-15 15:54 866感觉无聊,就到中国博客网的首页逛了逛,想看看有没有什么 ... -
MapInfo2005年第三期电子新闻
2011-12-15 10:49 889<span lang="EN-US&q ...
相关推荐
webService调取IP所在地,以及获得客户端真实IP
但是在通过了apache,squid等反向代理软件就不能获取到客户端的真实ip地址了。如果使用了反向代理软件,用request.getremoteaddr()方法获取的ip地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实ip。
各个网站急需解决的问题就是如何给用户提供更好的服务,以及防止某些用户的恶意攻击,要达到这一目的首先要获得用户方的真实的IP地址,然后再对该IP地址作相应的处理,本文阐述的就是如何获取客户端的真实IP地址。
集成各种获取方式,获取正确的IP
主要介绍了PHP获取客户端真实IP地址的几种情况分析和实现代码,重点在几种干扰获得真实IP的几种情况介绍,需要的朋友可以参考下
在很多应用下都可能有需要将用户的真实IP记录下来,这时就要获得用户的真实IP地址,在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等...
本文实例讲述了C#实现获取本地内网(局域网)和外网(公网)IP地址的方法。分享给大家供大家参考,具体如下: 1、获取本机的IP地址集合: /// /// 获取本机所有ip地址 /// /// <param name=netType>InterNetwork:...
但是在通过了Apache,Squid等反向代理软件不能获取到客户端的真实IP地址了。 原因:由于在客户端和服务之间增加了中间代理,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给...
本文主要介绍了PHP获取真实客户端的真实IP(REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR)的方法,具有很好的参考价值。下面跟着小编一起来看下吧
IP地址访问控制,得到真实的客户端地址,再得到服务端的地址,请求IP一一比较
易语言伪造网页访问ip地址 结合HTTP扩展请求头 X-Forwarded-For 可以对客户端IP进行伪造 X-Forwarded-For 是一个 HTTP 扩展头部,用来表示HTTP请求端真实 IP,HTTP/1.1 协议并没有对它的定义,但现如今X-Forwarded-...
$_SERVER[“REMOTE_ADDR”] 来取得客户端的 IP 地址 但如果客户端是使用代理服务器来访问 那取到的就是代理服务器的 IP 地址 要想透过代理服务器取得客户端的真实 IP 地址 就要使用 $_SERVER[...
在很我的时候我们需要得到用户的真实IP地址,例如,日志记录,地理定位,将用户信息,网站数据分析等,其实获取IP地址很简单$_SERVER['REMOTE_ADDR']就可以了。下面我们就来给大家汇总一下常用的几种获取IP地址的方法...
介绍一个适用于各种数据库链接类,返回根据从结果集取得的行生成的数组,返回根据所取得的行生成的对象,取得前一次 MySQL 操作所影响的记录行数,获得客户端真实的IP地址。
基于 DNSPod 用户 API 实现的纯 Shell 动态域名客户端,优先适配网卡地址,无法获得合法外网地址则使用外部接口获取 IP 地址 使用方法 编辑ddnspod.sh,分别修改/your_real_path/ardnspod、arToken和arDdnsCheck为...
攻击是利用应用程序之间基于IP地址的认证机制,攻击者通过IP地址欺骗获得远程系统的非法授权访问。 5 IP欺骗 过程描述: 1、X->B: SYN(序列号为M),IP=A 2、B->A: SYN(序列号为N),ACK(应答序号=M+1) 此时A没有同...
关键点:DHCP snooping会在接入的交换机上建立一个DHCP绑定表,为每一个分配的IP建立一个表项,其中包括客户端的IP地址、MAC地址、端口号、VLAN编号、租用和绑定类型等信息。也可手动向这个绑定表中添加表项。 SW1#...
内容: 1 转换基本数据类型;运算符;计算阶乘; 2 复数类;java的参数传递;...获取客户端的真实ip地址; jsp无刷新聊天室; 设置和读取cookie; 上传文件; 用servlet生成图形验证码; 用servlet实现分页查看数据库;
无需具有真实IP地址的专用服务器。适用于钓鱼,帆船赛和集体水上娱乐活动。 该软件将用作通信环境,因此可以通过移动互联网和公共wi-fi平稳运行。空间信息通过获取。任何与AIS兼容的设备或软件都可以接受netAIS消息...