• 0

Small powerful script to dump all .com's & their status into a db


Question

Hi all,

Thought this might be useful to someone, so I'm releasing it into the wild! It creates a database that looks like this:

post-176093-0-87487100-1322016228.png

Mod's: this is completely above-board... WHOIS is provided by InterNIC via port 43 for unlimited free lookups.

Enjoy! :D

CREATE TABLE `domains` (
  `domain` varchar(6) NOT NULL,
  `len` tinyint(1) unsigned NOT NULL,
  `available` tinyint(1) unsigned NOT NULL,
  `expires` date NOT NULL,
  `checked` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

<?php
set_time_limit(0);

$dbhost = 'localhost';
$dbuser = 'foo';
$dbpass = 'bar';
$dbname = 'whois';

$dh = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
for($i = 'aaa'; $i <= 'zzzz'; $i++)
{
$len = strlen($i);
if($conn = fsockopen ('whois.internic.net', 43))
{
  $output = NULL;
  fputs($conn, "domain $i.com\r\n");
  while(!feof($conn))
  {
   $output .= fgets($conn, 128);
  }
  fclose($conn);
}
if(strpos($output, 'No match for domain') !== FALSE)
  mysql_query("INSERT INTO `domains` VALUES ('$i', '$len', 1, '0000-00-00', NULL);") or die($i . ' - ' .mysql_error());
else
{
  preg_match('/Expiration Date: (.+?)\n/', $output, $expires);
  $expires = strtotime($expires[1]);
  $expires = date('Y-m-d', $expires);
  mysql_query("INSERT INTO `domains` VALUES ('$i', '$len', 0, '$expires', NULL);") or die($i . ' - ' .mysql_error());
}
}
mysql_close($dh);
?>

  • Like 1

12 answers to this question

Recommended Posts

  • 0

Well this script finally finished going from aaa to zzzz in about 36 hours. None of the domains were available, but around 1500 of them have expired. I've attached the list of expired .com domains in Excel format if anyone wants it. Can't upload any file ending .csv, .xls, or .xlsx - wtf Neowin?!

They first go into a period of redemption, where the original owner can claim them back for about 80 days after it expires. Then they go into pendingDelete, and 5 calendar days later, they're free to whoever can claim them first!

Oh, and you can query any of these WHOIS servers via port 43:

http://www.nirsoft.net/whois-servers.txt

ac whois.nic.ac

ae whois.aeda.net.ae

aero whois.aero

af whois.nic.af

ag whois.nic.ag

al whois.ripe.net

am whois.amnic.net

as whois.nic.as

asia whois.nic.asia

at whois.nic.at

au whois.aunic.net

az whois.ripe.net

ba whois.ripe.net

be whois.dns.be

bg whois.register.bg

bi whois.nic.bi

biz whois.neulevel.biz

bj www.nic.bj

br whois.nic.br

bt whois.netnames.net

by whois.ripe.net

bz whois.belizenic.bz

ca whois.cira.ca

cat whois.cat

cc whois.nic.cc

cd whois.nic.cd

ch whois.nic.ch

ck whois.nic.ck

cl nic.cl

cn whois.cnnic.net.cn

co whois.nic.co

co.nl whois.co.nl

com whois.verisign-grs.com

coop whois.nic.coop

cx whois.nic.cx

cy whois.ripe.net

cz whois.nic.cz

de whois.denic.de

dk whois.dk-hostmaster.dk

dm whois.nic.cx

dz whois.nic.dz

edu whois.educause.net

ee whois.tld.ee

eg whois.ripe.net

es whois.ripe.net

eu whois.eu

fi whois.ficora.fi

fo whois.nic.fo

fr whois.nic.fr

gb whois.ripe.net

ge whois.ripe.net

gl whois.nic.gl

gm whois.ripe.net

gov whois.nic.gov

gr whois.ripe.net

gs whois.nic.gs

hk whois.hknic.net.hk

hm whois.registry.hm

hn whois2.afilias-grs.net

hr whois.ripe.net

hu whois.nic.hu

ie whois.domainregistry.ie

il whois.isoc.org.il

in whois.inregistry.net

info whois.afilias.info

int whois.isi.edu

iq vrx.net

ir whois.nic.ir

is whois.isnic.is

it whois.nic.it

je whois.je

jobs jobswhois.verisign-grs.com

jp whois.jprs.jp

kg whois.domain.kg

kr whois.nic.or.kr

la whois2.afilias-grs.net

li whois.nic.li

lt whois.domreg.lt

lu whois.restena.lu

lv whois.nic.lv

ly whois.lydomains.com

ma whois.iam.net.ma

mc whois.ripe.net

md whois.nic.md

me whois.nic.me

mil whois.nic.mil

mk whois.ripe.net

mobi whois.dotmobiregistry.net

ms whois.nic.ms

mt whois.ripe.net

mu whois.nic.mu

mx whois.nic.mx

my whois.mynic.net.my

name whois.nic.name

net whois.verisign-grs.com

nf whois.nic.cx

ng whois.nic.net.ng

nl whois.domain-registry.nl

no whois.norid.no

nu whois.nic.nu

nz whois.srs.net.nz

org whois.pir.org

pl whois.dns.pl

pr whois.nic.pr

pro whois.registrypro.pro

pt whois.dns.pt

ro whois.rotld.ro

ru whois.ripn.ru

sa saudinic.net.sa

sb whois.nic.net.sb

sc whois2.afilias-grs.net

se whois.nic-se.se

sg whois.nic.net.sg

sh whois.nic.sh

si whois.arnes.si

sk whois.sk-nic.sk

sm whois.nic.sm

st whois.nic.st

su whois.ripn.net

tc whois.adamsnames.tc

tel whois.nic.tel

tf whois.nic.tf

th whois.thnic.net

tj whois.nic.tj

tk whois.nic.tk

tl whois.domains.tl

tm whois.nic.tm

tn whois.ripe.net

to whois.tonic.to

tp whois.domains.tl

tr whois.nic.tr

travel whois.nic.travel

tw whois.twnic.net.tw

tv whois.nic.tv

tz whois.tznic.or.tz

ua whois.ua

uk whois.nic.uk

gov.uk whois.ja.net

us whois.nic.us

uy nic.uy

uz whois.cctld.uz

va whois.ripe.net

vc whois2.afilias-grs.net

ve whois.nic.ve

vg whois.adamsnames.tc

ws www.nic.ws

xxx whois.nic.xxx

yu whois.ripe.net

  • 0

Something like below... I don't have a domain I know is pending delete to test this on, but whatever it comes up with in the whois record should be where I've put 'pendingDelete' :)

