2011-10-15 25 views
8

Verilen web sitesi ip adresini php kullanarak, yani web sitesinin barındırıldığı sunucunun ip adresi olarak almam gerekir.php kullanarak web ipi alın

Bunun için gethostbyname('**example.com*') kullandım. Site yönlendirilmediğinde iyi çalışır. Örneğin, bu işlevi google.com almak için kullandıysam, "74.125.235.20" değerini verir.

"lappusa.com" için denediğimde "lappusa.com" verir. Sonra bu tarayıcıda denedim "http://lappusa.lappgroup.com/" yönlendiriyor. Http gösterdiği http durum kodunu kontrol ettim.

Ama lappusa.com lappusa.lappgroup.com'a yönlendirilirse, yeniden yönlendirilen URL için ip almam gerekiyormuş gibi, site yeniden yönlendirilse bile ip adresini almam gerekiyor.

Bunu nasıl edinmeliyim? herhangi bir yardım büyük takdir, teşekkürler !.

+0

"lappusa.com" sitesi yönlendirilmiyor. Ben sadece yok. – hakre

cevap

11

Sorun, HTTP yönlendirmesi (gethostbyname düzeyinin üstündedir) değil, ancak bu lappusa.com herhangi bir IP adresine çözümlenmez ve bu nedenle herhangi bir tarayıcıya yüklenemez. Tarayıcınızın yaptığı, otomatik olarak www..

Bu davranışı kodunuzda yeniden oluşturabilirsiniz.

<?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

Çalıştı. gethostbyname için "www" yazmayı denedim, bu sizin işlevinizle aynı çıktıyı verir. ama biraz daha fazla açıklayabilirsin ... ayrıca cevaplamak için kapanış php etiketini ekleyin ... Teşekkürler. – VKGS

+0

@Sekar Dosyada daha fazla içerik yoksa php etiketini kapatmanız gerekmiyor (eğer kapatırsanız, birçok editör bir daha boş satırda ısrar edecek, bu da php tarafından çıkarılacak). [get_dns_record'] (http://php.net/get_dns_record) sadece IPv4 adreslerini değil, IPv6 adreslerini de almanızı sağlar. Bununla ilgilenmiyorsanız, 'getAddresses' işlevini [' gethostbynamel'] (http://php.net/gethostbynamel) ile değiştirebilirsiniz. – phihag

+1

tamam, çabalarınız için de gethostbynamel işlevi verdiğiniz için teşekkürler link.it güzeldi. – VKGS

0

Belirli bir sayfaya HttpRequest göndermeyi ve ardından yanıt üstbilgilerini ayrıştırmayı denediniz mi? Emin değilim, ama bazı IP veya ana bilgisayar bilgileri içermelidir ...

+0

Evet, ben "konumu" var kontrol etmek için kıvırmak çalıştı ya da bazen bu url için yönlendirilmiş url görüyoruz değil, bu özellik var .. – VKGS

+0

şimdi ben curl couln't javascript yönlendirmeleri yakalamak buldum. Böylece verilen url kontrol nasıl yönlendirilir ya da değil ... – VKGS

0

Onlar HTML kaynağında bir META etiketi kullanarak redirect: Ayrıca çoklu IP'ler (sürüm 4 ve 6), bir alan adıyla ilişkili olabilir unutmayın. Bunu yakalamak için gerçek kaynak kodunu ayrıştırmanız gerekecek.

İlgili konular