【问题标题】:Using Flash/SWF applications to retrieve a user's "real" IP address使用 Flash/SWF 应用程序检索用户的“真实”IP 地址
【发布时间】:2010-06-27 21:12:08
【问题描述】:

我几乎可以肯定这是可能的,但不知道如何去做。

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

我的问题是如何在 Flash 中执行此操作?我搜索了一些例子,但我在这个主题上找到的只是人们声称这是可能的。

【问题讨论】:

    标签: proxy flash ip-address


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我认为使用 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 呢?同样,没有雪茄;

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

      澄清一下:

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

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

      【讨论】:

      • 嘿。 Java 的问题在于它更引人注目,并且安装的用户群更小。
      • 不幸的事实是不幸的。这可能是 Adob​​e 永远不会让 Flash 做的事情,所以如果你真的需要这些信息,你可能不得不与 Java 决裂。有趣的是,一些 Java 类是通过 Firefox 中的 Javascript 公开的。尝试评估java.net.InetAddress.getLocalHost()...
      • 为什么我需要使用 Java?显然可以在 Flash 中建立连接,否则所有基于 Flash 的流媒体视频和网络摄像头网站如何工作?
      • 我觉得你不太明白。当有人使用 HTTP 代理/socks 代理时,大多数人只需在浏览器配置/选项菜单中输入它。这对于常规浏览来说很好,但我想说的是,flash 会忽略这些设置。因此,由 flash 发起的连接不会通过代理进行路由。
      • 这取决于他们使用的浏览器以及它与 Flash 通信的信息。某些浏览器中的某些代理配置将起作用。但在没有的情况下,你无能为力。即使您可以获得有关其出站连接的所有信息,Flash 也不会为 HTTP 代理格式化数据包 - 因为它需要手动完成,并且您没有足够的控制 API 级别。你能解释一下你真正想要做什么以及为什么它很重要吗?
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 2013-10-02
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多