if(strpos($output, 'No match for domain') !== FALSE)
  mysql_query("INSERT INTO `domains` VALUES ('$i', '$len', 1, '0000-00-00', NULL);") or die($i . ' - ' .mysql_error());
elseif(strpos($output, 'pendingDelete') !== FALSE)
  mysql_query("INSERT INTO `domains` VALUES ('$i', '$len', 2, '$expires', NULL);") or die($i . ' - ' .mysql_error());
else
{
  preg_match('/Expiration Date: (.+?)\n/', $output, $expires);
  $expires = strtotime($expires[1]);
  $expires = date('Y-m-d', $expires);
  mysql_query("INSERT INTO `domains` VALUES ('$i', '$len', 0, '$expires', NULL);") or die($i . ' - ' .mysql_error());
}

  • 0

Hi Alex,

How can I modify the script to search just for the domains with PendingDelete value? I mean to not search for all domains from "a" to "aaa..." but just for all the domains in the registrar database that have the Pending Delete value.

It is consuming too many resurces to go thru all the domain letter combinations. Can the script identify directly just the PendingDelete domains?

Thanks,

Dan

This topic is now closed to further replies.
  • Posts

    • When you're in enterprise IT environment, you're kinda forced into it...otherwise I'm not touching any mail client for personal use.  I can't stand New Outlook. It's complete trash - half the features I need in (Classic) Outlook are just missing in New Outlook. I haven't talked to a single person who actually likes the new client. 
    • I think it's cute that Apple is implementing their tools at precisely the same evolutionary level as other devices' tools. In other words, I see no innovation; it's "the same but different." "Hey Siri, help me write this document about shoes." Powered by Google. "Sure thing, while we're here, can I interest you on some Nike's? They're on sale at Target right now!"
    • Walmart was still selling the Apple Watch SE 2 on Black Friday in 2024. I got 1 for my mom and one for my dad for christmas.
    • But apple has ASSURED us that this is private. So, it's private. I expect the same "leeway" shown Microsoft to be reflected here.
    • ASUS ROG Falchion Ace 75 HE keyboard is 27% off on Amazon by Ivan Jenic The ASUS ROG Falchion Ace 75 HE is currently $159.99 on Amazon, down from $219.99. That's 27% off and $60 saved on a keyboard that combines retro and modern design, while being one of the most responsive and adaptable 75% boards available right now (purchase link down below). The ROG Falchion Ace comes with the HFX V2X magnetic switches that allow you to set actuation anywhere between 0.1mm and 3.5mm with 0.01mm fine-tuning steps. It also comes with Rapid Trigger, a feature that resets the key the moment you release it rather than waiting for a fixed reset point, which makes a noticeable difference in fast-paced games. And finally, an 8,000Hz polling rate should make the response time feel instant. The build quality is decent, with dense plastic and powder-coated aluminum, which is expected from a keyboard at this price point. There’s also the onboard adjustment wheel, which lets you tweak actuation and Rapid Trigger sensitivity without opening any software. For competitive gaming, the ROG Falchion Ace is hard to beat at this price. And those who appreciate old-school hardware, especially those white keyboards we’ve all grown up with, will likely also appreciate the looks of this keyboard. A carry case is included. ASUS ROG Falchion Ace 75 HE - $159.99 | 27% off on Amazon This Amazon deal is US-specific and not available in other regions unless specified. This is a first-party seller link (at the time of article publishing); ensure that you also purchase from a first-party seller link only. If you don't like it or want to look at more options, check out the previous deals that we have covered, OR you can also visit Amazon US deals page. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
  • Recent Achievements

    • Very Popular
      Captain_Eric earned a badge
      Very Popular
    • One Month Later
      amusc earned a badge
      One Month Later
    • One Month Later
      DJC50PLUS earned a badge
      One Month Later
    • Week One Done
      DJC50PLUS earned a badge
      Week One Done
    • Proficient
      Eric Biran went up a rank
      Proficient
  • Popular Contributors

    1. 1
      +primortal
      500
    2. 2
      PsYcHoKiLLa
      223
    3. 3
      ATLien_0
      89
    4. 4
      +Edouard
      84
    5. 5
      Steven P.
      81
  • Tell a friend

    Love Neowin? Tell a friend!