Merhaba değerli okular, bugün sizlere birkaç gündür üzerinde çalıştığım, tamamen ücretsiz, sorgu limiti olmayan PHP Whois Sorgulama API tanıtımını ve kullanımı göstereceğim. Çoğu yazılımcı güncel whois verilerini çekmek için en sağlıklı yöntemin api kullanmak olduğunu bilir ama maalesef çoğu api sağlayıcı bu bilgileri ücreti karşılğında sunar.
Son zamanlar da benim de bir Whois API'ye ihtiyacım oldu ama her tarafta ücretli olması canımı sıktı ve kolları sıvadım. API tamamen bana ait değil ama varolan bir API'yi daha basit bir hale getirerek kolay kullanıma sahip bir şekilde sizlere sunmak istedim. Çünkü henüz yazılıma yeni başlamış girişimciler detaylı bir API'yi anlamakta zorluk çekebiliyor, bu yüzden Whois sorgulama API'sini kolay kullanılabilir bir hale getirmek amacımdı.
Whois sorguşama API'si kullanıcıların bir alan adı kullanarak alan adı bilgilerinin oluşturulma tarihi, güncellenme tarihi, sona erme tarihi, alan adı yaşı, kaydedenin iletişim bilgileri, telefon numarası, e-posta adresi, alan adının kullandığı ad sunucuları ve çok daha fazlası gibi kapsamlı bir WHOIS verisi döndürür.
Genel olarak şalışma şekli gayet basit. Belirtilen alan adının whois bilgilerini içeren dizilerimiz var ve bu dizilerimiz encode edilmiş. Size sağlayacağım bir link ile json ile encode edilmiş verileri decode yapıp çekmek olacak.
Whois API kullanımı gayet basittir. https://eminylmz.dev/whois/api?domain=eminylmz.dev görmüş olduğunu bağlantı GET URL Parametresinde ki alan adının whois bilgilerini karşınıza json encode olarak gelir. Yapmamız gereken bu verileri whois bilgilerini çekmek istediğimiz sayfaya decode ederek dizi haline çevirmek. Bundan sonrasında her türlü veriyi kısa kodlarla çekebilirsiniz.
index.php dosyası oluşturarak Whois bilgierini çekme aksiyonlarını alalım.
$response = file_get_contents("https://eminylmz.dev/whois/api?domain=eminylmz.dev");
$result = json_decode($response);
echo "<pre>";
print_r(json_decode($response));
echo "</pre>";
Yukıarda encode edilmiş json verilerini decode ettik ve diziye (Array) çevirdik. Şimdiyse diziden verilerimizi çekelim.
Whois verilerinin çektiğimiz veriler üç farklı diziden oluşmakta.
domain_whois Kullanımı
<table border="1" cellpadding="10">
<tr>
<td>Domain Adı:</td>
<td><?php echo $result->domain_whois->domain_name; ?></td>
</tr>
<tr>
<td>Barındırıldığı Firma:</td>
<td><?php echo $result->domain_whois->registrar; ?></td>
</tr>
<tr>
<td>IANA ID:</td>
<td><?php echo $result->domain_whois->registrar_iana_id; ?></td>
</tr>
<tr>
<td>Nameserver:</td>
<td><?php echo $result->domain_whois->name_server[0] ." - ". $result->domain_whois->name_server[1]; ?></td>
</tr>
</table>
domain_availability Kullanımı
<?php if ($result->domain_availability->status == 1) { ?>
<p>Bu alan adını kullanabilirsiniz!</p>
<?php } if($result->domain_availability->status == 0){ ?>
<p>Bu alan adı başka biri tarafından alınmış!</p>
<?php } ?>
raw_text Kullanımı
<pre><?php echo $result->raw_text->content; ?></pre>
İşte kullanımı bu kadar basit. Görmüş olduğunuz dizi içinde ki tüm verileri istediğiniz gibi basit bir şekilde çekebilirsiniz.
Whois alan adı sorgulama API'si oluşturma, güncelleme ve son yenileme tarihini sizlere 2022-02-17T13:40:21Z bu şekilde verir ama bu tarih formatı da pek okunabilir değildir. Bu formatı 17 Şubat 2022 şeklinde çevirecek fonksiyonu kullanmak daha sağlıklı olacaktır.
function convertDate($date){
setlocale(LC_ALL, 'tr_TR.UTF-8');
return strftime('%e %B %Y', strtotime($date));
}
// Kullanımı
echo convertDate($result->domain_whois->creation_date);
Alan adı yaşını normalde direkt API aracalığı ile vermeyi düşündüm ama hem hız etkenleri ve en doğru sonuç için bunu API'yi çektiğiniz yerde yapmanızı daha doğru buldum. Bu aksiyonu alan adının oluşturulma tarihi ve bugünki tarih arasındaki gün farkını alarak yapacağız.
function convertDiffDate($date){
setlocale(LC_ALL, 'tr_TR.UTF-8');
return strftime('%Y-%m-%e', strtotime($date));
}
// İki tarih arasındaki toplam günü hesaplıyoruz.
$createDate = new DateTime(convertDiffDate($result->domain_whois->creation_date));
$nowDate = new DateTime(date("Y-m-d"));
$interval = $createDate->diff($nowDate);
$total = $interval->format('%a'); // İki tarih arasındaki toplam gün.
// Eğer 360 güne eşit veya fazlaysa kaç yıllık olduğunu yazdıracak.
if ($total >= 360) {
$monthTotal = $total/365;
echo floor($monthTotal).' Yıl<br>';
}
// Eğer alan adı 360 günden düşükse kaç günlük olduğunu yazdıracak.
if ($total < 360) {
echo $interval->format('%a Gün');
}
Merhaba Efe, github.com/io-developer/php-whois adlı adresteki API'yi kullanabilirsin ama eğer daha basit bir şekilde kullanmak istiyorsan makalemin detayında ki gibi kullanman daha iyi olacaktır. Belirttiğim API'deki tüm verileri fazlasıyla sizlere sundum. Hız konusunda bir problem yok iki şekilde de aynı hızı alırsınız. Kolay gelsin.
EFE AVKAN 2 yıl önce
hocam acaba https://eminylmz.dev/whois/api?domain=eminylmz.dev kaynak kodunu paylaşabilirmisiniz ? Yanıtla