我几乎可以肯定这是可能的,但我不确定该怎么做。
基本理念: 用户使用HTTP / socks代理访问网站。隐藏的.swf文件嵌入在站点上,当由客户端加载时,将数据发送回Web服务器,并允许将IP与相应的会话ID一起记录,该会话ID将代理IP与真实联系起来IP在一起。
我的问题是如何在flash中执行此操作?我搜索了一些例子,但是我在这个问题上找到的所有人都声称可以做到这一点。
答案 0 :(得分:0)
我不认为Actionscript有任何方法可以获取客户端计算机的IP地址,而无需对服务器执行某种远程调用,这将解析代理的IP地址。
答案 1 :(得分:0)
我认为使用 Java 小程序和 InetAddress 类可能会更好。我之前没有尝试过获取外部可见的IP地址,但我认为这是可能的。
编辑:
大多数连接都是客户端到网关(到 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 代理链中的最后一个代理...
澄清:
如果想要IP地址背后的全部原因是唯一ID客户端?生成GUID并将其与SharedObject一起存储 - 我知道我可以早点说出来,哈哈
答案 2 :(得分:0)
你是对的,我可以用Flash p2p API完成它。客户端打开页面后,Swf-app会向服务器发送消息。 P2P在Flash中可用作RTMFP协议,例如可以与https://github.com/randunel/ArcusNode一起使用(另请参阅https://github.com/OpenRTMFP)。因此,在服务器上,您应该等待消息并在其后记录远程IP。