通过chrome扩展检测当前IP?

发布于 2024-12-08 08:42:47 字数 64 浏览 0 评论 0原文

我的 Chrome 扩展需要知道它正在运行的机器的 IP 是什么(真实世界 IP)有没有简单的方法可以做到这一点?

My Chrome extention needs to know what is the IP of the machine that it is running on (the real world IP) Is there a easy way of doing it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

话少心凉 2024-12-15 08:42:47

您始终可以使用 freegeoip 服务,我最喜欢的实现方式之一如下:

var geoip = function(data){
    if (data.region_name.length > 0) {
        console.log('Your external IP:', data.ip);
    }
}
var el = document.createElement('script');
el.src = 'http://freegeoip.net/json/?callback=geoip';
document.body.appendChild(el);

You could always use the freegeoip service, one of my favorite implementations to pull it in is as follows:

var geoip = function(data){
    if (data.region_name.length > 0) {
        console.log('Your external IP:', data.ip);
    }
}
var el = document.createElement('script');
el.src = 'http://freegeoip.net/json/?callback=geoip';
document.body.appendChild(el);
起风了 2024-12-15 08:42:47

是的,但是由于 NAT,如果没有网络请求,您无法知道它。您可以尝试我的 http://external-ip.appspot.com/,这是我为相同的任务

Yes, but because of NAT you can not know it without network request. You can try my http://external-ip.appspot.com/, which I made for the same task

亚希 2024-12-15 08:42:47

是的!您可以通过 WebRTC API 获取本地网络的 IP 地址。
您可以将此 API 用于任何 Web 应用程序,而不仅仅是 Chrome 扩展程序。

<script>

function getMyLocalIP(mCallback) {
    var all_ip = [];

    var RTCPeerConnection = window.RTCPeerConnection ||
        window.webkitRTCPeerConnection || window.mozRTCPeerConnection;

    var pc = new RTCPeerConnection({
         iceServers: []
    });

    pc.createDataChannel('');

    pc.onicecandidate = function(e) {

        if (!e.candidate) {
           mCallback(all_ip);
            return;
        }
        var ip = /^candidate:.+ (\S+) \d+ typ/.exec(e.candidate.candidate)[1];
        if (all_ip.indexOf(ip) == -1)
            all_ip.push(ip);
    };
    pc.createOffer(function(sdp) {
        pc.setLocalDescription(sdp);
    }, function onerror() {});
}
getMyLocalIP(function(ip_array) { 
    document.body.textContent = 'My Local IP addresses:\n ' + ip_array.join('\n ');
});

<body> Output here... </body>

希望有帮助!

YES! You can get the IP addresses of your local network via the WebRTC API.
You can use this API for any web application not just Chrome extensions.

<script>

function getMyLocalIP(mCallback) {
    var all_ip = [];

    var RTCPeerConnection = window.RTCPeerConnection ||
        window.webkitRTCPeerConnection || window.mozRTCPeerConnection;

    var pc = new RTCPeerConnection({
         iceServers: []
    });

    pc.createDataChannel('');

    pc.onicecandidate = function(e) {

        if (!e.candidate) {
           mCallback(all_ip);
            return;
        }
        var ip = /^candidate:.+ (\S+) \d+ typ/.exec(e.candidate.candidate)[1];
        if (all_ip.indexOf(ip) == -1)
            all_ip.push(ip);
    };
    pc.createOffer(function(sdp) {
        pc.setLocalDescription(sdp);
    }, function onerror() {});
}
getMyLocalIP(function(ip_array) { 
    document.body.textContent = 'My Local IP addresses:\n ' + ip_array.join('\n ');
});

<body> Output here... </body>

Hope it helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文