php

2011-10-15 21 views
8

का उपयोग कर वेबसाइट आईपी प्राप्त करें मुझे PHP का उपयोग करके दिए गए वेबसाइट आईपी पते को लाने की आवश्यकता है, जो सर्वर का आईपी पता है जिसमें वेबसाइट होस्ट की जाती है।php

इसके लिए मैंने gethostbyname('**example.com*') का उपयोग किया है। जब साइट रीडायरेक्ट नहीं होती है तो यह ठीक काम करता है। उदाहरण के लिए यदि मैंने google.com प्राप्त करने के लिए इस फ़ंक्शन का उपयोग किया है, तो यह "74.125.235.20" देता है।

जब मैंने इसे "lappusa.com" के लिए आजमाया तो यह "lappusa.com" देता है। फिर मैंने ब्राउज़र में यह कोशिश की कि यह "http://lappusa.lappgroup.com/" पर रीडायरेक्ट कर रहा है। मैंने http स्टेटस कोड की जांच की है जो 200 दिखाता है।

लेकिन मुझे साइट रीडायरेक्ट होने पर भी आईपी पता प्राप्त करने की आवश्यकता है, जैसे lappusa.com को lappusa.lappgroup.com पर रीडायरेक्ट किया गया है, तो मुझे रीडायरेक्ट यूआरएल के लिए आईपी प्राप्त करने की आवश्यकता है।

मुझे यह कैसे प्राप्त करना चाहिए? किसी भी मदद की बहुत सराहना की, धन्यवाद!

+0

साइट 'lappusa.com' को पुनर्निर्देशित नहीं किया गया है। मैं बस अस्तित्व में नहीं है। – hakre

उत्तर

11

समस्या HTTP रीडायरेक्ट नहीं है (जो gethostbyname स्तर से ऊपर है), लेकिन lappusa.com किसी भी आईपी पते को हल नहीं करता है और इसलिए किसी भी ब्राउज़र में लोड नहीं किया जा सकता है। आपके ब्राउज़र ने क्या किया था स्वचालित रूप से www. को आगे बढ़ाने का प्रयास करें।

आप अपने व्यवहार में उस व्यवहार को पुन: उत्पन्न कर सकते हैं। यह भी ध्यान रखें कि कई आईपी (संस्करण 4 और 6) एक डोमेन के साथ संबद्ध किया जा सकता है:

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

यह काम किया। मैंने gethostbyname के लिए "www" को प्रीपेड करने का प्रयास किया, यह वही आउटपुट होता है जो आपका मज़ेदार करता है। लेकिन कृपया थोड़ा और बता सकते हैं..आप भी जवाब देने के लिए बंद php टैग जोड़ें ... धन्यवाद। – VKGS

+0

@ सेकर यदि फ़ाइल में कोई और सामग्री नहीं है तो आपको PHP टैग को बंद करने की आवश्यकता नहीं है (यदि आप इसे बंद करते हैं, तो कई संपादक एक और खाली रेखा पर जोर देंगे, जिसे PHP द्वारा आउटपुट किया जाएगा)। ['get_dns_record'] (http://php.net/get_dns_record) आपको न केवल आईपीवी 4 पते प्राप्त करने की अनुमति देता है, बल्कि आईपीवी 6 भी। यदि आप इसमें रूचि नहीं रखते हैं, तो आप 'getAostresses' फ़ंक्शन को [' gethostbynamel'] (http://php.net/gethostbynamel) से प्रतिस्थापित कर सकते हैं। – phihag

+1

ठीक है, gethostbynamel फ़ंक्शन link.it देने के लिए भी आपके प्रयासों के लिए धन्यवाद। अच्छा था। – VKGS

0

क्या आपने कुछ पेज पर HttpRequest भेजने और फिर प्रतिक्रिया शीर्षकों को पार्स करने का प्रयास किया था? मुझे यकीन नहीं है, लेकिन इसमें कुछ आईपी या मेजबान जानकारी होनी चाहिए ...

+0

हाँ, मैंने "स्थान" की जांच करने के लिए कर्ल की कोशिश की है या कभी-कभी वहां हम रीडायरेक्ट यूआरएल देखते हैं, इस यूआरएल के लिए भी यह संपत्ति मौजूद नहीं है .. – VKGS

+0

अब मुझे कर्ल जावास्क्रिप्ट रीडायरेक्शन को पकड़ नहीं पाएगा। तो दिए गए यूआरएल को कैसे रीडायरेक्ट किया जाए या नहीं ... – VKGS

0

वे HTML स्रोत में META टैग का प्रयोग रीडायरेक्ट। इसे पकड़ने के लिए आपको वास्तविक स्रोत कोड को पार्स करने की आवश्यकता होगी।