ipwhois is a Python package focused on retrieving and parsing whois data for IPv4 and IPv6 addresses.
RDAP is the recommended query method as of v0.11.0. Please see the upgrade info.
IPWhois.lookup() is deprecated as of v0.12.0 and will be removed. Legacy whois lookups were moved to IPWhois.lookup_whois().
- Parses a majority of whois fields in to a standard dictionary
- IPv4 and IPv6 support
- Referral whois support
- Supports RDAP queries (recommended method, more detailed information)
- Proxy support for RDAP queries
- Recursive network parsing for IPs with parent/children networks listed
- Python 2.6+ and 3.3+ supported
- Useful set of utilities
- BSD license
- 100% core code coverage (See '# pragma: no cover' for exclusions)
- Human readable field translations
- Full CLI for IPWhois with optional ANSI colored console output.
https://secynic.github.io/ipwhois
https://github.com/secynic/ipwhois/tree/master/ipwhois/examples
https://github.com/secynic/ipwhois
https://pypi.python.org/pypi/ipwhois
https://secynic.github.io/ipwhois/CHANGES.html
Python 2.6, 2.7:
dnspython ipaddr
Python 3.3+:
dnspython3
Latest version from PyPi:
pip install --upgrade ipwhois
Latest version from GitHub:
pip install -e git+https://github.com/secynic/ipwhois@master#egg=ipwhois
ipwhois needs some outbound firewall ports opened from your host/server.
ASN (DNS): | 53/tcp |
---|---|
ASN (Whois): | 43/tcp |
ASN (HTTP): | 80/tcp 443/tcp (Pending) |
RDAP (HTTP): | 80/tcp 443/tcp (Pending) |
Legacy Whois: | 43/tcp |
Get Host: | 43/tcp |
ipwhois.IPWhois is the base class for wrapping RDAP and Legacy Whois lookups. Instantiate this object, then call one of the lookup functions:
RDAP (HTTP) - IPWhois.lookup_rdap() OR Legacy Whois - IPWhois.lookup_whois()
Key | Type | Description |
address | String | An IPv4 or IPv6 address as a string, integer, IPv4Address, or IPv6Address. |
timeout | Int | The default timeout for socket connections in seconds. |
proxy_opener | Object | The urllib.request.OpenerDirector request for proxy support or None. |
allow_permutations | Bool | Allow net.Net() to use additional methods if DNS lookups to Cymru fail. |
IPWhois.lookup_rdap() is the recommended lookup method. RDAP provides a far better data structure than legacy whois and REST lookups (previous implementation). RDAP queries allow for parsing of contact information and details for users, organizations, and groups. RDAP also provides more detailed network information.
RDAP documentation:
https://secynic.github.io/ipwhois/RDAP.html
https://github.com/secynic/ipwhois/blob/master/RDAP.rst
IPWhois.lookup() is deprecated as of v0.12.0 and will be removed. Legacy whois lookups were moved to IPWhois.lookup_whois().
Legacy Whois documentation:
https://secynic.github.io/ipwhois/WHOIS.html
https://github.com/secynic/ipwhois/blob/master/WHOIS.rst
Utilities documentation:
https://secynic.github.io/ipwhois/UTILS.html
https://github.com/secynic/ipwhois/blob/master/UTILS.rst
CLI documentation:
https://secynic.github.io/ipwhois/CLI.html
https://github.com/secynic/ipwhois/blob/master/CLI.rst
This feature is under consideration. Take a look at TekDefense's Automater:
There are no plans for domain whois support in this project.
Look at Sven Slootweg's python-whois for a library with domain support.
Thank you JetBrains for the PyCharm open source support!