Dynadot โ€” .com Registration $8.99

PHP: Bulk domain availability check!

Spaceship Spaceship
Watch
PHP: Bulk domain availability check! [UPDATED]

This is something i was going to start however i don't really have time, so i have whipped up a quick script for you guys to use on your own site or just for personal use.

The script has been tested quickly tonight as i want to go to bed lol. I hope it is of some use.

Demo: Now offline sorry.


UPDATED CODE (Revision 6): (18/02/07)


Download everything here!

.ORG support removed due to a block from the WHOIS server (PIR)

- .pt support fixed!

- Added "save results as text file" feature - requested.

- Code shortened

- Added .in support
- Bug fixes

- Added .tv domain support - requested

- Other bug fixes (again ;))

- Will now output result before checking next domain (much faster)
- Added .mobi support - requested

- Other bug fixes

PHP:
<?php
set_time_limit(0);
ob_start();
/* 	--------	Bulk domain availablity check script (Revision 4) ------------		
[																					
[ 	Created by "Matthew." (#45276) @ http://namepros.com / http://toomanylines.com		
[	Feel free to modify/use however you wish,										
[	but keep credit comments in upon distribution.								
*/

include 'inc/dnservers.php';

function save_file($status) 
{
	global $filename, $domain, $extension;
	
	$domain = trim($domain);
	
	$file_handle = fopen($filename . "_$status.txt", 'a+') or trigger_error('Cannot open or create file (chmod?)', E_USER_WARNING);
	
	if($status == 'invalid' && $extension == 'org') { $status .= ' (.org WHOIS prevents request)'; }
				
	if(!fwrite($file_handle, $domain . " is $status\n"))
	{
		trigger_error('Results for ' . $domain . ' could not be written.', E_USER_WARNING);
	}
	
	fclose($file_handle);	
}

function return_status($domain, $status)
{	
	global $extension, $filename;

	
	$file = $filename;
	$domain = trim($domain);
	
	if(isset($_POST['save']))
	{
			save_file( $status );
	}
	else
	{	
		$color = ($status == 'available') ? 'green' : 'red';
		if($status == 'invalid' && $extension == 'org') { $status .= ' (.org WHOIS prevents request)'; }	
			
		echo "<div style=\"color: $color\">$domain is $status!</div>";
	}
}	
	
if(isset($_POST['submit']))
{
	$filename = 'saves/' . mt_rand(5, 9999999999);
		
	if(strlen($_POST['domains']) > 0)
	{

		$domains = explode("\n", $_POST['domains']);
		
		echo '<h1>Checking ' . count($domains) . ' domains</h1><br />';
		echo (isset($_POST['save'])) ? 'Preparing results, please wait...<br /><br />' : null;
		
		foreach($domains as $domain)
		{
			unset($buffer); // clean buffer - prevents problems
					
			// (replaced str_replace)	
			preg_match('@^(http://www\.|http://|www\.)?([^/]+)@i', $domain, $matches);
			$domain = $matches[2];
			
			$tld = explode('.', $domain, 2);
			$extension = strtolower(trim($tld[1]));
			
			if(strlen($domain) > 0 && array_key_exists('.' . $extension, $ext))
			{
				$server = $ext['.' .$extension][0];
				
				$sock = fsockopen($server, 43) or die('Error Connecting To Server:' . $server);
				fputs($sock, "$domain\r\n");
				
				while( !feof($sock) )
				{
				  	$buffer .= fgets($sock,128);
				}
			
				fclose($sock);
				if($extension == 'org') echo nl2br($buffer);
				
				if(eregi($ext['.' . $extension][1], $buffer)) { return_status($domain, 'available'); }
				
				else { return_status($domain, 'taken'); }
			}
			else
			{
				if(strlen($domain) > 0)	 { return_status($domain, 'invalid'); }
			}
		
			ob_flush(); // output before checking next domain
			flush();
			sleep(0.1);
		}
		
		if(isset($_POST['save']) && count($domains) > 0)
		{
			echo 'Check completed, your results can be found below:';
		
			if(file_exists($filename . '_available.txt'))
			{
				echo '<br /><a href="' . $filename . '_available.txt">Available domains</a>';
			}
			
			if(file_exists($filename . '_taken.txt'))
			{
				echo '<br /><a href="' . $filename . '_taken.txt">Taken domains</a>';
			}
			else
			{
				echo '<br />0 taken domains found';
			}
			
			if(file_exists($filename . '_invalid.txt'))
			{
				echo '<br /><a href="' . $filename . '_invalid.txt">Invalid domains (could not be checked)</a>';
			}
		}	
	}
	else
	{
		echo 'You need to enter one or more domains!';
	}
} 
else
{
	?>
<div style="text-align: center">
	<form action="index.php" method="post">
		<textarea name="domains" cols="100" rows="20"></textarea>
		<br /><input type="checkbox" name="save" value="save" /> Save results as text file?<br />
		<br /><input type="submit" name="submit" value="Check Availability" style="font-size: 30pt;" />
		
	</form>
</div>
	<?php
}
?>


