Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

«Мой IP» на клиентской стороне

Бывает, что на стороне клиента надо узнать свой IP-адрес. Если не страшно подключать себе на страницу чужой JS, то это можно сделать следующим образом:

<!-- pure JS my IP -->
<script>
!function(callback) {
    var old = document.write;

    document.write = function (str) {
        var re = /(\d{1,3}\.){3}\d{1,3}/;

        callback(re.exec(str)[0]);
        document.write = old;
    }
}(alert);
</script>
<script src="http://en.dnstools.ch/out/4.js"></script>

Вместо «alert» можно передавать любую функцию, ей первым параметром будет передан искомый IP-адрес. Если на странице больше нигде не используется «document.write», то JS с внешнего ресурса вполне можно подключать как «defer», тут это нестрашно.

4 комментария
Stac (stacmv.ya.ru) 2012

Я знаю другое решение: написать в своем js-файле, пропущенном на сервере через SSI: var ip = ’<!-​-​#echo var=«REMOTE_ADDR»-​-​>’
Или проделать то же самое, но с использованием PHP.

Евгений Степанищев (bolknote.ru) 2012

Комментарий для stacmv.ya.ru:

Это очевидное решение обладает очевидным недостатком: требует собственное серверной поддержки.

Дучик (doochik.ya.ru) 2012
Евгений Степанищев (bolknote.ru) 2012

Комментарий для doochik.ya.ru:

Как получить эту информацию себе на сайт, в свой JS?