老调重谈:获取用户IP,ip138能够获取到真实的IP

高坚果兄弟 2014-03-09 12:19:17
加精
最近在弄nginx反向代理,引发了对获取用户IP的深入学习(以前发的帖子都没有满意结贴,没的返还50%积分,还有编辑器难用,抱怨一下)。

我在北京用的是宽带通的宽带,他们肯定有自己的服务器(缓存啥的,我也不懂的),请求网站的时候,肯定是通过他们的服务器的,而且是匿名代理,这一点通过下面贴出来的服务器接收的请求头可以看出来。
这样就导致了获取的用户IP是宽带提供商的服务器IP地址,而不是宽带提供商分配给用户的IP地址。

经过测试,得出下面这些数据:
1、223.21.65.225 宽带提供商给路由器分配的IP地址(真实IP)
2、118.186.134.251 服务器端收到用户的IP地址(代理服务器IP)
3、118.186.134.251 百度加速乐查询到用户的IP地址(代理服务器IP)
4、223.21.65.225 ip138.com查询到的IP地址(真实IP)
5、访问ip138.com时,携带X-Forwarded-For=2.2.2.2请求头,难么查询到的IP就2.2.2.2(虚假IP)

在程序里我用getRemoteAddr,getHeaders("X-Forwarded-For")均无法获取到真实IP地址,百度加速乐也没有正确获取到,由此我纳闷ip138是如何的到我真实IP的,还是有什么新的获取IP地址的方法?请csdn各位牛人指教


****以下是图片,供参考****

宽带提供商给路由器分配的IP地址223.21.65.225:


服务器端收到的IP地址118.186.134.251:

其中并没有X-Forwarded-For请求头,因此我判断是通过了透明代理(宽带通服务器),没获取到真实的IP地址。

验证一下,通过百度加速IP归属地查询获取到地址118.186.134.251:

和我获取的IP地址是一样的,并不是我真实的IP地址。

