Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определение IP адреса (https://javascript.ru/forum/misc/2272-opredelenie-ip-adresa.html)

Dekker8 30.11.2008 13:57

Определение IP адреса
 
народ как при помощи яваскрипт определить IP адрес?

ZoNT 30.11.2008 15:49

никак

jsjob 30.01.2009 11:00

JavaScript не может определять IP.
Но можете использовать следующйи скрипт
Код:

<script type="text/javascript"
src="http://ip-jobs.staff-base.spb.ru/ip.cgi"></script>

После вставки, на странице будет доступна переменная IP с адресом посетителя в типичной форме 1.2.3.4
Скрипт используется, как самореклама сервера.

q--b 30.01.2009 17:24

gethostbyaddr - получает имя Internet-хоста, соответствующее данному IP-адресу
gethostbyname - получает IP-адрес, соответствующее имени данного Internet-хоста
gethostbynamel - получает список IP-адресов, соответствующих имени данного Internet-хоста

p.s.
естественно это не js а php

Kolyaj 30.01.2009 17:36

q--b,
это к чему вообще?

q--b 31.01.2009 14:02

Цитата:

Сообщение от Kolyaj (Сообщение 11661)
q--b,
это к чему вообще?

ой - пардон, - не внимательно читал думал человеку надо с хостом работать
а если для определения вновь пришедшего юзверя так тут еще проще . . .
<?php
$ip=$_SERVER['REMOTE_ADDR'];
echo $ip;
?>

СРАЗУ ОГОВОРЮСЬ - ПРИВЕДЕННЫЙ ВЫШЕ ПРИМЕР ДЛЯ ОПРЕДЕЛЕНИЯ ЙП ЭТО НЕ JAVASCRIPT

вот такой вот простецкий скрипт тупо напечатает на странице йп с которого пришли. естественно переменную можно обработать по желанию . . .
только вот вы сами то определитесь зачем вам его определять ? и какой именно ?
Что значит - IP адрес? Адрес хоста, который произвел соединение с нашим сервером. Этот адрес по определению может быть только один. Один, а не 5 по цепочке. Рассмотрим типичный пример:
Есть пользовательский компьютер, который находится в офисной сети. IP компьютера 192.168.0.22
Офисная сеть включена через роутер в сеть здания. IP роутера - 10.10.0.3
Сеть здания, в свою очередь, подключена к интернету, через роутер. IP роутера - 77.88.22.11
Пользователь заходит на сайт, через НТТР прокси. IP прокси - 212.121.0.8
Так вот, сеть TCP/IP так устроена, что каждый следующий узел ничего не знает о предыдущих. Есть только пара хостов, которые соединяются друг с другом. В самих TCP/IP пакетах никакой информации о предыдущих хостах не предусмотрено.
Поэтому, как это ни обидно, но реальным адресом мы можем считать только последний в цепочке - адрес HTTP прокси
p.s.
а если таких проксей будет не 1 а 20 ? и посетитель будет работать из под какой нибудь shared ip программы которая будет менять постоянно доступные прокси из списка . . .вы определитесь для чего вам это надо и надо ли вообще ?

Андрей Параничев 31.01.2009 15:40

q--b,
Вопрос был, как через JavaScript определить IP пользователя.

q--b 31.01.2009 18:09

Цитата:

Сообщение от Андрей Параничев (Сообщение 11720)
q--b,
Вопрос был, как через JavaScript определить IP пользователя.

а я понял сразу я же написал ,что это не js да и выше ему написали ,что через js это никак не сделать. Я просто повернул голову в нужном направлении,а то ведь будет js'ом ip'шники определять. . .кто его знает может и изобретет новый метод ! :D

netnsk 16.04.2010 12:58

При разрешенном java в браузере:
<script type="text/javascript">
function natIP() {
  var w = window.location;
  var host = w.host;
  var port = w.port || 80;
  var Socket = (new java.net.Socket(host,port)).getLocalAddress().getHostAddress();
   return Socket;
}
</script>

abwer1 15.06.2012 20:16

Цитата:

Сообщение от Dekker8 (Сообщение 9017)
народ как при помощи яваскрипт определить IP адрес?

Средствами JavaScript это определить невозможно. Можно использовать сторонние сервисы - например, бесплатный Cognix GeoLocation API:

Определение IP JavaScript

codingfighter 17.06.2012 17:49

так определяйте айпи php-скриптом а яваскриптом делайте ajax-запрос, это как вариант. можно даже подключить .js скрипт который будет на самом деле php-скриптом и который просто будет ставить глобал переменную. ну только у себя на сервере его разместите.

feniks7 11.09.2013 15:29

Цитата:

Сообщение от abwer1
Средствами JavaScript это определить невозможно. Можно использовать сторонние сервисы - например, бесплатный Cognix GeoLocation API:

Определение IP JavaScript

Сомнительная штука, поставил на сайт, определяет Калугу, как MOSCOW.

Сергей1980 11.09.2013 17:38

У меня вообще Москву как Нижний Новогород определил. хм..

Ljubin 24.06.2014 01:12

Цитата:

Сообщение от q--b (Сообщение 11718)
ой - пардон, - не внимательно читал думал человеку надо с хостом работать
а если для определения вновь пришедшего юзверя так тут еще проще . . .
<?php
$ip=$_SERVER['REMOTE_ADDR'];
echo $ip;
?>

СРАЗУ ОГОВОРЮСЬ - ПРИВЕДЕННЫЙ ВЫШЕ ПРИМЕР ДЛЯ ОПРЕДЕЛЕНИЯ ЙП ЭТО НЕ JAVASCRIPT

вот такой вот простецкий скрипт тупо напечатает на странице йп с которого пришли. естественно переменную можно обработать по желанию . . .
только вот вы сами то определитесь зачем вам его определять ? и какой именно ?
Что значит - IP адрес? Адрес хоста, который произвел соединение с нашим сервером. Этот адрес по определению может быть только один. Один, а не 5 по цепочке. Рассмотрим типичный пример:
Есть пользовательский компьютер, который находится в офисной сети. IP компьютера 192.168.0.22
Офисная сеть включена через роутер в сеть здания. IP роутера - 10.10.0.3
Сеть здания, в свою очередь, подключена к интернету, через роутер. IP роутера - 77.88.22.11
Пользователь заходит на сайт, через НТТР прокси. IP прокси - 212.121.0.8
Так вот, сеть TCP/IP так устроена, что каждый следующий узел ничего не знает о предыдущих. Есть только пара хостов, которые соединяются друг с другом. В самих TCP/IP пакетах никакой информации о предыдущих хостах не предусмотрено.
Поэтому, как это ни обидно, но реальным адресом мы можем считать только последний в цепочке - адрес HTTP прокси
p.s.
а если таких проксей будет не 1 а 20 ? и посетитель будет работать из под какой нибудь shared ip программы которая будет менять постоянно доступные прокси из списка . . .вы определитесь для чего вам это надо и надо ли вообще ?


Полная версия всего, что выше.) -> http://www.phpfaq.ru/ip

