Как через javascript узнать ip адрес?

Пользователь

от ottilie.farrell , в категории: JavaScript , 3 года назад

Как через javascript узнать ip адрес?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от roma , 3 года назад

@ottilie.farrell На самом деле не так много вариантов получить IP адрес через Javascript:

  1. Лучше всего конечно использовать свой сторонний бэкенд сервер.
  2. Или использовать сторонние готовые сервисы.

Как вариант использовать от Amazon:

1
2
3
4
5
function getMyIp() {
  fetch("https://checkip.amazonaws.com/").then(res => res.text()).then(data => console.log(data))
}
// Даст Ваш локальный адрес.
getMyIp()


Пользователь

от maya , 2 года назад

@ottilie.farrell 

Вы можете использовать следующий код, чтобы узнать IP-адрес пользователя через JavaScript:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function getUserIP(onNewIP) { //  onNewIp - your listener function for new IPs
    //compatibility for firefox and chrome
    var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
    var pc = new myPeerConnection({
        iceServers: []
    }),
    noop = function() {},
    localIPs = {},
    ipRegex = /([0-9]{1,3}(.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
    key;

    function iterateIP(ip) {
        if (!localIPs[ip]) onNewIP(ip);
        localIPs[ip] = true;
    }

     //create a bogus data channel
    pc.createDataChannel("");

    // create offer and set local description
    pc.createOffer().then(function(sdp) {
        sdp.sdp.split('
').forEach(function(line) {
            if (line.indexOf('candidate') < 0) return;
            line.match(ipRegex).forEach(iterateIP);
        });
        
        pc.setLocalDescription(sdp, noop, noop);
    }).catch(function(reason) {
        // An error occurred, so handle the failure to connect
    });

    //listen for candidate events
    pc.onicecandidate = function(ice) {
        if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
        ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
    };
}

// Usage

getUserIP(function(ip){
    console.log(ip);
});


Обратите внимание, что этот код работает только в браузерах, которые поддерживают WebRTC, таких как Google Chrome и Mozilla Firefox.