使用Flash / SWF应用程序检索用户的“真实”IP地址

时间:2010-06-27 21:12:09

标签: proxy flash ip-address

我几乎可以肯定这是可能的,但我不确定该怎么做。

基本理念: 用户使用HTTP / socks代理访问网站。隐藏的.swf文件嵌入在站点上,当由客户端加载时,将数据发送回Web服务器,并允许将IP与相应的会话ID一起记录,该会话ID将代理IP与真实联系起来IP在一起。

我的问题是如何在flash中执行此操作?我搜索了一些例子,但是我在这个问题上找到的所有人都声称可以做到这一点。

3 个答案:

答案 0 :(得分:0)

我不认为Actionscript有任何方法可以获取客户端计算机的IP地址,而无需对服务器执行某种远程调用,这将解析代理的IP地址。

答案 1 :(得分:0)

我认为使用 Java 小程序和 InetAddress 类可能会更好。我之前没有尝试过获取外部可见的IP地址,但我认为这是可能的。

An InetAddress Example

编辑:

大多数连接都是客户端到网关(到 n 代理)进行服务。

网关知道客户端的IP,但没有任何实际理由可以将其交给任何要求的人,因为它几乎总是私有的。请参见下图中的ME。

(ME:192.168.0.40 -> {GATEWAY:192.168.0.1) [EXT.IP:56.43.22.8} -> YOU:87.53.57.27]

如果您需要通过IP唯一地识别客户,大约,那么您需要 EXT ernal IP 。如果您的客户端有直接连接,只通过他们的路由器说,您的服务器在连接时会知道该地址。 Flash Player没有逻辑上的原因来了解您的外部IP,不要介意通过API公开它,因为它无法绑定侦听器套接字。

使用HTTP代理,服务器不知道客户端最近(也是最独特)的外部IP,因为服务器只能看到链中的最后一个代理。此外,代理服务器的目的是什么,可以公开它的客户端地址 - 这样做会使代理服务器无法实现。

那么Flash Player和P2P呢?再说一次,没有雪茄;

所有这些活动都发生在本机代码中,在代码运行的沙箱不可见的VM部分中。即使您可以访问它,如果您的客户端通过代理连接也将完全无用 - 客户端只知道第一跳和目的地,没有代理x 可能无法访问 - 并且服务器只知道客户端y ,它们可能是也可能不是真正的客户端,或者 n 代理链中的最后一个代理...

澄清:

  • 在外面,知道客户地址的唯一原因是连接到它
  • 在内部,了解外部地址的唯一原因是为其他人打开一个端口以启动与您的连接
  • 服务器只能查看链中的最后一个链接,需要告知其他任何内容,例如与客户端建立连接的目的地,但是......
  • Flash无法打开侦听器套接字,所以永远不需要知道它在外面是谁......
  • 即使有一天,你也不幸,因为使用HTTP代理的客户端可能无法访问,否则为什么还要使用代理?

如果想要IP地址背后的全部原因是唯一ID客户端?生成GUID并将其与SharedObject一起存储 - 我知道我可以早点说出来,哈哈

答案 2 :(得分:0)

你是对的,我可以用Flash p2p API完成它。客户端打开页面后,Swf-app会向服务器发送消息。 P2P在Flash中可用作RTMFP协议,例如可以与https://github.com/randunel/ArcusNode一起使用(另请参阅https://github.com/OpenRTMFP)。因此,在服务器上,您应该等待消息并在其后记录远程IP。