как получить ip адрес клиента через javascript без использования сервера

Аватар пользователя Maksim Litvinov
Maksim Litvinov
23 апреля 2025

Одним из способов получить IP адрес клиента через JavaScript является использование стороннего сервиса для определения этого IP. Например, можно отправить запрос к сайту, который вернет IP адрес клиента. Например, можно воспользоваться сервисом https://api.ipify.org/.

Пример кода:

fetch('https://api.ipify.org?format=json')
  .then(response => response.json())
  .then(data => {
    const clientIp = data.ip;
    console.log(clientIp);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Еще один способ - использование WebRTC (Web Real-Time Communication) API. Этот метод также позволяет получить IP адрес клиента, но тоже не является абсолютно надежным. Пример кода для использования WebRTC API:

const pc = new RTCPeerConnection();
pc.createDataChannel('');
pc.createOffer()
  .then(offer => pc.setLocalDescription(offer))
  .then(() => new Promise(resolve => {
    if (pc.iceGatheringState === 'complete') {
      resolve();
    } else {
      function checkState() {
        if (pc.iceGatheringState === 'complete') {
          pc.removeEventListener('icegatheringstatechange', checkState);
          resolve();
        }
      }
      pc.addEventListener('icegatheringstatechange', checkState);
    }
  }))
  .then(() => {
    const regex = /candidate:.+ (\S+) \d+ typ/;
    const { sdp } = pc.localDescription;
    const ip = regex.exec(sdp)[1];
    console.log(ip);
  });

Использование сторонних сервисов или API для получения IP адреса клиента может нарушить приватность пользователей, поэтому рекомендуется использовать подобные методы осторожно и с учетом правил обработки личных данных.

0 0