v2.5.2
Giriş yap

PHP ile Whois Sorgulaması Nasıl Yapılır?

redline
397 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhaba PT.

PHP ile whois sorgulaması yapmaya çalışıyorum. Bir türlü aradığım çözümü bulamadım.

Yapmak istediğim şey com, com.tr, net, net.tr, org, org.tr alan adı sorgulaması yapmak. Sorgulama yaptığım alan adının boşta veya satın alınmış olduğunu tespit edebilmek yeterli olacaktır.

DNS sorgulaması gibi çözümler var, fakat yanlış sonuç veriyor. Alan adı alınmış, ancak kullanılmıyorsa DNS sorgusunda boşta olarak sonuç veriyor.

phpWhois eklentisi .tr uzantılarda şaşırabiliyor olsa da diğer alan adlarında güzel sonuç veriyordu. Ancak şuan oda çalışmıyor.

Yardımlarınızı bekliyorum. :)

Cevap yaz
Cevaplar (4)
tayfunerbilen
547 gün önce

şu şekilde deneyebilirsin, ancak .tr domainleri için bir whois sunucusu bulamadım açıkçası, o konuda bir şey söyleyemeyeceğim.

class WhoisChecker
{
    private $whois_servers = [
        "com" => "whois.verisign-grs.com",
        "net" => "whois.verisign-grs.com",
        "org" => "whois.pir.org",
        "info" => "whois.afilias.net",
        "biz" => "whois.biz",
        "us" => "whois.nic.us",
        // Diğer TLD'ler buraya eklenebilir...
    ];

    public function whoisQuery($domain)
    {
        // Domain'in TLD'sini al
        $tld = substr($domain, strrpos($domain, '.') + 1);

        // TLD için WHOIS sunucusu bul
        if (!isset($this->whois_servers[$tld])) {
            throw new Exception("WHOIS sunucusu bu TLD için tanımlanmamış: " . $tld);
        }

        $whois_server = $this->whois_servers[$tld];

        // Soketi aç
        $fp = fsockopen($whois_server, 43);
        if (!$fp) {
            throw new Exception("Soket bağlantısı açılamadı.");
        }

        // Alan adını sorgula
        fwrite($fp, $domain . "\r\n");

        // Yanıtı al
        $response = '';
        while (!feof($fp)) {
            $response .= fgets($fp, 128);
        }

        // Soketi kapat
        fclose($fp);

        // Yanıtı döndür
        return $response;
    }
}

// Kullanım örneği:
$whois = new WhoisChecker();
$response = $whois->whoisQuery('prototurk.com');
echo $response;
redline
546 gün önce

@tayfunerbilen Hocam çok teşekkür ederim, çalışıyor bu şekilde bilgiler geliyor, .tr için whois.nic.tr sunucusu sonuç veriyor.

Alan adı sorgulama sonucunda alan adı satın alınmışsa 1, boştaysa 0 şeklinde bir çıktı nasıl alabilirim?

redline
548 gün önce

@bilinmez1i Hocam yardımınız için öncelikle teşekkür ederim. Ancak her sorguda Alan adı satın alınmış. cevabı dönüyor malesef.

bilinmez1i
548 gün önce

Merhaba!

PHP ile whois sorgulaması yapmak istiyorsunuz ve .com, .com.tr, .net, .net.tr, .org, .org.tr alan adlarının boşta veya satın alınmış olduğunu tespit etmek istiyorsunuz. Doğru sonuçları elde etmek için DNS sorgulamasının yetersiz kaldığını belirtmişsiniz.

Birçok programlama dilinde whois sorgusu için standart bir kütüphane veya işlev bulunmamaktadır. Ancak, bu işlemi gerçekleştirebilmek için bazı yöntemler kullanabilirsiniz. İşte bir örnek kod parçası:


<?php

function isDomainAvailable($domain) {
    $whoisServers = array(
        ".com" => "whois.verisign-grs.com",
        ".net" => "whois.verisign-grs.com",
        ".org" => "whois.pir.org",
        ".com.tr" => "whois.nic.tr",
        ".net.tr" => "whois.nic.tr",
        ".org.tr" => "whois.nic.tr"
    );

    $domainParts = explode(".", $domain);
    $tld = strtolower(end($domainParts));

    if (array_key_exists($tld, $whoisServers)) {
        $whoisServer = $whoisServers[$tld];
        $result = queryWhoisServer($whoisServer, $domain);
        return strpos(strtolower($result), "no match") !== false;
    }

    return false;
}

function queryWhoisServer($whoisServer, $domain) {
    $port = 43;
    $timeout = 10;
    $fp = @fsockopen($whoisServer, $port, $errno, $errstr, $timeout);
    
    if ($fp) {
        fputs($fp, $domain . "\r\n");
        $response = '';
        
        while (!feof($fp)) {
            $response .= fgets($fp, 128);
        }
        
        fclose($fp);
        return $response;
    }
    
    return "";
}

// Kullanım örneği
$domain = "example.com";
if (isDomainAvailable($domain)) {
    echo "Alan adı boşta.";
} else {
    echo "Alan adı satın alınmış.";
}

?>

Bu kod parçası, isDomainAvailable fonksiyonu aracılığıyla belirtilen alan adının boşta olup olmadığını kontrol eder. $whoisServers dizisi, farklı TLD'ler için ilgili whois sunucusunu içerir. queryWhoisServer fonksiyonu, whois sunucusuna bağlanarak sorguyu gerçekleştirir ve sonucu döndürür.

Yukarıdaki örnekteki example.com alan adını kendi araştırmalarınız için uygun bir alan adıyla değiştirmeniz gerektiğini unutmayın.

Umarım bu yardımcı olur!