اسکریپت ساده ای برای گرفتن whois دامنه در php آماده کرده ایم که درک و کار با آن بسیار آسان است . می توانید قابلیت های پیچیده دیگری هم به آن اضافه کنید. در این اسکریپت از یک سرور که whois دامنه های .com را می دهد استفاده کردیم.
می توانید از whois سرور های دیگه هم استفاده کنید که لیست آن را در اخر این مقاله آورده ایم
برای گرفتن whois دامنه در php نیاز است که اطلاعاتی شامل نام دامنه و پورت سرور را ارسال کنیم .
سه متغییر برای دامنه ، سرور whois و شماره پورت تعریف می کنیم . شماره پورت ۴۳ است . از این پورت برای تمامی whois سرور ها استفاده کنید.
تعریف متغییر
من از دامنه .com استفاده می کنم ، پس فقط از یک whois سرور بهره می برم.
1 2 3 |
$domainname = "netparadis.com"; $server = "whois.crsnic.net"; $port=43; |
گرفتن اطلاعات دامنه از whois
اول از همه ، با تابع fsockopen به سرور متصل می شویم ، در صورت اتصال موفقیت آمیز به سرور ، اطلاعات whois دامنه را دریافت می کنیم. بعد از آن این داده ها را داخل یک متغییر ذخیره می کنیم .
با استفاده از این متغییر می توانیم اطلاعات Whois دامنه در php را چاپ کنیم و به کاربر نشان بدیم.
1 2 3 4 5 6 7 8 |
if(($whoisinfo = fsockopen($server,$port)) == true) { $output = ""; fputs($whoisinfo,"$domainname\r\n"); while(!feof($whoisinfo)) $output .= fgets($whoisinfo,128); fclose($whoisinfo); } |
نمایش خروجی در صفحه
با استفاده از تگ <pre> اطلاعات را در فرمت صحیح نمایش میدیم. اگر از این تگ استفاده نکنیم خروجی ما به صورت ناخوانا در صفحه چاپ می شود.
1 |
echo "<pre>" . $output . "</pre>"; |
گرفتن نام دامنه با استفاده از فرم
برای راحتی و ساده تر شدن کار اسکریپت ما نام دامنه و پسوند را از طریق ورودی کاربر دریافت می کنیم.
افزودن فرم جستجو دامنه به HTML
کد های html زیر را به فایل php خود اضافه کنید . با افزودن این کدها ما ورودی دامنه را از طریق input هایی که اضافه کردیم دریافت و به متغییر دامنه در فایل php پاس میدیم .برای اینکار باید تغییراتی در فایل php انجام بدیم.
1 2 3 4 5 6 |
<form action="" method="post"> <div id="lookup_form"> <input type="text" name="domain" value=""> <input type="submit" value="Perform lookup"> </div> </form> |
ویرایش کد php
به جای مقدار دستی $domainname از $_POST[‘domain’] استفاده می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if(isset($_POST['domain'])){ $domainname = $_POST['domain']; $server = "whois.crsnic.net"; $port=43; if(($whoisinfo = fsockopen($server,$port)) == true) { $output = ""; fputs($whoisinfo,"$domainname\r\n"); while(!feof($whoisinfo)) $output .= fgets($whoisinfo,128); fclose($whoisinfo); } } |
و در آخر بعد از فرم کد زیر را برای نمایش خروجی اضافه می کنیم
1 |
<?php if(isset($output)){ echo "<pre>" . $output . "</pre>"; } ?> |
لیست چند whois سرور برای پسوند های مختلف دامنه
TLD | Type | Country | WHOIS Server |
---|---|---|---|
com | whois.crsnic.net | ||
net | whois.crsnic.net | ||
org | whois.pir.org | ||
edu | whois.crsnic.net | ||
biz | whois.neulevel.biz | ||
info | whois.afilias.info |
هرگونه مشکلی در پیاده سازی این اسکریپت داشتید لطفا در بخش نظرات ارسال کنید
ممنون اما اون چیزی که میخواستم نیست
راستی چرا این صفحاتت دچار مشکله وقتی باز میکنیم درهم برهم نمایش میده
http://netparadis.com/extract-webpage-urls-php/
http://netparadis.com/telegram-bot/
به خاطر http است که اوکی شد
میشه کمک کنید میخواهم فقط تاریخ انقضا یا namespaceها را نشان بده
اینا فقط عدد ۱ رو نمایش میده می خوام متنی که نووشته رو نمایش بده
سلام. اینکار با regex کمی چالش داره و نیاز به زمان است . بنابراین راه آسانتری که میتونید استفاده کنید api هست که میتونید از سرویس زیر بهره ببرید که تمام بخش هایی که نیاز دارید را بصورت جداگانه برای شما در فرمت json برگشت می دهد و میتونید بهره ببرید
https://freedomainapi.com/free-whois-api.html
در این خروجی json کلید های nameservers و date_expires همان مواردی هستند که میخواهید.
برای واکشی json و ارسال درخواست به این آدرس با php و دریافت خروجی json و نمایش آن میتونید از آموزش استفاده کنید
https://netparadis.com/post-json-data-using-php-curl
موفق باشید.
نمیشه یک مثال ساده بزنید؟
منظور هر فیلدی را میشه ایطوری گرفت
با سلام
اگر خواستیم بگیم فقط name serverها رو نمایش بده چیکار کنیم
سلام . در اینصورت نیازه که خودتون رشته برگشتی رو با توابع کاربردی مثل preg_match یا همان استفاده از regex قسمت دلخواه رو دریافت کنید.
موفق باشید.