![]() |
![]()
| ![]() |
![]()
NAMENet::ParseWhois - An extendable alternative to Net::Whois for parsing whois information. SYNOPSIS# below code based on t/whois.pl in Net::ParseWhois distribution package ... use Net::ParseWhois; my $dom = 'honestabe.net'; my $w = Net::ParseWhois::Domain->new($dom); unless ($w->ok) { warn "error: " . $w->{'error'} . "\n" if $w->{'error'}; die "No match for $dom\n"; } print "Registrar: ", $w->registrar, "\n"; print "Domain: ", $w->domain, "\n"; print "Name: ", $w->name, "\n"; print "Tag: ", $w->tag, "\n"; print "Address:\n", map { " $_\n" } $w->address; print "Country: ", $w->country, "\n"; print "Name Servers:\n", map { " $$_[0] ($$_[1])\n" } @{$w->servers}; my ($c, $t); if ($c = $w->contacts) { print "Contacts:\n"; for $t (sort keys %$c) { print " $t:\n"; print map { "\t$_\n" } @{$$c{$t}}; } } print "Record created:", $w->record_created ; print "\nRecord updated:", $w->record_updated,"\n"; DESCRIPTIONNet::ParseWhois currently only supports domains from major TLDs and Registrars (.com, .net & .org -- see REGISTRARS for an exact list of who's supported) and tries to maintain backward interface compatability with Net::Whois. Net::ParseWhois is my attempt at updating Net::Whois to support whois referrals. The author of Net::Whois (Dana Hudes) and I disgreed on how to solve the problem of parsing a distrubuted and non-standardized whois system, so I created this divergent module. (It's my understanding that Mr. Hudes wants to create an IETF draft and assumes registrars/registries will then follow it. I've simply taken the current not-so-defined situation and coded around it.) Net::ParseWhois contains a generalized parsing system that can be configured for each Registrar, or completely overridden as needed. The class "Net::ParseWhois::Domain::Registrar" contains a list of known servers that could be returned in a whois referral, and specifies the specific class to use for each. When "Net::ParseWhois" receives a referral from the 'root' whois server, it creates the specified object and calls follow_referral on that object. If a domain is found and a referral given, but no Registrar class has been defined to handle that referral, the method ok will return true but method 'unknown_registrar' will also return true. Net::ParseWhois will still follow the referral, and the raw output from the registrar will be available via the method 'raw_whois_text'. REGISTRARSCurrently supported: whois.dotster.com - Dotster, Inc. whois.register.com - Register.com, Inc. whois.networksolutions.com - Network Solutions, Inc. whois.opensrs.net - Tucows.com, Inc. whois.domaindiscover.com - Tierranet, Inc. whois.bulkregister.com - Bulkregister.com, Inc. rs.domainbank.net - Domain Bank, Inc. whois.registrars.com - INTERNET DOMAIN REGISTRARS (Shopnow?) whois.corenic.net - Core Internet Council of Registrars whois.InternetNamesWW.com - Melbourne IT, aka Internet Names Worldwide whois.easyspace.com - Easyspace, Ltd. Not supported (with notes..): whois.nordnet.net - should be easy. whois.namesecure.com - easy whois.compuserve.com - easy whois.itsyourdomain.com - easy whois.namesdirect.com - easy whois.enom.com - easy, but no nameserver or expire/updated data whois.domaininfo.com - not too hard. follows same structure, but uses different template/style whois.nameit.net - different style, not too hard whois.yesnic.com - Korean based registrar, field's are labeled. would require work. whois.gandi.net - French, RIPE style whois. whois.dotearth.com - might be ugly. no newlines between different sections whois.names4ever.com - no data?? down? Known registrars that I haven't looked at -- whois.schlund.de whois.registrars.com whois.gandi.net whois.doregi.com whois.dotregistrar.com whois.ibi.net whois.OnlineNIC.com whois.paycenter.com.cn whois.domainpeople.com whois.awregistry.net whois.discount-domain.com whois.dotearth.com whois.psi-domains.com whois.gkg.net whois.enetregistry.com whois.speednic.net whois.domaininfo.com whois.catalog.com whois.oleane.net whois.totalnic.net whois.alldomains.com whois.signaturedomains.com whois.1stdomain.net whois.enterprice.net whois.stargateinc.com whois.e-names.org nswhois.domainregistry.com whois.worldnet.net whois.naame.com whois.eastcom.com whois.domainzoo.com Note: Now that CoreNic is supported (thanks Vern!), Net::ParseWhois's supported registrars should cover upwards of 90% of the GTLD registrations that are out there. COMMON METHODS (Specific to Net::ParseWhois)new("a-domain-name-goes-here")
ok
error
print "Tag: ", $w->tag, "\n"; print "Country: ", $w->country, "\n"; print "Name Servers:\n", map { " $$_[0] ($$_[1])\n" } @{$w->servers}; if ($c = $w->contacts) { print "Contacts:\n"; for $t (sort keys %$c) { print " $t:\n"; print map { "\t$_\n" } @{$$c{$t}}; The following methods apply only to when a succesful WHOIS lookup was performed. domain
registrar
record_created
record_updated
name
address
GENERIC METHODS (From Net::Whois)todo SEE ALSOThe Net::ParseWhois project homepage: http://dajoba.com/projects/netparsewhois/ The Net::ParseWhois mailing list: netparsewhois at lists dot dajoba dot com http://lists.dajoba.com/m/listinfo/netparsewhois/ Net::Whois, Net::Whois::Raw, Net::RWhois AUTHORS / ACKNOWLEDGMENTSNet::ParseWhois is maintained by Abraham A. Ingersoll <abe@dajoba.com>. This module is a based on Net::Whois, which is maintained by Dana Hudes (dhudes@hudes.org). Net::Whois was originally written by Chip Salzenberg (chip@pobox.com). Thanks to: Joseph Ingersoll for testing under ActivePerl. Curtis Poe for comments and bug testing. Andy Baio for first version of Registrars.pm. Simon Flack for newer registrars.com parsing module & bug sleuthing. Douglas Freake for (yet to be used) address parsing contribution. Vern Hart for (especially tough) CoreNic.pm parsing module. Adam Stubbs for INameWW.pm and Easyspace.pm parsing modules. COPYRIGHTCopyright 2000 Abraham A Ingersoll <abe@dajoba.com> Some portions may be copyright 1998 Dana Hudes & Chip Salzenberg. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
|