Package: wizard-domaininfo
Wizard DomaininfoDNS/Whois Domain Information libraryRequirementsWizard Domaininfo requires Python 3.6 or above.To install Python 3.6, I recommend usingpyenv.# install pyenvgitclonehttps://github.com/pyenv/pyenv~/.pyenv# setup pyenv (you should also put these three lines in .bashrc or similar)exportPATH="${HOME}/.pyenv/bin:${PATH}"exportPYENV_ROOT="${HOME}/.pyenv"eval"$(pyenvinit-)"# install Python 3.6pyenvinstall3.6.12# make it available globallypyenvglobalsystem3.6.12InstallationWithpip:python3.6-mpipinstallwizard_domaininfoWithpipx:python3.6-mpipinstall--userpipx

pipxinstall--pythonpython3.6wizard_domaininfo=========A WHOIS DNS retrieval and parsing library for Python.DependenciesNone! All you need is the Python standard library. Optional RDAP WHOIS based lookups require requests and json libraries. Optional DNS lookups are based on aiodns library.InstructionsThe whois legacy manual HTML version is also viewablehere.
The new manual for RDAP based whois and DNS is locatedhere.Goals100% coverage of WHOIS/DNS formats.Accurate and complete data.Consistently functional parsing; constant tests to ensure the parser isn't accidentally broken.FeaturesWHOIS data retrievalAble to follow WHOIS server redirectsWon't get stuck on multiple-result responses from verisign-grsWHOIS data parsingBase information (registrar, etc.)Dates/times (registration, expiry, ...)Full registrant information (!)NameserversOptional WHOIS data normalizationAttempts to intelligently reformat WHOIS data for better (human) readabilityConverts various abbreviation types to full locality namesAirport codesCountry names (2- and 3-letter ISO codes)US states and territoriesCanadian states and territoriesAustralian statespwhois, a simple WHOIS tool using pythonwhoisEasily readable output formatCan also output raw WHOIS data... and JSON.Automated testing suite for parse.py and legacy whois(non rdap based)Will detect and warn about any changes in parsed data compared to previous runsGuarantees that previously working WHOIS parsing doesn't unintentionally break when changing codeAutomated testing suite for rdap and aiodns is based on pytestFast Asynchronous DNS lookups via c-ares aiodns library and helper methods in utils.py.Single call via DomainInfo class in domaininfo.py will get all available DNS/Whois via rdap and fallback to legacy whois as needed.Checks for WAFs(Cloudflare/Sucuri/Quic.Cloud)Check domain expiration.Check for or enumerate DKIM records and selectors.Check Whois Nameservers and DNS nameservers match.Seeherefor all the class attributes.Important update notesIt doesn't work!It doesn't work at all?It doesn't parse the data for a particular domain?There's an inaccuracy in parsing the data for a domain, even just a small one?If any of those apply, don't hesitate to file an issue! The goal is 100% coverage, and we need your feedback to reach that goal.LicenseThis library may be used under the MIT License.Data sourcesThis library uses a number of third-party datasets for normalization:airports.dat:OpenFlights Airports Database(Open Database License 1.0,Database Contents License 1.0)countries.dat:Country List(MIT license)countries3.dat:ISO countries list(license unspecified)states_au.dat: Part ofpythonwhois(WTFPL/CC0)states_us.dat:State Table(license unspecified, free reuse encouraged)states_ca.dat:State Table(license unspecified, free reuse encouraged)Be aware that the OpenFlights database in particular has potential licensing consequences; if you do not wish to be bound by these potential consequences, you may simply delete theairports.datfile from your distribution.pythonwhoiswill assume there is no database available, and will not perform airport code conversion (but still function correctly otherwise). This also applies to other included datasets.ContributingFeel free to fork and submit pull requests (to thedevelopbranch)! If you change any parsing or normalization logic, ensure to run the full test suite before opening a pull request. Instructions for that are below.Please note that this project uses tabs for indentation.All commands are relative to the root directory of the repository.Pull requests that donotinclude output from test_parse.py will be rejected!Adding new WHOIS data to the testing setpwhois --raw thedomain.com > test/data/thedomain.comChecking the currently parsed data (while editing the parser)./pwhois -f test/data/thedomain.com/ .(don't forget the dot at the end!)Marking the current parsed data as correct for a domainMake sure to verify (usingpwhoisor otherwise) that the WHOIS data for the domain is being parsed correctly, before marking it as correct!python test_parse.py update thedomain.comRunning all testspython test_parse.py run allTesting a specific domainpython test_parse.py run thedomain.com