Обнаружение общедоступного IP программно

Метод jQuery ajax по умолчанию - GET, так что, может быть, это ваша проблема? Попробуйте добавить метод: «POST» к вашим опциям:

$.ajax({
  method: 'POST',
  ... etc
26
задан Cœur 4 April 2017 в 14:54
поделиться

8 ответов

Duck Duck Go предоставляет бесплатный доступ к их API в соответствии с их собственной страницей здесь: https://duckduckgo.com/api

Вот URL, на который вы нажали, если хотите указать свой IP адрес: http://api.duckduckgo.com/?q=my+ip&format=json

, который возвращает объект JSON. Атрибут Answer содержит удобочитаемую строку с вашим IP-адресом. Пример:

{
    ...
    "Answer": "Your IP address is ww.xx.yyy.zzz in <a href=\"http://open.mapquest.com/?q=aaaaa(bbbbb)\">aaaaa(bbbbb)</a>"
    ...
}

Вы можете извлечь ip-адрес из этой строки, используя split()[4], если вы считаете, что это безопасное предположение, что эта строка никогда не изменится, или вам нужно периодически исправлять.

В качестве альтернативы, если вы хотите иметь более перспективный метод, вы можете перебрать все, что возвращает split(), и вернуть первый элемент, который является IP-адресом. См. Здесь для проверки IP-адресов: Как проверить IP-адрес в Python?

0
ответ дан Community 28 November 2019 в 06:10
поделиться

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

Одна вещь иметь в виду состоит в том, что различные места назначения могут видеть другой адрес для Вас. Маршрутизатор может быть многосетевым. И действительно это, где проблемы начинаются.

3
ответ дан John Fricker 28 November 2019 в 06:10
поделиться

Как уже упоминалось несколькими людьми, STUN действительно является правильным решением.

5
ответ дан bortzmeyer 28 November 2019 в 06:10
поделиться

Всякий раз, когда я хотел сделать это, я просто царапал whatismyip.org . Когда вы заходите на сайт, он дает вам ваш открытый текстовый IP-адрес. Просто и понятно.

Просто сделайте так, чтобы ваш скрипт заходил на этот сайт и читал IP.

Я не знаю, подразумевали ли вы это в своем посте или нет, но получить общедоступный IP-адрес с вашего компьютера невозможно. Он должен исходить из внешнего источника.

2013 г. edit: этот сайт теперь возвращает изображение вместо текста, поэтому для этой цели он бесполезен.

8
ответ дан ryeguy 28 November 2019 в 06:10
поделиться

Предназначение для www.whatsmyip.org грубо. Они просьба, чтобы не сделать это на странице.

Только система на том же уровне NAT, поскольку Ваша цель будет видеть тот же IP. Например, Ваше приложение может быть позади нескольких слоев NAT (это происходит больше, поскольку Вы переезжаете от США, где избыток дюйм/с).

ОШЕЛОМЛЯЮТ, действительно лучший метод. В целом необходимо планировать выполнить (ОШЕЛОМИТЬ) сервер куда-нибудь, что приложение можно спросить: трудно не кодируйте серверы других людей. Необходимо кодировать для отправки некоторых определенных сообщений, как описано в rfc5389.

я предлагаю хорошее чтение, и ссылки по теме. http://www.ietf.org/html.charters/behave-charter.html

можно предпочесть смотреть на IPv6 и Морского древоточца, чтобы удостовериться, что у Вас всегда есть доступ IPv6. (Microsoft Vista делает это очень легким, мне говорят)

11
ответ дан mcr 28 November 2019 в 06:10
поделиться

Я сделал программу, которая соединяется с http://automation.whatismyip.com/n09230945.asp , это, записан в D получение кого-то еще сказать Вам, что они видят Ваш IP, как, вероятно, самый надежный путь:

/*
    Get my IP address
*/


import tango.net.http.HttpGet;
import tango.io.Stdout;

void main()
{
      try
      {
          auto page = new HttpGet ("http://automation.whatismyip.com/n09230945.asp");
          Stdout(cast(char[])page.read);
      }
      catch(Exception ex)
      {
          Stdout("An exception occurred");
      }
}

код Python Редактирования должен быть похожим:

from urllib import urlopen
print urlopen('http://automation.whatismyip.com/n09230945.asp').read()
17
ответ дан Michael Hampton 28 November 2019 в 06:10
поделиться

Это может быть самым легким путем. Проанализируйте вывод следующих команд:

  1. выполняет traceroute для нахождения маршрутизатора, который является меньше чем 3 транзитными участками из машины.
  2. выполненный ping с опцией записать исходный маршрут и проанализировать вывод. Первый IP-адрес в зарегистрированном маршруте является Вашим общедоступным.

, Например, я нахожусь на машине Windows, но та же идея должна работать от Unix также.

> tracert -d www.yahoo.com

Tracing route to www-real.wa1.b.yahoo.com [69.147.76.15]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.14.203
  2     *        *        *     Request timed out.
  3     8 ms     8 ms     9 ms  68.85.228.121
  4     8 ms     8 ms     9 ms  68.86.165.234
  5    10 ms     9 ms     9 ms  68.86.165.237
  6    11 ms    10 ms    10 ms  68.86.165.242

Эти 68.85.228.121 Comcast (мой поставщик) маршрутизатор. Мы можем проверить с помощью ping-запросов это:

> ping -r 9 68.85.228.121 -n 1

Pinging 68.85.228.121 with 32 bytes of data:

Reply from 68.85.228.121: bytes=32 time=10ms TTL=253
    Route: 66.176.38.51 ->
           68.85.228.121 ->
           68.85.228.121 ->
           192.168.14.203

Вуаля! Эти 66.176.38.51 являются моим общедоступным IP.

23
ответ дан Carlos A. Ibarra 28 November 2019 в 06:10
поделиться

Если в сети работает сервер UpNp, работающий на шлюзе, вы можете связаться со шлюзом и запросить у него внешний IP-адрес.

3
ответ дан X-Istence 28 November 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: