Python package for retrieving WHOIS information of domains.
Project description
whoisdomain
A Python package for retrieving WHOIS information of DOMAIN'S ONLY.
This package will not support querying ip CIDR ranges or AS information
This is a copy of the original DanyCork 'whois'.
I will start versioning at 1.x.x where the second item will be YYYYMMDD, the third will start from 1 and be only used if more than one update will have to be done in one day.
Features
- Python wrapper for the "whois" cli command of your operating system.
- Simple interface to access parsed WHOIS data for a given domain.
- Able to extract data for all the popular TLDs (com, org, net, biz, info, pl, jp, uk, nz, ...).
- Query a WHOIS server directly instead of going through an intermediate web service like many others do.
- Works with Python >= 3.6
- All dates as datetime objects.
- Possibility to cache results.
- Verbose output on stderr during debugging to see how the internal functions are doing their work
- raise a exception on Quota ecceeded type responses
- raise a exception on PrivateRegistry tld's where we know the tld and know we don't know anything
- allow for optional cleaning the response before extracting information
- optionally allow IDN's to be translated to Punycode
- optional specify the whois command on query(...,cmd="whois") as in: https://github.com/gen1us2k/python-whois/
- the module is now 'mypy --strict' clean
- the module now also exports a cli command domainwhois
- both the module and the cli now support showing the version with lib:whois.getVersion() or cli:whoisdomain -V
Dependencies
- please install also the command line "whois" of your distribution as this library parses the output of the "whois" cli command of your operating system
Usage example
Install the cli whois
of your operating system if it is not present already,
e.g 'apt install whois' or 'yum install whois'
# fedora 37
sudo yum install whois
pip install whoisdomain
python
>>> import whoisdomain as whois
>>> d = whois.query('google.com')
>>> print(d.__dict__)
{'name': 'google.com', 'tld': 'com', 'registrar': 'MarkMonitor, Inc.', 'registrant_country': 'US', 'creation_date': datetime.datetime(1997, 9, 15, 9, 0), 'expiration_date': datetime.datetime(2028, 9, 13, 9, 0), 'last_updated': datetime.datetime(2019, 9, 9, 17, 39, 4), 'status': 'clientUpdateProhibited (https://www.icann.org/epp#clientUpdateProhibited)', 'statuses': ['clientDeleteProhibited (https://www.icann.org/epp#clientDeleteProhibited)', 'clientTransferProhibited (https://www.icann.org/epp#clientTransferProhibited)', 'clientUpdateProhibited (https://www.icann.org/epp#clientUpdateProhibited)', 'serverDeleteProhibited (https://www.icann.org/epp#serverDeleteProhibited)', 'serverTransferProhibited (https://www.icann.org/epp#serverTransferProhibited)', 'serverUpdateProhibited (https://www.icann.org/epp#serverUpdateProhibited)'], 'dnssec': False, 'name_servers': ['ns1.google.com', 'ns2.google.com', 'ns3.google.com', 'ns4.google.com'], 'registrant': 'Google LLC', 'emails': ['abusecomplaints@markmonitor.com', 'whoisrequest@markmonitor.com']}
>>> print (d.expiration_date)
2028-09-13 09:00:00
>>> print(d.name)
google.com
>>> print (d.creation_date)
1997-09-15 09:00:00
whoisdomain
# fedora 37
sudo yum install whois
pip3 install whoisdomain
whoisdomain -d google.com
test domain: <<<<<<<<<< google.com >>>>>>>>>>>>>>>>>>>>
name str 'google.com'
tld str 'com'
registrar str 'MarkMonitor, Inc.'
registrant_country str 'US'
creation_date datetime.datetime 1997-09-15 09:00:00
expiration_date datetime.datetime 2028-09-13 09:00:00
last_updated datetime.datetime 2019-09-09 17:39:04
status str 'clientUpdateProhibited (https://www.icann.org/epp#clientUpdateProhibited)'
statuses list ['clientDeleteProhibited (https://www.icann.org/epp#clientDeleteProhibited)', 'clientTransferProhibited (https://www.icann.org/epp#clientTransferProhibited)', 'clientUpdateProhibited (https://www.icann.org/epp#clientUpdateProhibited)', 'serverDeleteProhibited (https://www.icann.org/epp#serverDeleteProhibited)', 'serverTransferProhibited (https://www.icann.org/epp#serverTransferProhibited)', 'serverUpdateProhibited (https://www.icann.org/epp#serverUpdateProhibited)']
dnssec bool False
name_servers list ['ns1.google.com', 'ns2.google.com', 'ns3.google.com', 'ns4.google.com']
registrant str 'Google LLC'
emails list ['abusecomplaints@markmonitor.com', 'whoisrequest@markmonitor.com']
A short intro into the cli whoisdomain command
whoisdomain
[ -h | --usage ]
print this text and exit
[ -V | --Version ]
print the build version string
and exit
[ -S | --SupportedTld ]
print all known top level domains
and exit
[ -a | --all]
test all existing tld currently supported
and exit
[ -f <filename> | --file = <filename> " ]
use the named file to test all domains (one domain per line)
lines starting with # or empty lines are skipped, anything after the domain is ignored
the option can be repeated to specify more then one file
exits after processing all the files
[ -D <directory> | --Directory = <directory> " ]
use the named directory, ald use all files ending in .txt as files containing domains
files are processed as in the -f option so comments and empty lines are skipped
the option can be repeated to specify more then one directory
exits after processing all the dirs
[ -d <domain> | --domain = <domain> " ]
only analyze the given domains
the option can be repeated to specify more domain's
[ -v | --verbose ]
set verbose to True,
verbose output will be printed on stderr only
[ -I | --IgnoreReturncode ]
sets the IgnoreReturncode to True,
[ -p | --print ]
also print text containing the raw output of the cli whois
[ -R | --Ruleset ]
dump the ruleset for the requested tld and exit
should be combined with -d to specify tld's
[ -C <file> | --Cleanup <file> ]
read the input file specified and run the same cleanup as in whois.query,
then exit
# test two domains with verbose and IgnoreReturncode
example: whoisdomain -v -I -d meta.org -d meta.com
# test all supported tld's with verbose and IgnoreReturncode
example: whoisdomain -v -I -a
# test one specific file with verbose and IgnoreReturncode
example: whoisdomain -v -I -f tests/ok-domains.txt
# test one specific directory with verbose and IgnoreReturncode
example: whoisdomain -v -I -D tests
ccTLD & TLD support
see the file: ./whoisdomain/tld_regexpr.py or call lib:whoisdomain.validTlds() or cli:whoisdomain -S
Support
- Python 3.x is supported for x >= 6
- Python 2.x IS NOT supported.
Author's
- this is a rename copy of original work done in: https://github.com/DannyCork/python-whois
- the project is also related to the project: https://github.com/gen1us2k/python-whois
- both seem derived from a older google.code site: https://code.google.com/archive/p/python-whois
- aside from the original authors, many others already contributed to these repositories
- if authors/contributors prefer to be named explicitly, they can add a line in Historical.txt
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file whoisdomain-1.20230503.1.tar.gz
.
File metadata
- Download URL: whoisdomain-1.20230503.1.tar.gz
- Upload date:
- Size: 36.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 803318495124c557e1078c7f93121de80cecb8e673b8b570d8c204342f26a012 |
|
MD5 | 9014a12ee1c48261ae8cba0df2f1ac5d |
|
BLAKE2b-256 | 4edfe6e4ebf991f5da9d23b49ecf933a026cd7de40bf8d3b915f98eb1b1d12f5 |
File details
Details for the file whoisdomain-1.20230503.1-py3-none-any.whl
.
File metadata
- Download URL: whoisdomain-1.20230503.1-py3-none-any.whl
- Upload date:
- Size: 40.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64054938cbc7d4c40ba40dcdd4aaf276abbb8d5849c1660733cdb3d6ed1b8259 |
|
MD5 | 96a092f177d3234ee6a177355e844fe1 |
|
BLAKE2b-256 | dfdcc4c7bfce75a1ac43244d763515f8f39d47a491f12fe85e264c7904136bbf |