Instructions:

Unzip, Upload, CHMOD "saves" to 777, use!



Supported extensions are:

.com
.net
.biz
.info
.co.uk
.co.ug
.or.ug
.nl
.tv
.mobi
.in

.ro
.com.au
.ca
.org.uk
.name
.us
.ac.ug
.ne.ug
.sc.ug
.ws
.be
.com.cn
.net.cn
.org.cn
.no
.se
.nu
.com.tw
.net.tw
.org.tw
.cc
.pl
.pt

It is not coded well but this was started very early in the morning so i have an excuse lol. It works so hey ;)

Enjoy.
 
Last edited:
17
•••
The views expressed on this page by users and staff are their own, not those of NamePros.
AfternicAfternic
Hey, that's cool! Install and comment later.
 
0
•••
kleszcz said:
Hey, that's cool! Install and comment later.

Great, simple install - just download and upload both files :)
 
0
•••
Matthew. said:
Great, simple install - just download and upload both files :)

And rename them from .txt to .php :p
 
0
•••
ahtum said:
And rename them from .txt to .php :p

:tu: true, I forgot i renamed them actually. NP wouldn't allow me to upload .php obviously :)
 
0
•••
Thanks
It rock!!!

Rep Added
PS: Can I use it on my blog? You'll get a free link... PM me if interested
 
0
•••
Thanks. Really useful script. :)
 
0
•••
mtorregiani said:
Thanks
It rock!!!

Rep Added
PS: Can I use it on my blog? You'll get a free link... PM me if interested

Thanks mtorregiani, You may use it wherever you want! No link required :)
 
2
•••
Code has been updated!

The code now outputs the result of the domain check before checking the next one which means real time results!


Demo: http://www.mattjewell.com/dnlookup/index.php

Thanks to those who have rep'd, appreciated :)

Example list to check:
falchion.info
unworthy.info
grandpiano.cc
cannibal.cc
hotwings.cc
newtestament.biz
charityfund.info
channelzero.info
zinfandel.cc
tophost.cc
roadconditions.biz
newtestament.cc
boombox.cc
hyperactive.cc
rejected.cc
babytalk.cc
playhouse.cc
mooncycles.info
restitution.cc
nightmares.cc
doorprize.net
doorprizes.net
 
0
•••
Matthew, OUTSTANDING share!!!! Rep up'd

EDIT: Sorry I'm at my limit giving rep for today, but I'll catch up tomorrow.
 
1
•••
~ Cyberian ~ said:
Matthew, OUTSTANDING share!!!! Rep up'd

EDIT: Sorry I'm at my limit giving rep for today, but I'll catch up tomorrow.

Thanks ~ Cyberian ~, truly appreciated :) (im not fussed about the rep, whenever :D)
 
2
•••
This is a great script! Rep given. Thanks.
 
0
•••
deu12000 said:
This is a great script! Rep given. Thanks.

Thanks!

Code updated, bug fixed.
 
0
•••
Update to dnservers.txt (attached file)

.MOBI Support added!
 
0
•••
is there any way so that the result will be added to a text file automatically?
 
0
•••
champ_rock said:
is there any way so that the result will be added to a text file automatically?

Sure thing, i am now going out for the day however if you will wait until about 7/8 GMT then i will get it up for you :)
 
2
•••
thanks

plus one more suggestion.. you can add 2 text files.. one for the taken domains and the other for the available ones.. if it is not too much of a coding task..

adding some reps
 
0
•••
Matt, excellent script, been looking for this for ages!

One tiny suggestion, please add support for .tv :D

Thanks again and rep coming your way!
 
0
•••
i just checked about 2000domains in abou 2 minutes .. :) :) thanks a lot
 
0
•••
champ_rock said:
is there any way so that the result will be added to a text file automatically?

May I kindly suggest this be an option rather than default - i.e. 'download output as text file link' please?

Also, another vote for .TV support

Wicked little script Matthew, well done.
Rep added.

- Vince
 
0
•••
Appraise.net
Unstoppable Domains
Domain Recover
DomainEasy โ€” Payment Flexibility
  • The sidebar remains visible by scrolling at a speed relative to the pageโ€™s height.
Back