I want to add a custom Whois look up to my site. I've looked around but haven't found much information.
Asked
Active
Viewed 2,172 times
0
-
3Do you have any code that you have written yet? Please provide some code samples for what you have tried so that others can more easily assist you with your question. – Keith Dawson Aug 10 '15 at 04:14
-
1call command line `whois` parse data – Aug 10 '15 at 04:18
1 Answers
4
Here's a great simple PHP whois script. It's free, and just has a couple functions you can call.
http://www.phpeasycode.com/whois/
Use the following php
<?php
/*************************************************************************
php easy :: whois lookup script
==========================================================================
Author: php easy code, www.phpeasycode.com
Web Site: http://www.phpeasycode.com
Contact: webmaster@phpeasycode.com
*************************************************************************/
$domain = $_GET['domain'];
// For the full list of TLDs/Whois servers see http://www.iana.org/domains/root/db/ and http://www.whois365.com/en/listtld/
$whoisservers = array(
"ac" => "whois.nic.ac", // Ascension Island
// ad - Andorra - no whois server assigned
"ae" => "whois.nic.ae", // United Arab Emirates
"aero"=>"whois.aero",
"af" => "whois.nic.af", // Afghanistan
"ag" => "whois.nic.ag", // Antigua And Barbuda
"ai" => "whois.ai", // Anguilla
"al" => "whois.ripe.net", // Albania
"am" => "whois.amnic.net", // Armenia
// an - Netherlands Antilles - no whois server assigned
// ao - Angola - no whois server assigned
// aq - Antarctica (New Zealand) - no whois server assigned
// ar - Argentina - no whois server assigned
"arpa" => "whois.iana.org",
"as" => "whois.nic.as", // American Samoa
"asia" => "whois.nic.asia",
"at" => "whois.nic.at", // Austria
"au" => "whois.aunic.net", // Australia
// aw - Aruba - no whois server assigned
"ax" => "whois.ax", // Aland Islands
"az" => "whois.ripe.net", // Azerbaijan
// ba - Bosnia And Herzegovina - no whois server assigned
// bb - Barbados - no whois server assigned
// bd - Bangladesh - no whois server assigned
"be" => "whois.dns.be", // Belgium
"bg" => "whois.register.bg", // Bulgaria
"bi" => "whois.nic.bi", // Burundi
"biz" => "whois.biz",
"bj" => "whois.nic.bj", // Benin
// bm - Bermuda - no whois server assigned
"bn" => "whois.bn", // Brunei Darussalam
"bo" => "whois.nic.bo", // Bolivia
"br" => "whois.registro.br", // Brazil
"bt" => "whois.netnames.net", // Bhutan
// bv - Bouvet Island (Norway) - no whois server assigned
// bw - Botswana - no whois server assigned
"by" => "whois.cctld.by", // Belarus
"bz" => "whois.belizenic.bz", // Belize
"ca" => "whois.cira.ca", // Canada
"cat" => "whois.cat", // Spain
"cc" => "whois.nic.cc", // Cocos (Keeling) Islands
"cd" => "whois.nic.cd", // Congo, The Democratic Republic Of The
// cf - Central African Republic - no whois server assigned
"ch" => "whois.nic.ch", // Switzerland
"ci" => "whois.nic.ci", // Cote d'Ivoire
"ck" => "whois.nic.ck", // Cook Islands
"cl" => "whois.nic.cl", // Chile
// cm - Cameroon - no whois server assigned
"cn" => "whois.cnnic.net.cn", // China
"co" => "whois.nic.co", // Colombia
"com" => "whois.verisign-grs.com",
"coop" => "whois.nic.coop",
// cr - Costa Rica - no whois server assigned
// cu - Cuba - no whois server assigned
// cv - Cape Verde - no whois server assigned
// cw - Curacao - no whois server assigned
"cx" => "whois.nic.cx", // Christmas Island
// cy - Cyprus - no whois server assigned
"cz" => "whois.nic.cz", // Czech Republic
"de" => "whois.denic.de", // Germany
// dj - Djibouti - no whois server assigned
"dk" => "whois.dk-hostmaster.dk", // Denmark
"dm" => "whois.nic.dm", // Dominica
// do - Dominican Republic - no whois server assigned
"dz" => "whois.nic.dz", // Algeria
"ec" => "whois.nic.ec", // Ecuador
"edu" => "whois.educause.edu",
"ee" => "whois.eenet.ee", // Estonia
"eg" => "whois.ripe.net", // Egypt
// er - Eritrea - no whois server assigned
"es" => "whois.nic.es", // Spain
// et - Ethiopia - no whois server assigned
"eu" => "whois.eu",
"fi" => "whois.ficora.fi", // Finland
// fj - Fiji - no whois server assigned
// fk - Falkland Islands - no whois server assigned
// fm - Micronesia, Federated States Of - no whois server assigned
"fo" => "whois.nic.fo", // Faroe Islands
"fr" => "whois.nic.fr", // France
// ga - Gabon - no whois server assigned
"gd" => "whois.nic.gd", // Grenada
// ge - Georgia - no whois server assigned
// gf - French Guiana - no whois server assigned
"gg" => "whois.gg", // Guernsey
// gh - Ghana - no whois server assigned
"gi" => "whois2.afilias-grs.net", // Gibraltar
"gl" => "whois.nic.gl", // Greenland (Denmark)
// gm - Gambia - no whois server assigned
// gn - Guinea - no whois server assigned
"gov" => "whois.nic.gov",
// gr - Greece - no whois server assigned
// gt - Guatemala - no whois server assigned
"gs" => "whois.nic.gs", // South Georgia And The South Sandwich Islands
// gu - Guam - no whois server assigned
// gw - Guinea-bissau - no whois server assigned
"gy" => "whois.registry.gy", // Guyana
"hk" => "whois.hkirc.hk", // Hong Kong
// hm - Heard and McDonald Islands (Australia) - no whois server assigned
"hn" => "whois.nic.hn", // Honduras
"hr" => "whois.dns.hr", // Croatia
"ht" => "whois.nic.ht", // Haiti
"hu" => "whois.nic.hu", // Hungary
// id - Indonesia - no whois server assigned
"ie" => "whois.domainregistry.ie", // Ireland
"il" => "whois.isoc.org.il", // Israel
"im" => "whois.nic.im", // Isle of Man
"in" => "whois.inregistry.net", // India
"info" => "whois.afilias.net",
"int" => "whois.iana.org",
"io" => "whois.nic.io", // British Indian Ocean Territory
"iq" => "whois.cmc.iq", // Iraq
"ir" => "whois.nic.ir", // Iran, Islamic Republic Of
"is" => "whois.isnic.is", // Iceland
"it" => "whois.nic.it", // Italy
"je" => "whois.je", // Jersey
// jm - Jamaica - no whois server assigned
// jo - Jordan - no whois server assigned
"jobs" => "jobswhois.verisign-grs.com",
"jp" => "whois.jprs.jp", // Japan
"ke" => "whois.kenic.or.ke", // Kenya
"kg" => "www.domain.kg", // Kyrgyzstan
// kh - Cambodia - no whois server assigned
"ki" => "whois.nic.ki", // Kiribati
// km - Comoros - no whois server assigned
// kn - Saint Kitts And Nevis - no whois server assigned
// kp - Korea, Democratic People's Republic Of - no whois server assigned
"kr" => "whois.kr", // Korea, Republic Of
// kw - Kuwait - no whois server assigned
// ky - Cayman Islands - no whois server assigned
"kz" => "whois.nic.kz", // Kazakhstan
"la" => "whois.nic.la", // Lao People's Democratic Republic
// lb - Lebanon - no whois server assigned
// lc - Saint Lucia - no whois server assigned
"li" => "whois.nic.li", // Liechtenstein
// lk - Sri Lanka - no whois server assigned
"lt" => "whois.domreg.lt", // Lithuania
"lu" => "whois.dns.lu", // Luxembourg
"lv" => "whois.nic.lv", // Latvia
"ly" => "whois.nic.ly", // Libya
"ma" => "whois.iam.net.ma", // Morocco
// mc - Monaco - no whois server assigned
"md" => "whois.nic.md", // Moldova
"me" => "whois.nic.me", // Montenegro
"mg" => "whois.nic.mg", // Madagascar
// mh - Marshall Islands - no whois server assigned
"mil" => "whois.nic.mil",
// mk - Macedonia, The Former Yugoslav Republic Of - no whois server assigned
"ml" => "whois.dot.ml", // Mali
// mm - Myanmar - no whois server assigned
"mn" => "whois.nic.mn", // Mongolia
"mo" => "whois.monic.mo", // Macao
"mobi" => "whois.dotmobiregistry.net",
"mp" => "whois.nic.mp", // Northern Mariana Islands
// mq - Martinique (France) - no whois server assigned
// mr - Mauritania - no whois server assigned
"ms" => "whois.nic.ms", // Montserrat
// mt - Malta - no whois server assigned
"mu" => "whois.nic.mu", // Mauritius
"museum" => "whois.museum",
// mv - Maldives - no whois server assigned
// mw - Malawi - no whois server assigned
"mx" => "whois.mx", // Mexico
"my" => "whois.domainregistry.my", // Malaysia
// mz - Mozambique - no whois server assigned
"na" => "whois.na-nic.com.na", // Namibia
"name" => "whois.nic.name",
"nc" => "whois.nc", // New Caledonia
// ne - Niger - no whois server assigned
"net" => "whois.verisign-grs.net",
"nf" => "whois.nic.nf", // Norfolk Island
"ng" => "whois.nic.net.ng", // Nigeria
// ni - Nicaragua - no whois server assigned
"nl" => "whois.domain-registry.nl", // Netherlands
"no" => "whois.norid.no", // Norway
// np - Nepal - no whois server assigned
// nr - Nauru - no whois server assigned
"nu" => "whois.nic.nu", // Niue
"nz" => "whois.srs.net.nz", // New Zealand
"om" => "whois.registry.om", // Oman
"org" => "whois.pir.org",
// pa - Panama - no whois server assigned
"pe" => "kero.yachay.pe", // Peru
"pf" => "whois.registry.pf", // French Polynesia
// pg - Papua New Guinea - no whois server assigned
// ph - Philippines - no whois server assigned
// pk - Pakistan - no whois server assigned
"pl" => "whois.dns.pl", // Poland
"pm" => "whois.nic.pm", // Saint Pierre and Miquelon (France)
// pn - Pitcairn (New Zealand) - no whois server assigned
"post" => "whois.dotpostregistry.net",
"pr" => "whois.nic.pr", // Puerto Rico
"pro" => "whois.dotproregistry.net",
// ps - Palestine, State of - no whois server assigned
"pt" => "whois.dns.pt", // Portugal
"pw" => "whois.nic.pw", // Palau
// py - Paraguay - no whois server assigned
"qa" => "whois.registry.qa", // Qatar
"re" => "whois.nic.re", // Reunion (France)
"ro" => "whois.rotld.ro", // Romania
"rs" => "whois.rnids.rs", // Serbia
"ru" => "whois.tcinet.ru", // Russian Federation
// rw - Rwanda - no whois server assigned
"sa" => "whois.nic.net.sa", // Saudi Arabia
"sb" => "whois.nic.net.sb", // Solomon Islands
"sc" => "whois2.afilias-grs.net", // Seychelles
// sd - Sudan - no whois server assigned
"se" => "whois.iis.se", // Sweden
"sg" => "whois.sgnic.sg", // Singapore
"sh" => "whois.nic.sh", // Saint Helena
"si" => "whois.arnes.si", // Slovenia
"sk" => "whois.sk-nic.sk", // Slovakia
// sl - Sierra Leone - no whois server assigned
"sm" => "whois.nic.sm", // San Marino
"sn" => "whois.nic.sn", // Senegal
"so" => "whois.nic.so", // Somalia
// sr - Suriname - no whois server assigned
"st" => "whois.nic.st", // Sao Tome And Principe
"su" => "whois.tcinet.ru", // Russian Federation
// sv - El Salvador - no whois server assigned
"sx" => "whois.sx", // Sint Maarten (dutch Part)
"sy" => "whois.tld.sy", // Syrian Arab Republic
// sz - Swaziland - no whois server assigned
"tc" => "whois.meridiantld.net", // Turks And Caicos Islands
// td - Chad - no whois server assigned
"tel" => "whois.nic.tel",
"tf" => "whois.nic.tf", // French Southern Territories
// tg - Togo - no whois server assigned
"th" => "whois.thnic.co.th", // Thailand
"tj" => "whois.nic.tj", // Tajikistan
"tk" => "whois.dot.tk", // Tokelau
"tl" => "whois.nic.tl", // Timor-leste
"tm" => "whois.nic.tm", // Turkmenistan
"tn" => "whois.ati.tn", // Tunisia
"to" => "whois.tonic.to", // Tonga
"tp" => "whois.nic.tl", // Timor-leste
"tr" => "whois.nic.tr", // Turkey
"travel" => "whois.nic.travel",
// tt - Trinidad And Tobago - no whois server assigned
"tv" => "tvwhois.verisign-grs.com", // Tuvalu
"tw" => "whois.twnic.net.tw", // Taiwan
"tz" => "whois.tznic.or.tz", // Tanzania, United Republic Of
"ua" => "whois.ua", // Ukraine
"ug" => "whois.co.ug", // Uganda
"uk" => "whois.nic.uk", // United Kingdom
"us" => "whois.nic.us", // United States
"uy" => "whois.nic.org.uy", // Uruguay
"uz" => "whois.cctld.uz", // Uzbekistan
// va - Holy See (vatican City State) - no whois server assigned
"vc" => "whois2.afilias-grs.net", // Saint Vincent And The Grenadines
"ve" => "whois.nic.ve", // Venezuela
"vg" => "whois.adamsnames.tc", // Virgin Islands, British
// vi - Virgin Islands, US - no whois server assigned
// vn - Viet Nam - no whois server assigned
// vu - Vanuatu - no whois server assigned
"wf" => "whois.nic.wf", // Wallis and Futuna
"ws" => "whois.website.ws", // Samoa
"xxx" => "whois.nic.xxx",
// ye - Yemen - no whois server assigned
"yt" => "whois.nic.yt", // Mayotte
"yu" => "whois.ripe.net");
function LookupDomain($domain){
global $whoisservers;
$domain_parts = explode(".", $domain);
$tld = strtolower(array_pop($domain_parts));
$whoisserver = $whoisservers[$tld];
if(!$whoisserver) {
return "Error: No appropriate Whois server found for $domain domain!";
}
$result = QueryWhoisServer($whoisserver, $domain);
if(!$result) {
return "Error: No results retrieved from $whoisserver server for $domain domain!";
}
else {
while(strpos($result, "Whois Server:") !== FALSE){
preg_match("/Whois Server: (.*)/", $result, $matches);
$secondary = $matches[1];
if($secondary) {
$result = QueryWhoisServer($secondary, $domain);
$whoisserver = $secondary;
}
}
}
return "$domain domain lookup results from $whoisserver server:\n\n" . $result;
}
function LookupIP($ip) {
$whoisservers = array(
//"whois.afrinic.net", // Africa - returns timeout error :-(
"whois.lacnic.net", // Latin America and Caribbean - returns data for ALL locations worldwide :-)
"whois.apnic.net", // Asia/Pacific only
"whois.arin.net", // North America only
"whois.ripe.net" // Europe, Middle East and Central Asia only
);
$results = array();
foreach($whoisservers as $whoisserver) {
$result = QueryWhoisServer($whoisserver, $ip);
if($result && !in_array($result, $results)) {
$results[$whoisserver]= $result;
}
}
$res = "RESULTS FOUND: " . count($results);
foreach($results as $whoisserver=>$result) {
$res .= "\n\n-------------\nLookup results for " . $ip . " from " . $whoisserver . " server:\n\n" . $result;
}
return $res;
}
function ValidateIP($ip) {
$ipnums = explode(".", $ip);
if(count($ipnums) != 4) {
return false;
}
foreach($ipnums as $ipnum) {
if(!is_numeric($ipnum) || ($ipnum > 255)) {
return false;
}
}
return $ip;
}
function ValidateDomain($domain) {
if(!preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i", $domain)) {
return false;
}
return $domain;
}
function QueryWhoisServer($whoisserver, $domain) {
$port = 43;
$timeout = 10;
$fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
//if($whoisserver == "whois.verisign-grs.com") $domain = "=".$domain; // whois.verisign-grs.com requires the equals sign ("=") or it returns any result containing the searched string.
fputs($fp, $domain . "\r\n");
$out = "";
while(!feof($fp)){
$out .= fgets($fp);
}
fclose($fp);
$res = "";
if((strpos(strtolower($out), "error") === FALSE) && (strpos(strtolower($out), "not allocated") === FALSE)) {
$rows = explode("\n", $out);
foreach($rows as $row) {
$row = trim($row);
if(($row != '') && ($row{0} != '#') && ($row{0} != '%')) {
$res .= $row."\n";
}
}
}
return $res;
}
?>
<html>
<head>
<title>Whois Lookup Script</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF'];?>">
<p><b><label for="domain">Domain/IP Address:</label></b> <input type="text" name="domain" id="domain" value="<?=$domain;?>"> <input type="submit" value="Lookup"></p>
</form>
<?
if($domain) {
$domain = trim($domain);
if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7);
if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4);
if(ValidateIP($domain)) {
$result = LookupIP($domain);
}
elseif(ValidateDomain($domain)) {
$result = LookupDomain($domain);
}
else die("Invalid Input!");
echo "<pre>\n" . $result . "\n</pre>\n";
}
?>
</body>
</html>
and call the php in the page where you are going to implement
- Upload whois.php file on your server and open in your browser: http://www.yourdomain.com/whois.php
- Enter the domain name (only the name itself, without http://www) or IP address you want to get whois data.
- View results online.
Hope it is useful
-
@Dagon - I have added code snippet ..i hope you would review the downvote – Manju Aug 10 '15 at 04:31