如何向用户显示他的真实IP地址(代理后面)

时间:2011-11-20 20:01:42

标签: javascript ruby-on-rails flash proxy ip

我使用Ruby on Rails作为服务器端框架,但我确信该解决方案是跨平台的。

我想向用户显示他的真实IP地址。该应用程序部署在企业网络中。大多数用户在没有代理,NAT等的情况下以直接的方式连接到应用程序。但是其中一些用户使用代理。

现在他们看到了代理服务器的IP地址。

向他们展示真实IP地址的最佳方式是什么?

我可以看到只使用服务端技术是不可能的。所以解决方案应该是使用JS(几乎所有用户启用JS),Flash(约80%用户使用它)或JAVA(约50%)。如果解决方案是rails插件会很棒,但它并不那么重要。

UPD。不幸的是,X-Forwarded-For标头没有任何有趣的信息。

UPD2。我想显示一个本地网络ip(例如192.168 ..)。

UPD3。几乎所有客户端浏览器都是Internet Explorer(7,8,6版本)

2 个答案:

答案 0 :(得分:2)

这是一个利益问题,但我要接受坏消息。无论您使用何种平台或代码,您都无法让解决方案100%正常工作。

让我解释一下, 一些代理将头部中的发起者ip转发(通常是x-forwarded-for)。这不是100%。

客户端的Javascript MAY(待定安全限制)为您提供客户端IP,但是,这可能是本地网络IP(例如192.168。

UPD:请参阅下面的评论,了解如果所有用户都在公司网络上,那么javascript解决方案说明就会有效。

答案 1 :(得分:0)

您可以将node.js用作websocket服务器,并在客户端上使用javascript websocket应用程序。

连接后,您可以读取可以通过Ruby访问的IP(通过文件系统api或其他内容)。

这是一个简单的错误日志应用程序,它有一个使用node.js的Websocket服务器的好例子:http://gonzalo123.wordpress.com/2011/05/09/real-time-monitoring-php-applications-with-websockets-and-node-js/

至于websockets如何与代理交互,我快速搜索了解到使用SSL保护websocket将使您能够绕过代理。 (参考:http://showmetheco.de/articles/2011/2/diving-into-html5-with-websockets-and-perl.html

虽然这个想法不在我的脑海中,但我不能为你做所有的研究,但这应该让你开始寻找潜在的解决方案。

BTW Websockets是一种HTML5功能,因此您的公司可能需要更新每个人的浏览器^^。

相关问题