但是ip138却获取到了我真实的IP地址223.21.65.225:
(http://iframe.ip138.com/ic.asp,他什么也没做,请求了就直接返回IP地址,因此我截源码的图片)

结果是ip138确实获取到了我的IP地址。

验证一下,我添加X-Forwarded-For请求头,然后访问ip138,IP2.2.2.2:
...全文
42387 56 打赏 收藏 转发到动态 举报
写回复
用AI写文章
56 条回复
切换为时间正序
请发表友善的回复…
发表回复
寂静的神经 2016-08-23
  • 打赏
  • 举报
回复
我遇见这个问题了,我用php获取铁通网络的外网IP获取的不准,获取到的居然是联通IP,但是IP138获取的就是准确的。
Zhang_qiankun 2014-10-18
  • 打赏
  • 举报
回复
我当年做的IP监控 用的就是淘宝的接口
刘思达2012 2014-06-14
  • 打赏
  • 举报
回复 1
引用 16 楼 AsdsNT 的回复:
这个问题实在是简单到不能简单:完全依赖公网服务器本身的特性决定的,ip138和你一样,什么都没有做,他之所以可以获取到某些网络环境的真实ip地址,仅仅只是他的服务器处于的机房不同,物理连接不同而已。具体来说就是,多线路机房获取到的真实外网ip概率要大很多,而且我告诉你,绝大多数国外服务器也能获取到更大范围内的真实外网ip。我本人能够通过编程实现任意网络环境做公网服务器而能获取到比目前你能看到的任何获取用户外网服务器的网站更准确的ip. 我基本能实现自我感知自己的外网ip是哪一个,你给我一个ip,我能判断他究竟可不可能是我的真实外网ip.
这个似乎可以用tracert来验证。楼主你tracert到ip138,看看是不是没有经过 118.186.134.251 的路由,而到另外的网站,是否经过了 118.186.134.251 的路由。 另外最近看了下,很少有客户有 X-Forwarded-For 信息,于是把这个给放弃了,就用remote address了。 如果要获得真实ip必须要把服务器布多,我想,算了吧,呵呵。除非谁服务器很多的,然后有提供这种服务,帮你去获得客户端的最真实ip。
高坚果兄弟 2014-06-14
  • 打赏
  • 举报
回复
引用 53 楼 liusida2012 的回复:
[quote=引用 16 楼 AsdsNT 的回复:] 这个问题实在是简单到不能简单:完全依赖公网服务器本身的特性决定的,ip138和你一样,什么都没有做,他之所以可以获取到某些网络环境的真实ip地址,仅仅只是他的服务器处于的机房不同,物理连接不同而已。具体来说就是,多线路机房获取到的真实外网ip概率要大很多,而且我告诉你,绝大多数国外服务器也能获取到更大范围内的真实外网ip。我本人能够通过编程实现任意网络环境做公网服务器而能获取到比目前你能看到的任何获取用户外网服务器的网站更准确的ip. 我基本能实现自我感知自己的外网ip是哪一个,你给我一个ip,我能判断他究竟可不可能是我的真实外网ip.
这个似乎可以用tracert来验证。楼主你tracert到ip138,看看是不是没有经过 118.186.134.251 的路由,而到另外的网站,是否经过了 118.186.134.251 的路由。 另外最近看了下,很少有客户有 X-Forwarded-For 信息,于是把这个给放弃了,就用remote address了。 如果要获得真实ip必须要把服务器布多,我想,算了吧,呵呵。除非谁服务器很多的,然后有提供这种服务,帮你去获得客户端的最真实ip。 [/quote] 嗯,淘宝ip地址库提供这样的api,不单单是查询ip对应的城市,也可以准确获取到我的地址,虽然没有公布这个接口,但看他的网页源码还是得到了这个地址http://ip.taobao.com/service/getIpInfo.php?ip=myip,可惜不能在别的网站调用,给自己打开玩玩还是可以得。 X-Forwarded-For随随便便就可以伪造,和真正的使用代理的用户混在一起,弄个ip好复杂
高坚果兄弟 2014-03-23
  • 打赏
  • 举报
回复
还有没有人啊,没人回复就明晚结贴了
比特灵 2014-03-21
  • 打赏
  • 举报
回复
同意32楼的说法。
高坚果兄弟 2014-03-20
  • 打赏
  • 举报
回复
引用 46 楼 lt5225262 的回复:
这个讨论有意义,值得继续
嗯,比如通过IP来限制用户访问频率,首先得正确获取到用户IP,极端情况下,好多人无缘无故变成同一个IP,又同时访问网站,nginx的连接限制,limit_conn_zone $binary_remote_addr这种配置就有点显得不太友好,然而ip138确实获取到了正确IP就不用担心这种情况了,好奇他们是怎么实现的
lt5225262 2014-03-20
  • 打赏
  • 举报
回复
这个讨论有意义,值得继续
BinaryCSharp 2014-03-20
  • 打赏
  • 举报
回复
围观MARK等馅饼
浪里花 2014-03-18
  • 打赏
  • 举报
回复
mark下,有时要用
raedon 2014-03-18
  • 打赏
  • 举报
回复
mark,有时会蛋疼这个问题
网络科技 2014-03-18
  • 打赏
  • 举报
回复
路过,看看。。。也做过获取IP地址的程序,都是简单的,没想那么复杂
  • 打赏
  • 举报
回复
lentoo 2014-03-18
  • 打赏
  • 举报
回复
高坚果兄弟 2014-03-17
  • 打赏
  • 举报
回复
有人研究过这样的问题么,出来分享一下
xusir98 2014-03-17
  • 打赏
  • 举报
回复
xusir98 2014-03-17
  • 打赏
  • 举报
回复
高坚果兄弟 2014-03-16
  • 打赏
  • 举报
回复
还有木有人呀
nettman 2014-03-16
  • 打赏
  • 举报
回复
感谢楼主分享
  • 打赏
  • 举报
回复
通过楼主的实验可知,ip138支持从X-Forwarded-For判断ip来源,而“百度加速IP归属地”获取到了“错误”的ip来源。 那么情况很有可能是这样的,你的代理服务器添加了X-Forwarded-For头,如果你的包本来就有X-Forwarded-For头,那么代理服务器不覆盖你的配置。 仅仅抓包是看不出来这一点的,因为你只能抓到你发出的包,无法查看ip138收到的包。 可以另找一人有外网ip的,让他开一个http服务,然后你访问一下,在对方处抓一下包,一切就都真相大白了。 真相可能是:你的WAN口ip是A,运营商的代理服务器ip是B,那么对方收到的包的来源地址是B,包中某个地方标识出了真正的来源地址是A 这可能是运营商应对ip地址资源不足的策略
加载更多回复(32)
消防部队信息化建设调研报告 信息技术革命席卷全球,迅速而深刻地改变了人类社会存在和发展的方式。这种改 变不仅体现在个人生活中,而且也不断的影响着社会各行各业。就我们消防工作来说, 消防信息化对实现消防业务办公自动化和消防业务信息共享及其综合利用、建立消防部 队快速反应机制、提高消防部队预防和扑救火灾以及处置其他灾害事故的实战能力、优 化消防业务工作流程、实现消防业务管理科学化规范化、提高工作质量和管理水平等方 面,都起到了积极作用。消防的信息化建设是利用先进可靠、实用有效的现代计算机、 网络及通信技术对消防信息进行采集、储存、处理、分析和挖掘,以实现消防信息资源 和基础设施高程度、高效率、高效益的共享与共用的过程。它的范畴涵盖了通信网络基 础设施建设、信息系统建设及应用、安全保障体系建设、运行管理体系建设和标准规范 体系建设等多个方面的内容。 而计算机网络的建设又是我们信息化建设的一个重头。计算机网络是现代通信技术 和计算机技术相结合的产物,是人类上个世纪最重伟大发明成就之一,也是21世纪产业 的"领头羊"之一。当今,随着计算机的普及和发展,通过通信线路连接起来的,具有强 大通信与信息交换功能的计算机网络,已经成为世界计算机发展进入新时代的标志。而 且,计算机网络也正在改变着人们的学习、工作、生活方式,如网上购物,网上就医, 网上教学,网上办公,网上开会,网上聊天,网上……这些已成为现代社会人们学习、工 作、生活的新方式。同样地,计算机网络技术的使用对消防工作也产生了巨大的影响。 如,它改变了传统的办公(监督管理)方式和信息资源管理方式;改变了传统的火灾报警 方式和接警处理方式。 我们可以通过计算机网络建立计算机网络报警系统,扩大消防设施的社会覆盖率, 可以通过计算机网络建立计算机网络消防宣传站点,促进消防宣传的社会化;还可以通 过计算机网络建立计算机网络消防教育站,促进消防教育的社会化。 现如今,"隐患险于明火,防范胜于救灾,责任重于泰山"这句口号的提出,为我们 的消防工作提出了更高的要求,那就是不仅要做好各类险情的抢险救援工作,在此基础 上,我们更应该做好的是消防的宣传以及教育工作。那就必须将我们的消防宣传工作与 教育工作做的与社会更为贴近。也就是说,我们得将消防宣传教育工作社会化。 消防宣传社会化主要就体现在从个体消防宣传意识到群体意识的转化过程上。早在 建国初期,消防宣传只是以简单的宣传口号、标语等为形式,宣传的内容和方法也比较 单一,宣传的目的就是预防火灾事故的发生,侧重在"防"上做文章。到了六七十年代, 逐渐出现了电视媒体消防宣传。今天,随着改革开放的深入和经济建设的发展,科学技 术和先进设备广泛运用,消防工作越来越受到各级政府乃至全社会的广泛重视。消防宣 传作为消防工作的重要组成部分,在内容、方法及形式上亦不断丰富,依靠的主要宣传 媒体是广播、电视、报纸、杂志等。群众性消防宣传活动不断增多,宣传内容趋向多样 化,既有"防"又有"消",既贴近客观实际又贴近百姓生活。故消防宣传社会化是社会发 展的必然。 然而在我们开展消防宣传工作的同时,也面临了一些问题。如,一些商人借消防宣 传进行投机从而出现了消防宣传商业化的不良倾向,在社会上造成了不良的影响。再如 ,社会上仍有一部分人缺乏消防宣传意识,认为其可有可无,即使是宣传也只要做些表 面文章,要个场地,发发宣传单,放放广播,宣传车绕城转转就足够了。所以社会上也 流传这样一句话:"消防年年搞宣传,总是老调又重弹。"此外,我们由于消防部门本身 的特点所限,我们的消防人员较少,消防宣传资金不足,使得消防宣传缺乏了足够的物 质基础。于是在实际宣传工作中出现了形式单调陈旧、仅局限于几个老样式,缺乏创新 精神,群众对此不感兴趣等现象。甚至有些宣传活动目的性不强,一群人围着看,却不 知何为;有的只注重正面典型的宣传报道,忽略暴露和解剖反面典型,弘扬成绩的多, 暴露问题的少,消防宣传缺乏力度。 但是,在计算机技术逐渐普及并发展的今天,计算机网络也走进了各个家庭,计算 机网络的建立与发展不仅改变了传统的时空观念,同时也缩小了人们之间的距离,更极 大地促进了信息资源的交流共享。借助"因特网"的便利优势,我们不仅可以建立起消防 宣传站,把消防宣传活动以电子工艺广告的形式送进各家。这样,既可发动广大公民共 同参与,增强群众的积极性,又可通过互动等方式实现宣传的科学化、立体化,即符合 社会发展需要、符合大众心理,采取多种形式相融合的手段,使消防宣传升华到一种高 级的综合形式。 而消防教育与消防宣传有所不同。消防是一门涉及社会科学、自然科学、技术科学 的多元综合性边缘学科。我国的消防教育体系主要采用的是军人和准军人培训教育模式 。这是针对消防部门的专业人员而言。随着社会的不断进步,人类需要不断改善自

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