Обнаружение текущего IP через расширение Chrome? - PullRequest
2 голосов
/ 05 октября 2011

Моему расширению Chrome нужно знать, по какому IP-адресу компьютера, на котором он работает (реальный IP-адрес). Есть ли простой способ сделать это?

Ответы [ 3 ]

3 голосов
/ 05 октября 2011

Вы всегда можете использовать сервис 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);
2 голосов
/ 05 октября 2011

Да, но из-за NAT вы не можете узнать это без запроса сети.Вы можете попробовать мой http://external -ip.appspot.com / , который я сделал для той же задачи

1 голос
/ 12 сентября 2015

ДА!Вы можете получить IP-адреса своей локальной сети через API WebRTC.Вы можете использовать этот API для любого веб-приложения, а не только для расширений 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>

Надеюсь, это поможет!

...