Erolast 24.06.2014 07:50

http://habrahabr.ru/post/158417/ - вот еще поучительная история в тему)

sovsem-nub 11.11.2016 17:34

пусть здесь полежит. Яндекс карты API показывает город http://jsfiddle.net/HE2nY/1118/

<script src="https://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU" type="text/javascript"></script>

<script>
window.onload = function() {
  alert (ymaps.geolocation.city);
  };
 </script>

а.д.м 23.10.2017 11:59

Спешу на помощь!!
вставьте данный html-код на вашу страницу
<script type="text/javascript">
  var userip;
</script>

<script type="text/javascript" src="https://l2.io/ip.js?var=userip"></script>

<script type="text/javascript">
  document.write("Your IP is :", userip);
</script>

ruslan_mart 23.10.2017 15:25

Я один не понимаю, в каких таких случаях может понадобиться определить IP юзера на клиенте? Если Вы его определяете, значит куда-то хотите отправить на сервер... вот на сервере и нужно определять.

а.д.м, ага, только "var" не хватает. Если уж сервис предоставляет такую возможность, то пусть предоставляет её правильно.

Nexus 23.10.2017 17:19

Цитата:

Сообщение от ruslan_mart
а.д.м, ага, только "var" не хватает.

Где?

Вроде же все корректно.
Объявляется переменная, подключается скрипт, которому в параметрах передается её наименование, далее значение этой переменной выводится на страницу.
Что я упустил?

