{ "info": { "author": "Elliot Pourmand", "author_email": "elliot@pourmand.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![Build Status](https://travis-ci.org/ElliotVilhelm/python-domain-validation.svg?branch=master)](https://travis-ci.org/ElliotVilhelm/python-domain-validation)\n## WHOIS Client and Domain Creation Date Parser\n![spam](assets/hacker.png)\n\nThis is a simple `WHOIS` domain registry client focused around parsing a domain's `Creation Date` and `Registrar` from `WHOIS` domain records.\nThis package is geared towards preventing fraud and abuse. The age of a domain has many applications in __abuse prevention__ and __fraud detection__.\nSpammers often register on sites using newly created domains. Being able to quickly identify the age of a domain has \nnumerous applications in fighting fraudulent activity. Similarly, the Registrar name of a domain can be very useful in fighting fraud by\nallowing an organization to implement blacklisting functionality of known fraudulent `Registrars`.\n\nThis package maintains a list of domain extension to `WHOIS` server mappings. Using these servers and a \nrule based parsing schema this package will provide you with the domain creation date of nearly any website.\n\n#### Background\nThe motivation behind this package was that many of the `WHOIS` clients available spawning child processes calling \nthe [Debian WHOIS package](https://github.com/rfc1036/WHOIS). \nThis is a security vulnerability when working at an enterprise level.\n Suppose a spammer decides to register with an email address such as, `elliot@;rm -rf /*` testing a domain such as \n `rm -rf /*` with a Unix child process can allow a hacker to delete your entire system or *worse*.\n\nBy using a direct socket connection to the proper WHOIS server based on the domain extension this package is able to\nachieve greater security than other available clients. \n\nThis package does not rely on `WHOIS.iana.org` redirection as many other WHOIS packages do. \nRather, this package maintains a direct mapping of domain extensions to servers allowing you to query for `domain creation age` through a single request.\nThis is a major improvement of runtime in relation to other WHOIS packages. \n\n#### Installation\n###### Python 2.x\n`pip install domain_validation`\n###### Python 3.x\n`pip3 install domain_validation`\n\n![pypi](assets/pypi.svg)\n\n#### Usage\nThe expected use case is for finding the creation date of a domain:\n```python\nfrom domain_validation.whois import WHOIS\n\nwhois = WHOIS(\"google.com\")\nassert str(whois.creation_date()) == \"1997-09-15\"\nassert whois.registrar() == \"MarkMonitor Inc.\"\n\nwhois = WHOIS(\"yo.cn\")\nassert str(whois.creation_date()) == '2003-03-17'\nassert whois.registrar() == '\u6d59\u6c5f\u8d30\u8d30\u7f51\u7edc\u6709\u9650\u516c\u53f8'\n```\n\n#### Notes\n##### What makes this different from other WHOIS clients?\nThis engine does not rely on `WHOIS.iana.org` server redirect, rather it maintains it's own domain extension to server\nmapping which makes query time faster. Furthermore, it does not rely on the the Debian WHOIS package, meaning it will not\nspawn a child process and use the Debian Package like [other packages](https://code.google.com/archive/p/python-WHOIS/). \nRather it uses a direct socket connection to the exact WHOIS server for the given domain extension making it __secure__ and __fast__.\n\n##### Why would I use this?\nPerhaps you are a small business or an enterprise organization facing fraudulent activity through spammy account sign-ups.\nOne signal representing the validity of an email domain is the age of the domain. This package will allow you to query for the\nage of nearly any domain from and domain extension, securely and rapidly within the safety of a Python environment (no child proccess).\nFurthermore, if you are using a rule based fraud system, this package provides you with `Registrar` information allowing you to maintain a\nblacklist of Registrars which you have found to be fraudulent.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ElliotVilhelm/python-domain-validation", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "domain-validation", "package_url": "https://pypi.org/project/domain-validation/", "platform": "", "project_url": "https://pypi.org/project/domain-validation/", "project_urls": { "Homepage": "https://github.com/ElliotVilhelm/python-domain-validation" }, "release_url": "https://pypi.org/project/domain-validation/1.6.4/", "requires_dist": null, "requires_python": "", "summary": "whois client for parsing domain creation date and registrar", "version": "1.6.4" }, "last_serial": 4392863, "releases": { "1.6.2": [ { "comment_text": "", "digests": { "md5": "9e11ab01261984cf2c258b2bb0fb4278", "sha256": "bd39791f0c827e5ef399e4180b6c6cd873eda8f0c50c082b129a02c3ef56b98e" }, "downloads": -1, "filename": "domain_validation-1.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9e11ab01261984cf2c258b2bb0fb4278", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9011, "upload_time": "2018-10-19T03:59:31", "url": "https://files.pythonhosted.org/packages/69/4c/dbefe13d00dff611ba936e4b0d67ccc4ce7b15fbcdc2d0244bae4776e624/domain_validation-1.6.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "337fdf10dec9c6ec3ac7ab1ecb7f1a73", "sha256": "110c3075544fd81c74c25017949cdea4e8fe6c5469c20d57bfc21debd50d1513" }, "downloads": -1, "filename": "domain_validation-1.6.2.tar.gz", "has_sig": false, "md5_digest": "337fdf10dec9c6ec3ac7ab1ecb7f1a73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5980, "upload_time": "2018-10-19T03:59:33", "url": "https://files.pythonhosted.org/packages/ef/f6/ea663b885e1da070da578265882ae70863c19b5f4f4c60306a6139371c23/domain_validation-1.6.2.tar.gz" } ], "1.6.4": [ { "comment_text": "", "digests": { "md5": "3b613c2f0501aa2fbcddd615976c11f3", "sha256": "b53f3c7cc43025e986fa4f1f139c5ae81ff50ca83823b299fbc05643b3facf46" }, "downloads": -1, "filename": "domain_validation-1.6.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3b613c2f0501aa2fbcddd615976c11f3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9111, "upload_time": "2018-10-19T05:03:59", "url": "https://files.pythonhosted.org/packages/fe/26/3cb51e0a6aa7b45df53601e4381e90da93eac70f3b05cb54f53357f7525a/domain_validation-1.6.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae12e028052289a624956cff04e5e3e8", "sha256": "6e50e4d73258d26206c0704ac8443e8328e9f60053e58a1fdca56b2a26b106f7" }, "downloads": -1, "filename": "domain_validation-1.6.4.tar.gz", "has_sig": false, "md5_digest": "ae12e028052289a624956cff04e5e3e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6068, "upload_time": "2018-10-19T05:04:00", "url": "https://files.pythonhosted.org/packages/7b/88/ef2ea3785c76a9b504a8d0294707442f1cc52b09041ec345686d7a4877f1/domain_validation-1.6.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3b613c2f0501aa2fbcddd615976c11f3", "sha256": "b53f3c7cc43025e986fa4f1f139c5ae81ff50ca83823b299fbc05643b3facf46" }, "downloads": -1, "filename": "domain_validation-1.6.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3b613c2f0501aa2fbcddd615976c11f3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9111, "upload_time": "2018-10-19T05:03:59", "url": "https://files.pythonhosted.org/packages/fe/26/3cb51e0a6aa7b45df53601e4381e90da93eac70f3b05cb54f53357f7525a/domain_validation-1.6.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae12e028052289a624956cff04e5e3e8", "sha256": "6e50e4d73258d26206c0704ac8443e8328e9f60053e58a1fdca56b2a26b106f7" }, "downloads": -1, "filename": "domain_validation-1.6.4.tar.gz", "has_sig": false, "md5_digest": "ae12e028052289a624956cff04e5e3e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6068, "upload_time": "2018-10-19T05:04:00", "url": "https://files.pythonhosted.org/packages/7b/88/ef2ea3785c76a9b504a8d0294707442f1cc52b09041ec345686d7a4877f1/domain_validation-1.6.4.tar.gz" } ] }