Получение IP-адреса клиента через веб-службу третьей стороны

Я хотел бы прочитать свой ip-адрес со следующей страницы (http://l2.io/ip или другой) с помощью javascript и сохранить его в моей переменной "myIp".

function getMyIP() {
  var myIp;
  ...
  return myIp;
}

Как это можно сделать?

Решение

Проверяя свой связанный сайт, вы можете включить тег скрипта, передающий параметр ?var=desiredVarName, который будет установлен как глобальная переменная, содержащая IP-адрес:

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

<script>alert(myip);</script>

[Demo][2]

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


Поддержка HTTPS

Если ваша страница обслуживается по протоколу https, большинство браузеров блокируют содержимое той же страницы, обслуживаемой по протоколу http (включая скрипты и изображения), поэтому возможности довольно ограничены. Если у вас < 5k хитов/день, можно использовать Smart IP API. Например:

<script>
var myip;
function ip_callback(o) {
    myip = o.host;
}
</script>
<script src="https://smart-ip.net/geoip-json?callback=ip_callback"></script>
<script>alert(myip);</script>

[Demo][4]

Edit: Судя по всему, срок действия сертификата этого сервиса https истек, поэтому пользователю придется добавлять исключение вручную. Откройте его API напрямую, чтобы проверить состояние сертификата: https://smart-ip.net/geoip-json.


С внутренней логикой

Наиболее устойчивым и простым способом, в случае, если у вас есть логика внутреннего сервера, будет просто вывести IP запрашивающего пользователя внутри тега <script>, таким образом, вам не нужно будет полагаться на внешние ресурсы. Например:

PHP:

<script>var myip = '<?php echo $_SERVER['REMOTE_ADDR']; ?>';</script>

В этом связанном ответе также есть более надежное PHP-решение (с учетом заголовков, которые иногда устанавливаются прокси-серверами).

C#:

<script>var myip = '';</script>
Комментарии (21)
    <script type="application/javascript">
            function getip(json){
            alert(json.ip); // alerts the ip address
    }
    </script>

    <script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>
Комментарии (0)

Это также позволяет получить информацию о клиенте.

var get = function(u){
    var x = new XMLHttpRequest;
    x.open('GET', u, false);
    x.send();
    return x.responseText;
}

JSON.parse(get('http://ifconfig.me/all.json'))
Комментарии (1)