【问题标题】:How to get local IP from Firefox extension code如何从 Firefox 扩展代码中获取本地 IP
【发布时间】:2012-03-30 04:25:31
【问题描述】:

我正在编写一个使用nsIServerSocket 来监听套接字连接的Firefox 扩展。我正在寻找一种方法让扩展代码以编程方式学习运行 Firefox 扩展的机器的本地网络地址。此信息通过带外方式传递给本地网络上的客户端,以便它可以打开到扩展的套接字连接。

到目前为止,我对此的研究只发现了希望通过DNS resolution 或使用Java applets 查找IP 地址of loaded websites 的个人,这不适合FF 扩展。 Geolocation API 上的 Mozilla 开发者页面提到:

“交换的数据包括 WiFi 接入点数据、访问令牌(类似于 2 周 cookie)和用户的 IP 地址”

但不表示直接访问用户IP地址的API。

此时我唯一的想法是使用nsIProcess 调用本地进程并从那里解析IP。这似乎非常骇人听闻,必须在每个操作系统的基础上进行处理。 IE。我要运行 ifconfig、netcfg、ipconfig 吗?用什么参数?

有人知道更好的解决方案吗?

【问题讨论】:

  • 感谢 Bergi 的链接修复。

标签: javascript sockets firefox firefox-addon


【解决方案1】:

您在这里也使用nsIDNSService interface - 它有一个可以解析的myHostName 属性:

var dns = Components.classes["@mozilla.org/network/dns-service;1"]
                    .getService(Components.interfaces.nsIDNSService);
var myName = dns.myHostName;
var record = dns.resolve(myName, 0);
while (record.hasMore())
  alert(record.getNextAddrAsString());

您应该期望它会生成多个地址,但并非所有地址都有效 - 即使对于本地网络,您也会获得至少两个地址(IPv6 和 IPv4),此外您可能还会获得 Teredo 地址、地址来自 VMWare & Co. 等安装的虚拟适配器。

【讨论】:

  • 谢谢。这正是我一直在寻找的。我感谢有关多个接口地址的提醒。
  • 嘿@Wladimir-Palant,我知道这已经有一段时间了,但如果你知道答案,那真的很有帮助。阅读了这篇文章,这是否意味着任何 Firefox 插件都可能读取您的本地 IP 地址,即使您使用的是通过 Firefox 配置的匿名代理?换句话说,尽管有代理,插件总是可以读取本地 IP 地址?
  • @DomainsFeatured:Firefox 附加组件目前没有沙盒,它们可以完全访问您的计算机 - 所以它们可以做很多事情。如果nsIDNSService 不存在,他们可以运行外部命令来读取您的网络配置。或者他们可以简单地暂时禁用代理设置。 Web Extensions 将改变这一点,但即便如此,我还是要说您最好信任您已安装的附加组件。从好的方面来说,由 addons.mozilla.org 审查的插件通常都很好 - 审查确保他们做他们声称做的事情。
  • 嘿@Wladimir-Palant,非常感谢您确认即使没有“nsIDNSService”插件也可以访问本地 IP 信息。如果你有时间,我认为你可以比大多数人更好地回答这个问题,我会选择你的答案正确并投票:stackoverflow.com/questions/39582880/…
【解决方案2】:

我敢打赌,Geolocation API 中提到的 IP 地址不是本地计算机的 IP 地址。我的意思是,192.168.0.100 在世界的哪个位置,嗯?一般来说,这不是一条有用的信息。

由于您处理的是本地网络,您能否设置一个仅打印出客户地址的小型网页?然后,您可以通过请求该网页来了解您的 IP。

【讨论】:

  • 好点 RE:Geolocation API。我的扩展的目的/部署排除了我可以运行单独的服务来回显请求 IP 的假设。否则,这将是一个潜在的想法。谢谢!
猜你喜欢
  • 2022-08-02
  • 2011-04-15
  • 2021-10-27
  • 2018-08-05
  • 1970-01-01
  • 2011-01-21
  • 2010-11-08
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多