2011-10-15 3 views
8

Ho bisogno di recuperare l'indirizzo IP del sito web specificato utilizzando php, che è l'indirizzo IP del server in cui è ospitato il sito web.sito web ip utilizzando php

Per quello che ho usato gethostbyname('**example.com*'). Funziona bene quando il sito non viene reindirizzato. per esempio se ho usato questa funzione per ottenere google.com, dà "74.125.235.20".

Quando l'ho provato per "lappusa.com" restituisce "lappusa.com". Poi ho provato questo nel browser sta reindirizzando a "http://lappusa.lappgroup.com/". Ho controllato il codice di stato http che mostra 200.

Ma ho bisogno di ottenere l'indirizzo IP anche se il sito è stato reindirizzato, come se lappusa.com viene reindirizzato a lappusa.lappgroup.com quindi ho bisogno di ottenere l'indirizzo IP per l'URL reindirizzato.

Come devo ottenere questo? qualsiasi aiuto molto apprezzato, grazie !.

+0

Il sito 'lappusa.com' non viene reindirizzato. Io proprio non esiste. – hakre

risposta

11

Il problema non è il reindirizzamento HTTP (che è al di sopra del livello gethostbyname opera), ma che lappusa.com non risolve a qualsiasi indirizzo IP e quindi non può essere caricato in nessun browser. Quello che il tuo browser ha fatto è stato automaticamente provato in fase di preparazione www..

È possibile riprodurre questo comportamento nel codice. Si noti inoltre che IP multipli (versione 4 e 6) possono essere associati a un dominio:

<?php 
function getAddresses($domain) { 
    $records = dns_get_record($domain); 
    $res = array(); 
    foreach ($records as $r) { 
    if ($r['host'] != $domain) continue; // glue entry 
    if (!isset($r['type'])) continue; // DNSSec 

    if ($r['type'] == 'A') $res[] = $r['ip']; 
    if ($r['type'] == 'AAAA') $res[] = $r['ipv6']; 
    } 
    return $res; 
} 

function getAddresses_www($domain) { 
    $res = getAddresses($domain); 
    if (count($res) == 0) { 
    $res = getAddresses('www.' . $domain); 
    } 
    return $res; 
} 

print_r(getAddresses_www('lappusa.com')); 
/* outputs Array (
    [0] => 66.11.155.215 
) */ 
print_r(getAddresses_www('example.net')); 
/* outputs Array (
    [0] => 192.0.43.10 
    [1] => 2001:500:88:200::10 
) */ 
+0

Ha funzionato. ho provato ad anteporre "www" a gethostbyname e si ottiene lo stesso risultato del tuo funtion. ma può spiegare un po 'di più per favore..anche aggiungere tag php di chiusura per la risposta ... Grazie. – VKGS

+0

@Sekar Non è necessario chiudere il tag php se non c'è più contenuto nel file (se lo si chiude, molti editori insisteranno su un'altra riga vuota, che verrà emessa da php). ['get_dns_record'] (http://php.net/get_dns_record) ti consente non solo di ottenere indirizzi IPv4, ma anche IPv6. Se non ti interessa, puoi sostituire la funzione 'getAddresses' con [' gethostbynamel'] (http://php.net/gethostbynamel). – phihag

+1

ok, grazie per il tuo impegno anche per dare gethostbynamel function link.it è stato bello. – VKGS

0

Hai provato a inviare HttpRequest a una determinata pagina e quindi a analizzare le intestazioni di risposta? Non sono sicuro, ma dovrebbe contenere alcune informazioni IP o host ...

+0

sì, ho provato arricciatura per controllare "posizione" esiste o no a volte non vediamo l'URL reindirizzato, per questo url anche quella proprietà non esiste .. – VKGS

+0

ora ho trovato arricciatura couln't prendere i reindirizzamenti javascript. quindi, come controllare l'url dato viene reindirizzato o no ... – VKGS

0

reindirizzano utilizzando un META tag nel codice HTML. Sarà necessario analizzare il codice sorgente effettivo per rilevare questo.