ruslan_mart 24.10.2017 01:32

Nexus, ну так в данном случае юзер сам её должен определять, что не правильно. Почему бы сервису сразу не отдавать JS, где переменная объявлена через var? Тут спорно конечно, потому что такие вещи никто так не собирает, обычно данные отдаются в каком-нибудь формате, типа JSON, XML и т.д.
Лучше всего отдавать просто какую-нибудь функцию, типа "getUserIp".

Nexus 24.10.2017 09:39

ruslan_mart, я, честно говоря, думал, что в подключаемом файле будет проверка на наличие переменной, ну или обращение к переменной, как к свойству объекта window..., а там все совсем иначе.

destus 24.10.2017 10:08

Объясните, что вы там странного нашли? Обычное общение по JSONP. Не отдается с var, потому что в ваших скриптах эта переменная может быть и не определена, а у других будет определена и внешний скрипт её затрёт.

Rasy 24.10.2017 13:43

Зачем вообще объявлять переменную userip, она ведь глобально пишется.

Nexus 24.10.2017 13:57

Цитата:

Сообщение от destus
Объясните, что вы там странного нашли? Обычное общение по JSONP. Не отдается с var, потому что в ваших скриптах эта переменная может быть и не определена, а у других будет определена и внешний скрипт её затрёт.

Странно уже то, что IP-адрес пользователя, который подтягивается сторонним скриптом будет присвоен переменной, которая хрен знает в какой области видимости находится.
Если определять подобную информацию разово, то определять её в глобальной области видимости и желательно константой, чтобы эти данные потом можно было использовать без создания очередного запроса.

destus 24.10.2017 14:06

Цитата:

которая хрен знает в какой области видимости находится.
?
<script type="text/javascript" src="https://l2.io/ip.js?var=abvgd"></script>

  <script type="text/javascript">
    var abvgd;
    document.write("Your IP is :", abvgd);
  </script>

Цитата:

Если определять подобную информацию разово, то определять её в глобальной области видимости и желательно константой
Фишка в том, что разработчик сам определяет название переменной, которая будет у него использоваться в приложении. А не сторонний сервис пишет в глобал что захочет и когда захочет.

JAMLIGHT 24.03.2020 15:39

Интересный скрипт, а можно как то прописать редирект в зависимости от геолокации по IP на другой домен или другой адрес страницы при посещении сайта?

Nexus 24.03.2020 20:25

JAMLIGHT, этим, имхо, сервер должен заниматься.

Андрей Ковтун 27.03.2020 18:16

Цитата:

Сообщение от а.д.м (Сообщение 467976)
Спешу на помощь!!
вставьте данный html-код на вашу страницу
<script type="text/javascript">
  var userip;
</script>

<script type="text/javascript" src="https://l2.io/ip.js?var=userip"></script>

<script type="text/javascript">
  document.write("Your IP is :", userip);
</script>

Чуть дополню ответ:

Иногда проблема в SSL, а точнее в его отсутствии.
Например так было в моём случае.

Я хотел получать IP адрес и передавать его в параметры Метрики, и вот никак IP в параметры не передавался.
Оказалось нужно было просто забирать IP с ресурса, на котором есть SSL

https://javascript.ru/forum/showthre...831#post521831

Андрей Ковтун 28.03.2020 18:29

определить никак
а передать вот так
https://javascript.ru/forum/misc/798...tml#post521828

voraa 28.03.2020 19:24

Цитата:

Сообщение от Андрей Ковтун (Сообщение 521876)
определить никак
а передать вот так
https://javascript.ru/forum/misc/798...tml#post521828

Передать куда?
А вообще сервер сам определяет ip.


Часовой пояс GMT +3, время: 18:46.