2017-03-02 1 views
0

Je veux: si l'entrée: <IP-Address> -> Sortie (EXACT !!!): www.example.comIP à l'URL de Adresse

Problème: Si je viens de l'une des adresses IP (51.254.201.70) d'une bande site et que vous voulez savoir quel site Web il est, je reçois seulement comme ceci: 70.ip-51-254-201.eu. Je veux www.webmoney.ru exacte

Ce que j'ai savoir:

package PACK; 

import java.net.InetAddress; 
import java.net.UnknownHostException; 

public class IPtoHost4 { 

    // Input:www.webmoney.com -> Output: All IP-Adresses of this Page 
public static void main(String[] args) throws UnknownHostException { 


     for (InetAddress addr : InetAddress.getAllByName("www.webmoney.ru")) { 

      System.out.println(addr.getHostAddress() + " : " + getHost(addr)); 
     } 

    // Output: 
    // 5.199.142.158 : www.webmoney.ru 
    // 51.254.201.70 : www.webmoney.ru 
    // 62.210.115.140 : www.webmoney.ru 
    // 88.99.82.144 : www.webmoney.ru 

    // Input:All-IPs -> Output: hostnames 
    String[] ips = { "5.199.142.158", "51.254.201.70", "62.210.115.140", "88.99.82.144" }; 
    for (String i : ips) { 
     InetAddress ip = null; 
     ip = InetAddress.getByName(i); 
     System.out.println(getHost(ip)); 
    } 
    // Output: 
    // z158.zebra.servdiscount-customer.com 
    // 70.ip-51-254-201.eu 
    // 62-210-115-140.rev.poneytelecom.eu 
    // static.144.82.99.88.clients.your-server.de 

} 

static String getHost(InetAddress ip) { 
    String hostName = ""; 
    hostName = ip.getHostName(); 

    return hostName; 

} 

}

+0

Ces domaines que vous obtenez sont probablement ceux corrects pour les ips. Vous pouvez supposer que le domaine que vous interrogez vous redirige. En plus de cela "webmoney" et ".ru" semblent des poissons de toute façon alors soyez prudent. – Thomas

+0

Il peut y avoir plusieurs noms de domaine ([hébergement virtuel] (https://en.wikipedia.org/wiki/Virtual_hosting)) sur une adresse IP. –

+0

Salut. Je viens de recevoir des adresses IP de Wireshark. Et je veux juste découvrir les sites Web HTML (DNS-Server, et Domaines ne sont pas intéressants pour moi) qui sont visités par mes utilisateurs depuis mon serveur. –

Répondre

0

J'ai une solution comment je trouver sur un site Web qui code HTML envoyer 301/302 pour la redirection. Mais si je reçois HTML Code 200 je peux identifier juste un nom d'hôte. Je voudrais identifier le nom complet du site Web.

Voir par exemple:

public static void main(String[] args) throws IOException { 

    String ip = "78.129.242.2"; 
    URL myURL = new URL("http://" + ip); 

    HttpURLConnection con = (HttpURLConnection) myURL.openConnection(); 
    con.setInstanceFollowRedirects(false); 
    con.connect(); 

    // HTML-Code from a website 
    int responseCode = con.getResponseCode(); 
    System.out.println(responseCode); 

    // HTTP 200 OK 
    if (responseCode == 200) { 
     InetAddress addr = null; 
     addr = InetAddress.getByName(ip); 
     String host = addr.getHostName(); 
     System.out.println(host); 
    } 

    // HTTP 301 oder 302 redirect 
    else if (responseCode == 301 || responseCode == 302) { 
     String location = con.getHeaderField("Location"); 
     System.out.println(location); 
    } else { 
     System.out.println("Bad Web Site" + " ResponceCode: " + responseCode); 
    } 
}