Подтвердить что ты не робот

Как узнать IP-адрес сервера (с использованием JavaScript), к которому подключен браузер?

Можно ли найти IP-адрес сервера, к которому подключен браузер? Напр. если браузер обращается к http://www.google.com, можем ли мы сказать каким-либо образом, с каким IP-соединением он связан? Это очень полезно в случаях, когда Round-robin DNS. Итак, первый запрос a.com приводит к 1.1.1.1 и последующему запросу в 1.1.1.2 и т.д.

Я не мог найти способ сделать это с помощью JavaScript. Возможно ли это? Если нет универсального способа найти эту информацию?

4b9b3361

Ответ 1

Честно говоря, это невозможно. Однако вы можете использовать предпочитаемый серверный язык для печати IP-адреса сервера клиенту, а затем использовать его, как вам нравится. Например, в PHP:

<script type="text/javascript">
    var ip = "<?php echo $_SERVER['SERVER_ADDR']; ?>";
    alert(ip);
</script>

Это зависит от настройки безопасности вашего сервера, хотя некоторые могут блокировать это.

Ответ 2

Попробуйте это как ярлык, а не как окончательное решение (см. комментарии):

<script type="text/javascript">
    var ip = location.host;
    alert(ip);
</script>

Это решение не может работать в некоторых сценариях, но оно может помочь для быстрого тестирования. Отношения

Ответ 3

Не знаю, как получить IP-адрес, но объект местоположения является частью ответа.

например. эти переменные могут быть полезны:

  • self.location.host - Устанавливает или возвращает имя хоста и номер порта местоположения
  • self.location.hostname - Устанавливает или восстанавливает часть имени хоста местоположение или URL.

Ответ 4

Вы не можете получить это вообще. Из Javascript вы можете получить только HTTP-заголовок, который может иметь или не иметь IP-адрес (как правило, имеет только имя хоста). Часть программы браузера предназначена для абстрагирования TCP/IP-адреса и разрешает вам иметь дело с именем хоста.

Ответ 5

На самом деле нет способа сделать это с помощью JavaScript, если вы не используете какой-то внешний источник. Даже тогда это может быть не на 100% правильным.

Ответ 6

Можно сделать это через подключаемый модуль, например, Java-апплет или Flash, а затем вызвать Javascript функцию в апплете или наоборот (ИЛИ иметь JS-вызов функции во Flash или другом плагине) и вернуть IP-адрес. Это может быть не IP-адрес, используемый браузером для получения содержимого страницы. Также, если есть изображения, css, js → браузер мог бы сделать несколько соединений. Я думаю, что большинство браузеров используют только первый IP-адрес, который они получают от вызова DNS (который успешно подключился, не уверен, что произойдет, если один из node опустится после того, как получено немного ресурсов и все еще будет получать другие) - timers/ajax, которые добавляют html, которые ссылаются на другие ресурсы).

Если java-апплет должен быть подписан, сделайте подключение к окну .location(полученному из javascript, если апплет является общим и может быть использован на любой странице на любом сервере), а только обратно на домашний сервер и использовать java.net.Address, чтобы получить IP.

Ответ 7

Я верю, что ответ Джон верен. Например, я использую свой ноутбук через Wi-Fi-сервис, управляемый конференц-центром. Я уверен, что JavaScript-браузер не работает, чтобы обнаружить IP-адрес, используемый поставщиком услуг. С другой стороны, может быть возможно обратиться к соответствующему внешнему ресурсу из javascript. Вы можете написать свой собственный, если ваш собственный, сделав ajax-вызов на сервер, который может принимать IP-адрес из заголовков HTTP и возвращать его, или попытаться выполнить поиск в googling "find my ip". Самое чистое решение - это, вероятно, захват информации до того, как страница будет обслуживаться, и вставьте ее в html, возвращенный пользователю. См. Как получить IP-адрес зрителя с помощью python? для получения информации о том, как захватить информацию, если вы обслуживаете страницу с помощью python.

Ответ 8

Я думаю, что вы можете использовать обратный вызов из запроса JSONP или, возможно, только чистые данные JSON, используя внешнюю службу, но на основе вывода javascript location.host следующим образом:

$.getJSON( "//freegeoip.net/json/" + window.location.host + "?callback=?", function(data) {
    console.warn('Fetching JSON data...');
    // Log output to console
    console.info(JSON.stringify(data, null, 2));
});

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

Вы можете использовать другую внешнюю службу вместо той, которую я использую для своих нужд. Очень хороший список существует и содержит тесты, выполненные здесь fooobar.com/questions/14759/...

Ответ 9

Я уверен, что следующий код поможет вам получить IP-адрес.

<script type="application/javascript">
    function getip(json){
      alert(json.ip); // alerts the ip address
    }
</script>

<script type="application/javascript" src="http://www.telize.com/jsonip?callback=getip"></script>