2011-10-15 20 views
8

Necesito obtener la dirección IP del sitio web dado usando php, es decir, la dirección IP del servidor en el que está alojado el sitio web.obtener el sitio web ip usando php

Para eso he usado gethostbyname('**example.com*'). Funciona bien cuando el sitio no se redirecciona. por ejemplo, si utilicé esta función para obtener google.com, se obtiene "74.125.235.20".

Cuando lo probé para "lappusa.com" da "lappusa.com". Luego probé esto en el navegador que está redireccionando a "http://lappusa.lappgroup.com/". Revisé el código de estado http que muestra 200.

Pero necesito obtener una dirección IP, incluso si el sitio fue redirigido, como si lappusa.com se redirige a lappusa.lappgroup.com, entonces necesito obtener la dirección IP para redirigir.

¿Cómo debo obtener esto? cualquier ayuda muy apreciada, ¡Gracias !.

+0

El sitio 'lappusa.com' no se redirige. Simplemente no existe. – hakre

Respuesta

11

El problema no es la redirección HTTP (que está por encima del nivel gethostbyname opera), sino que lappusa.com no se resuelve en ninguna dirección IP y por lo tanto, no se puede cargar en ningún navegador. Lo que hizo su navegador fue probarlo automáticamente antes de www..

Puede reproducir ese comportamiento en su código. Tenga en cuenta también que varias direcciones IP (versión 4 y 6) pueden ser asociados con 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

Funcionó. Intenté anteponer "www" a gethostbyname, resulta el mismo resultado que tu funtion. pero puede explicar un poco más, por favor ... también agregue la etiqueta de cierre de php para responder ... Gracias. – VKGS

+0

@Sekar No es necesario que cierre la etiqueta php si no hay más contenido en el archivo (si lo cierra, muchos editores insistirán en una línea vacía más, que será generada por php). ['get_dns_record'] (http://php.net/get_dns_record) le permite no solo obtener direcciones IPv4, sino también direcciones IPv6. Si no estás interesado en eso, puedes reemplazar la función 'getAddresses' con [' gethostbynamel'] (http://php.net/gethostbynamel). – phihag

+1

ok, gracias por sus esfuerzos también por dar el enlace de la función gethostbynamel. Fue lindo. – VKGS

0

¿Intentó enviar HttpRequest a determinada página y luego analizar los encabezados de respuesta? No estoy seguro, pero debe contener alguna información IP o de host ...

+0

sí, intenté curl para verificar "ubicación" existe o no, a veces vemos la url redireccionada, para esta url incluso esa propiedad no existe ... – VKGS

+0

ahora encontré curl couln't catch the javascript redirections. entonces, cómo revisar la url dada se redirige o no ... – VKGS

0

Redirigen usando una etiqueta META en el código HTML. Necesitarás analizar el código fuente actual para captar esto.

Cuestiones relacionadas