Подтвердить что ты не робот

Как узнать, каким является мой внешний IP-адрес?

Мои компьютеры сидят за маршрутизатором/брандмауэром. Как программно узнать, что такое внешний IP-адрес. Я могу использовать http://www.whatsmyip.org/ для специальных запросов, но TOS не разрешает автоматические проверки.

Любые идеи?

4b9b3361

Ответ 1

http://ipecho.net/plain представляется  приемлемая альтернатива, поскольку whatismyip.com теперь требует членства для  их автоматическое соединение. Они очень любезно выглядят  предлагая эту услугу бесплатно,  поэтому, пожалуйста, не злоупотребляйте им.

Ответ 2

К сожалению, нет простого способа сделать это.

Я бы использовал сайт, например www.whatsmyip.org и проанализировал вывод.

checkip.dyndns.com возвращает очень простой HTML файл, который выглядит следующим образом:

<html>
  <head>
    <title>Current IP Check</title>
  </head>
  <body>
    Current IP Address: 84.151.156.163
  </body>
</html>

Это должно быть очень легко разобрать. Кроме того, сайт существует около десяти лет. Есть надежда, что это будет на какое-то время.

Ответ 3

Если у вас есть доступ к веб-серверу с помощью modphp, вы можете выполнить его собственный:

<?php print $_SERVER['REMOTE_ADDR']; ?>

Если вы не хотите, чтобы это злоупотребляло, вам придется хранить его в секрете или добавлять ограничения на запрос.

Я использую один на своем сервере в течение многих лет.

Явное:

Создайте файл whatismyip.php в своей папке public_html на своем веб-сайте. Его можно назвать чем угодно и быть в любом месте вашего веб-сайта.

Добавьте строку выше, а затем запросите свой сервер:

curl http://example.com/whatismyip.php

например.

Ответ 4

К сожалению, начиная с 2013 года, плата за услугу whatismyip.com за услугу.

http://www.icanhazip.com продолжает расти, спустя 3 года. Просто выводит IP как текст, абсолютно ничего.

http://checkip.dyndns.org все еще работает.

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

https://www.google.ie/search?q=whats+is+my+ip

Но даже когда они блокируют меня, они все еще сообщают мне свой IP-адрес клиента в сообщении об ошибке.

Ответ 5

Если маршрутизатор, за которым вы находитесь, говорит UPnP, вы всегда можете использовать библиотеку UPnP для любого языка, который вы разрабатываете, чтобы запросить маршрутизатор для его внешнего ip.

Ответ 6

curl ifconfig.me

или

curl ifconfig.me/ip

Если у вас нет завитка,

wget ifcondig.me/ip 2>/dev/null && cat ip

Надеюсь, что это поможет.

Ответ 7

http://myexternalip.com предоставляет такую ​​информацию. к вы получаете свой IP-адрес, у вас есть много вариантов:

Ответ 8

Другим способом является доступ к облачной электронной почте (yahoo, google, hotmail), отправьте электронное письмо. Затем просмотрите заголовки, и вы увидите свой IP-адрес.

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

EDIT: Это отвечает на вопрос, как найти IP-адрес, а не через PROGRAMMATIC-подход

Ответ 9

Мой маршрутизатор WRT54G сообщает мне через его функцию доступа к локальному маршрутизатору (интерфейс администрирования http (s)), и я предполагаю, что что-то подобное можно было бы сделать со многими другими устройствами. В этом случае страница входа дает октеты адреса IPv4 в четырех строках, содержащих эту фразу:

class= num maxLength = 3 size = 3 value = ' i' name= 'wan_ipaddr_ N' id = 'wan_ipaddr_ N

Где i - это октетное значение, а N - номер октета. Этот бит собачьего забирает и анализирует его для меня, любезно предоставленный cygwin:

#! /usr/bin/env perl
use strict;
use warnings 'all';

my( $account, $password ) = @ARGV;

open QUERY,
    "curl --sslv3 --user '$account:$password' https://Linksys/ --silent |"
    or die "Failed to connect to router";

my @ipaddr = ('x','x','x','x');

while( <QUERY> ) {
    $ipaddr[$2] = $1 if /value='(\d+)' name='wan_ipaddr_([0-3])/;
}
close QUERY;
print join('.', @ipaddr);

Нет гарантии, что это будет работать со всеми версиями прошивки маршрутизатора.

Если ваш маршрутизатор настроен на использование http для этого интерфейса, отбросьте параметр -sslv3 curl, и вы можете использовать десятичную метку для адресации маршрутизатора. Чтобы использовать https с параметрами curl выше, я также сделал это:

  • Используется браузер для получения самозаверяющего сертификата маршрутизатора (сохраняется как Linksys.crt).

  • Добавил его в мой комплект СА:

    openssl x509 -in Linksys.crt -text >> /usr/ssl/certs/ca-bundle.crt
    
  • Добавлен "Linksys" в мой файл hosts (C:\Windows\System32\Drivers\etc\HOSTS в моем окне Win8) в качестве псевдонима для адреса маршрутизатора. Если десятиточечная нотация указывается на curl вместо этого псевдонима, он отклоняет соединение из-за несоответствия имени субъекта сертификата.

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

Ответ 10

Поскольку этот вопрос был задан некоторое время назад, теперь имеется свободно доступный веб-сервис, специально разработанный для того, чтобы вы могли программно определить ваш IP-адрес под названием ipify.

$ curl 'https://api.ipify.org?format=json'

Результаты в

{"ip": "1.2.3.4" /* your public IP */}

Ответ 11

whatismyip.com или ipchicken.com очень легко разбираются.

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

Ответ 12

ifcfg.me позволяет искать через

Nslookup
телнет
FTP
и http

работает даже с IPv6

Ответ 13

Простой, но не элегантный для этого использования. Я установил некоторые камеры видеонаблюдения, а мой поставщик кабелей - Wide Open West или WOWWAY потребовал 10 долларов в месяц, чтобы настроить статический IP-EXTORTION для резервирования DHCP... поэтому я создал файл VBS со следующим кодом, чтобы отбросить результат dropbox и google drive... должны удалить файл для нового, чтобы синхронизировать, хотя по какой-то причине.

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

Теперь я могу получить свой IP-адрес на дороге и посмотреть, как люди украдут мои вещи:-)

get_html "http://ipecho.net/plain", "C:\Users\joe\Google Drive\IP.html"

get_html "http://ipecho.net/plain", "C:\Users\joe\Dropbox\IP.html"



sub get_html (up_http, down_http)

dim xmlhttp : set xmlhttp = createobject("msxml2.xmlhttp.3.0")

xmlhttp.open "get", up_http, false

xmlhttp.send

dim fso : set fso = createobject ("scripting.filesystemobject")

dim newfile : set newfile = fso.createtextfile(down_http, true)

newfile.write (xmlhttp.responseText)

newfile.close

set newfile = nothing
set xmlhttp = nothing

end sub