Как получить IP-адрес с помощью только Javascript

0

Введение

Javascript не может получить (или хранить где-либо) IP-адрес клиента, однако javascript способен создавать запросы Http, а серверные языки могут извлекать общедоступный IP-адрес пользователя, поэтому вы можете использовать это как преимущество. Другими словами, если вы хотите получить общедоступный IP-адрес пользователя, вы будете зависеть от запроса на любой сервер, чтобы получить IP-адрес. Однако с введением WebRTC вы сможете получить частный IP-адрес пользователя с помощью трюка, используя RTCPeerConnection.

В этой статье вы узнаете, как легко получить IP-адрес пользователя (частный, используя чистый javascript и общедоступный, используя сторонний сервис) с помощью нескольких трюков.

1

Используя webRTC

Интерфейс RTCPeerConnection позволяет вам создать соединение WebRTC между вашим компьютером и удаленным одноранговым узлом. Однако мы собираемся создать «прерванную» версию, чтобы получить IP-адрес клиента, используя только javascript.

Метод createOffer инициирует создание протокола описания сеанса (SDP), который хранит информацию о любых MediaStreamTracks, прикрепленных к сеансу, уже собранным агентами ICE (который содержит нашу цель, IP).

В более старых версиях этот метод использует обратные вызовы. Однако теперь возвращает значение, основанное на promises, которое возвращает необходимую нам информацию при заполнении:

Примечание: чистая реализация javascript вернет клиентский IP-адрес, а не публичный.

Метод getUserIP ожидает в качестве первого параметра функцию, которая будет вызываться, когда доступен IP-адрес клиента. Обратные вызовы принимают строку (ip) как первый (и уникальный) параметр. Вы можете увидеть предыдущий фрагмент в действии через JSFiddle:

2

Использование стороннего сервиса

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

Небезопасные соединения HTTP

Чтобы получить IP-адрес пользователя с сайта без сертификата SSL, вы можете положиться на ipinfo.io. Эта служба предлагает API для получения IP-адреса клиента с помощью простого вызова ajax:

Полученный объект данных содержит информацию о локализации, такую как: страна, город и т. Д., Когда она доступна. Серверы ipinfo используют латентную маршрутизацию DNS для обработки запроса так быстро, насколько это возможно.

Защищенные соединения HTTPS

Чтобы получить IP-адрес пользователя с веб-сайта даже на защищенных сайтах с помощью SSL, вы можете использовать службу ipify, которая предоставляет дружественный API, чтобы легко получить IP-адрес пользователя. Эта служба не имеет ограничений по запросу.

Вы можете использовать его в своем проекте, запрашивая API (с параметром формата, если вам нужно).

API URI Response Type Sample Output (IPv4) Sample Output (IPv6)
https://api.ipify.org text 11.111.111.111 ?
https://api.ipify.org?format=json json {"ip":"11.111.111.111"} ?
https://api.ipify.org?format=jsonp jsonp callback({"ip":"11.111.111.111"}); ?
https://api.ipify.org?format=jsonp&callback=getip jsonp getip({"ip":"11.111.111.111"}); ?

Вы можете использовать его с JSONP:

Или получить объект с помощью json-запроса с помощью jQuery:

Еще как вариант, вы можете создать свой собственный сервис, который возвращает IP адрес клиента, если знакомы с такими языками как PHP, ASP.NET и т. д.

Удачки 🙂

Похожие публикации

Комментарии