Jak zdobyć zewnętrzne IP?

0

Witam, mógłby mi ktoś objaśnić jak mogę zdobyć zewnętrzne IP klienta? W aplikacji mam coś takiego, że najpierw sprawdzane jest połączenie (URL + URLConnection), a następnie chcę, aby program był w stanie zwrócić IP klienta. W sieci widziałem, że należy użyć HttpServletRequest, lecz nie potrafię sobie z tym dać rady :/ Mógłby ktoś krok po kroku objaśnić jak powinienem się za to zabrać? Z góry dziekuję za pomoc :)

0

To nie takie proste. Musiałbyś zrobić request od tego klienta o jakiegoś zewnętrznego serwera (swojego) i odczytać IP z którego przyszedł ten request. Z poziomu samego klienta nie da sie tego stwierdzić, chyba że jego maszyna ma faktycznie przypisany bezpośrednio ten publiczny IP, wtedy można by pobrać listę interfejsów sieciowych i odczytać z nich adres.

0

można odpytać np. stronę https://www.ipify.org/ - adres dostaniesz w JSONie

0

Zrobiłem coś takiego:

            URL url = new URL("http://checkip.amazonaws.com/");
            URLConnection connection = url.openConnection();
            connection.connect();
            log.debug("Połączenie z internetem aktywne");
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            publicIP = reader.readLine().trim();
            log.debug("Publiczne IP użytkownika: " + publicIP);

Ujdzie, czy raczej można to zrobić bardziej optymalnie? :D

0

bydzie :)

0

No to gites, dzięki za info :D

0

W sumie to jeszcze jedno pytanko - ma ktoś może taki skrypt jak na tym http://checkip.amazonaws.com/ ? Chciałbym wrzucić to na swojego hosta :)

EDIT:

<?PHP

function getUserIP() {
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
              $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
              $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }

    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    if (filter_var($client, FILTER_VALIDATE_IP)) {
        $ip = $client;
    } elseif (filter_var($forward, FILTER_VALIDATE_IP)) {
        $ip = $forward;
    } else {
        $ip = $remote;
    }

    return $ip;
}


$user_ip = getUserIP();

echo $user_ip;

?>

Nie było pytania ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1