Как узнать IP-адрес сервера (с использованием JavaScript), к которому подключен браузер?
Можно ли найти IP-адрес сервера, к которому подключен браузер? Напр. если браузер обращается к http://www.google.com, можем ли мы сказать каким-либо образом, с каким IP-соединением он связан? Это очень полезно в случаях, когда Round-robin DNS. Итак, первый запрос a.com
приводит к 1.1.1.1
и последующему запросу в 1.1.1.2
и т.д.
Я не мог найти способ сделать это с помощью JavaScript. Возможно ли это? Если нет универсального способа найти эту информацию?
Ответы
Ответ 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>