【问题标题】:Method to get the client ip address获取客户端ip地址的方法
【发布时间】:2009-08-21 05:46:07
【问题描述】:

我正在开发一个应用程序,人们似乎可能会试图在代理服务器后面隐藏他们的客户端 IP 地址。

是否有统一的方法来获取代理背后的实际客户端 IP 地址?查看Ruby docs,它明确指出

request.remote_ip

request.remote_addr

两者都将返回代理地址而不是实际的客户端 IP,并且我被其余 HTTP 标头中的“可能包含”描述所抛出。

【问题讨论】:

    标签: ruby-on-rails ruby proxy ip-address


    【解决方案1】:

    这取决于代理是否支持X-Forwarded-For。我会运行一些测试以确保 remote_ip 不是您要查找的内容 - 基于快速浏览它尝试读取 HTTP_X_FORWARDED_FOR 标头的代码。

    【讨论】:

    • 如果 remote_ip 正在检查“最远”的 HTTP_X_FORWARDED_FOR,那么我不必担心自己尝试解决这个问题。谢谢。
    【解决方案2】:

    我是从代理后面的机器上输入的。我不是在“隐藏”,这就是我的组织(以及大多数其他大到拥有服务器的组织)的工作方式。我没有固定的 IP 地址:它是动态分配的。所以我看不出知道我的“当前”IP地址会有什么帮助,因为明天会有所不同。哎呀,明天我可能会通过不同的代理连接(我为一个大型组织工作)!

    在家里,我有几台机器通过路由器连接。同样,我没有固定的 IP 地址:它是由我的 ISP 动态分配的。这是一个大型 ISP,因此上游某处可能有一个代理服务器。

    所以我认为你想要的在技术上是不可能的。什么样的应用程序会让“人们很可能会试图隐藏他们的客户端 IP 地址”?你想解决什么问题?

    【讨论】:

    • 我正在创建一个在线投票应用程序,并希望采取合理的措施来防止投票填充 - 结帐musicmachinery.com/2009/04/15/inside-the-precision-hack 以应对最坏的情况。我可能应该在我原来的问题中指定“匿名代理”,因为您列出的示例(公司或本地 NAT)是正确的,但从我的角度来看是可以管理的。
    • 这里是几年后,但即使IP不时变化,它对于高级地理信息也很有用。我的 ISP 可能会不时给我一个不同的 IP,但它们看起来都一样。例如,很明显我在美国的某个地方。这对于许多应用程序来说已经足够了。
    猜你喜欢
    • 2019-01-14
    • 2019-11-13
    • 1970-01-01
    • 2013-07-07
    • 2011-05-26
    • 2015-03-01
    • 2015-01-29
    • 2011-01-08
    • 2014-12-29
    相关资源
    最近更新 更多