繁体   English   中英

如何从Firefox扩展代码获取本地IP

[英]How to get local IP from Firefox extension code

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

到目前为止,我对此的研究只发现了希望通过DNS解析或使用Java小程序找到已加载网站的IP地址个人,这不适合FF扩展。 Geolocation API上的Mozilla Developer页面提到:

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

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

此时我唯一的想法是使用nsIProcess调用本地进程并从那里解析IP。 这似乎是非常hackish,并且必须在每个操作系统的基础上处理。 即我运行ifconfig,netcfg,ipconfig? 用什么args?

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

您也可以在此处使用nsIDNSService接口 - 它具有可以解析的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。安装以及更多。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM