{ "info": { "author": "Victor Felder", "author_email": "victorfelder@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Text Processing", "Topic :: Text Processing :: Filters", "Topic :: Utilities" ], "description": "confusable_homoglyphs `[doc] `__\n========================================================================================\n\n.. image:: https://img.shields.io/travis/vhf/confusable_homoglyphs.svg\n :target: https://travis-ci.org/vhf/confusable_homoglyphs\n\n.. image:: https://img.shields.io/pypi/v/confusable_homoglyphs.svg\n :target: https://pypi.python.org/pypi/confusable_homoglyphs\n\n.. image:: https://readthedocs.org/projects/confusable_homoglyphs/badge/?version=latest\n :target: http://confusable-homoglyphs.readthedocs.io/en/latest/\n :alt: Documentation Status\n\n*a homoglyph is one of two or more graphemes, characters, or glyphs with\nshapes that appear identical or very similar*\n`wikipedia:Homoglyph `__\n\nUnicode homoglyphs can be a nuisance on the web. Your most popular\nclient, AlaskaJazz, might be upset to be impersonated by a trickster who\ndeliberately chose the username \u0391laskaJazz.\n\n- ``AlaskaJazz`` is single script: only Latin characters.\n- ``\u0391laskaJazz`` is mixed-script: the first character is a greek\n letter.\n\nYou might also want to avoid people being tricked into entering their\npassword on ``www.micros\ufeff\u043eft.com`` or ``www.fa\u03f2ebook.com`` instead of\n``www.microsoft.com`` or ``www.facebook.com``. `Here is a\nutility `__ to play\nwith these **confusable homoglyphs**.\n\nNot all mixed-script strings have to be ruled out though, you could only\nexclude mixed-script strings containing characters that might be\nconfused with a character from some unicode blocks of your choosing.\n\n- ``Allo`` and ``\u03c1\u03c4\u03c4`` are fine: single script.\n- ``Allo\u0393`` is fine when our preferred script alias is 'latin': mixed script, but ``\u0393`` is not confusable.\n- ``Allo\u03c1`` is dangerous: mixed script and ``\u03c1`` could be confused with\n ``p``.\n\nThis library is compatible Python 2 and Python 3.\n\n`API documentation `__\n---------------------------------------------------------------------------------------------------\n\nIs the data up to date?\n-----------------------\n\nYep.\n\nThe unicode blocks aliases and names for each character are extracted\nfrom `this file `__\nprovided by the unicode consortium.\n\nThe matrix of which character can be confused with which other\ncharacters is built using `this\nfile `__\nprovided by the unicode consortium.\n\nThis data is stored in two JSON files: ``categories.json`` and\n``confusables.json``. If you delete them, they will both be recreated by\ndownloading and parsing the two abovementioned files and stored as JSON\nfiles again.\n\n\n\n\nHistory\n-------\n\n1.0.0\n=====\n\nInitial release.\n\n2.0.0\n=====\n\n- `allowed_categories` renamed to `allowed_aliases`\n\n2.0.1\n=====\n\n- Fix a TypeError: https://github.com/vhf/confusable_homoglyphs/pull/2\n\n3.0.0\n=====\n\nCourtesy of Ryan P Kilby, via https://github.com/vhf/confusable_homoglyphs/pull/6 :\n\n- Changed file paths to be relative to the `confusable_homoglyphs` package directory instead of the user's current working directory.\n- Data files are now distributed with the packaging.\n- Fixes tests so that they use the installed distribution instead of the local files. (Originally, the data files were erroneously showing up during testing, despite not being included in the distribution).\n- Moves the data file generation into a simple CLI. This way, users have a method for controlling when the data files are updated.\n- Since the data files are now included in the distribution, the CLI is made optional. Its dependencies can be installed with the `cli` bundle, eg. `pip install confusable_homoglyphs[cli]`.\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vhf/confusable_homoglyphs", "keywords": "confusable", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "confusable_homoglyphs", "package_url": "https://pypi.org/project/confusable_homoglyphs/", "platform": "", "project_url": "https://pypi.org/project/confusable_homoglyphs/", "project_urls": { "Homepage": "https://github.com/vhf/confusable_homoglyphs" }, "release_url": "https://pypi.org/project/confusable_homoglyphs/3.2.0/", "requires_dist": null, "requires_python": "", "summary": "Detect confusable usage of unicode homoglyphs, prevent homograph attacks.", "version": "3.2.0" }, "last_serial": 4226290, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "96fe892b51f1de3c180625d537b51ddc", "sha256": "cda66b4983c8b65bf66845eda38bc14a237443e0023d9c7105b32d523274fef3" }, "downloads": -1, "filename": "confusable_homoglyphs-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96fe892b51f1de3c180625d537b51ddc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9388, "upload_time": "2016-09-13T17:54:40", "url": "https://files.pythonhosted.org/packages/4b/aa/890b8e49bb414244a8ff2615c5d99b5ccfb9da1c4b40b2b00e113d98429a/confusable_homoglyphs-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47622d54c1f6f8a9be08dbaef41526a8", "sha256": "42489c48c289eaab019846e826674eda3e339a102431b3a5b260230d577b18aa" }, "downloads": -1, "filename": "confusable_homoglyphs-1.0.tar.gz", "has_sig": false, "md5_digest": "47622d54c1f6f8a9be08dbaef41526a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30048, "upload_time": "2016-09-13T17:54:36", "url": "https://files.pythonhosted.org/packages/50/80/0470e80c41336f1a6c88c607347f5884c580b6673f132f144808502aed5a/confusable_homoglyphs-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "6f1f437fe6de82a40e764f4732f2bd1c", "sha256": "6390602460694ba1939f859e613fdf4406d2d8dfe9056a6fc52383255be57488" }, "downloads": -1, "filename": "confusable_homoglyphs-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f1f437fe6de82a40e764f4732f2bd1c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9600, "upload_time": "2016-09-14T10:26:44", "url": "https://files.pythonhosted.org/packages/10/39/3ffe2bd1633a44b61b2150ad3a8ffd5ee13cb7de4986cf5fc7a0fba8d9e2/confusable_homoglyphs-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74d9eaae2b590801731c36a3549fd080", "sha256": "c1b4ceaa7c95795e0e490aa40ce2aa315620048199d7fa334bcad7996fc0bbed" }, "downloads": -1, "filename": "confusable_homoglyphs-1.0.1.tar.gz", "has_sig": false, "md5_digest": "74d9eaae2b590801731c36a3549fd080", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30563, "upload_time": "2016-09-14T10:26:41", "url": "https://files.pythonhosted.org/packages/2e/d5/58362f582334863bc0a9c42ee9106817f83fb5647a7a7c4ee025773930f9/confusable_homoglyphs-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "80571b480ca348d6ca6df1df7c292c36", "sha256": "85b7b2e89bf10ef1a24b13f5e152ec9e7d3c4d4e79ae47eaea69529448488f70" }, "downloads": -1, "filename": "confusable_homoglyphs-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "80571b480ca348d6ca6df1df7c292c36", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9670, "upload_time": "2016-09-14T12:31:07", "url": "https://files.pythonhosted.org/packages/62/91/a913d4158504210e3aa4b1312f07fa5ea70cff67f1da310b71b35bfaa3cb/confusable_homoglyphs-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7760b94fb926168738d980370e853be", "sha256": "07be7ad8b79654f6990431682f8825f149330f111585c275ac2fc7fef248793f" }, "downloads": -1, "filename": "confusable_homoglyphs-1.0.2.tar.gz", "has_sig": false, "md5_digest": "a7760b94fb926168738d980370e853be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30672, "upload_time": "2016-09-14T12:31:04", "url": "https://files.pythonhosted.org/packages/6d/c7/57438f58bb821d6a197b4d4f47f92698cce9787dfae159c63ad2c39f61df/confusable_homoglyphs-1.0.2.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "2e312d4aa7461500bfd77b45fd0b0a34", "sha256": "8186725491537939025f129228802f9e4e8495de045e4eddd77db2e3b11d3d3a" }, "downloads": -1, "filename": "confusable_homoglyphs-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2e312d4aa7461500bfd77b45fd0b0a34", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10283, "upload_time": "2016-09-14T14:00:40", "url": "https://files.pythonhosted.org/packages/c8/cd/a4cc6ac38d556ff339c762c445b80cd1adc0c56369f3fed6b3992abba374/confusable_homoglyphs-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea713167933bcc285e05049c88100ebf", "sha256": "b3a456b545df4e553c681e2d306c5605ae33e4a1a41a8de81df75d416b4c168f" }, "downloads": -1, "filename": "confusable_homoglyphs-2.0.0.tar.gz", "has_sig": false, "md5_digest": "ea713167933bcc285e05049c88100ebf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31244, "upload_time": "2016-09-14T14:00:36", "url": "https://files.pythonhosted.org/packages/58/66/e9237750f3683e9413e913f4271a3cdfd611f1262047eba2eff870d48191/confusable_homoglyphs-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "eda0d0e25bcaebcd4fccb6cb95df53f4", "sha256": "f1fe035e6e7de124214676169156f2252b0774b75ede3aad3525e4a9bf139db9" }, "downloads": -1, "filename": "confusable_homoglyphs-2.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eda0d0e25bcaebcd4fccb6cb95df53f4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10290, "upload_time": "2016-12-19T07:32:06", "url": "https://files.pythonhosted.org/packages/b0/8f/52a75f060b607d85313cdc95589ddc8b8866ececc5c766f5e95e89280642/confusable_homoglyphs-2.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4704a7f1e630cdc24f32e7f9a9a8e1c5", "sha256": "f868e595304afd0bc888626b90e4f273c191522bdacdbdc83aab7d54508f665e" }, "downloads": -1, "filename": "confusable_homoglyphs-2.0.1.tar.gz", "has_sig": false, "md5_digest": "4704a7f1e630cdc24f32e7f9a9a8e1c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31298, "upload_time": "2016-12-19T07:31:58", "url": "https://files.pythonhosted.org/packages/d9/2a/9c22d58661c361a2d500b4eaff83510bb329c2d683fd80cfa0c821c94e79/confusable_homoglyphs-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "e198ddd5dda766198e7b78e9e1a20e81", "sha256": "e653f557f6728864e70c24dd4e33750595304f2d193a1db9f37960c5c4b50d6c" }, "downloads": -1, "filename": "confusable_homoglyphs-2.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e198ddd5dda766198e7b78e9e1a20e81", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10279, "upload_time": "2016-12-29T14:14:23", "url": "https://files.pythonhosted.org/packages/43/3b/167cd7cc57d5fd378573a83b8723845b7843e143bd0f005be874fc17ee9e/confusable_homoglyphs-2.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d17b246c40b447f1b4cc03afb2e49199", "sha256": "9c042d2c952eb2cfb26c0bfb8ea8c2105fea4817c16ea6eaf55eb01503aeaae1" }, "downloads": -1, "filename": "confusable_homoglyphs-2.0.2.tar.gz", "has_sig": false, "md5_digest": "d17b246c40b447f1b4cc03afb2e49199", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31324, "upload_time": "2016-12-29T14:14:20", "url": "https://files.pythonhosted.org/packages/e3/2e/c17ebdbfb9f7bbd9954db6f5024b84e9ca9662938e9e358b4cde0f015f7c/confusable_homoglyphs-2.0.2.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "3a8da0fcbd66a7fe8b7a2fc150deec76", "sha256": "4f5d42df30ba461281634ed9b3ad8303a0e94a13d28a7b225523ca9b9b29b65b" }, "downloads": -1, "filename": "confusable_homoglyphs-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a8da0fcbd66a7fe8b7a2fc150deec76", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 173456, "upload_time": "2017-10-14T14:17:37", "url": "https://files.pythonhosted.org/packages/20/b7/1c34d3de9e5c6a3d4fb386d96f24b28845e2462f3b039934b3341ca65ee2/confusable_homoglyphs-3.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5c3097835e91a7178eeec8fdce7aab7", "sha256": "2dc772701291bd8343abd0dca01453b970a998a9dc7fc4be558d91472100e02e" }, "downloads": -1, "filename": "confusable_homoglyphs-3.0.0.tar.gz", "has_sig": false, "md5_digest": "f5c3097835e91a7178eeec8fdce7aab7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 188836, "upload_time": "2017-10-14T14:17:32", "url": "https://files.pythonhosted.org/packages/09/81/0b8cab15b97cd75701344d02afb2b9ac516c42767d7bbc1f9f21b2788c03/confusable_homoglyphs-3.0.0.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "141a9c712cabf70592f47df058076b10", "sha256": "5566e8137a8cf5fa081a8f08039dd13e1563a14a3b63c4130688143dd067bb4f" }, "downloads": -1, "filename": "confusable_homoglyphs-3.1.0.tar.gz", "has_sig": false, "md5_digest": "141a9c712cabf70592f47df058076b10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 160030, "upload_time": "2018-05-15T21:12:40", "url": "https://files.pythonhosted.org/packages/c9/9c/16cbdbb2e099f446e081244a80d02a618121781048307d69c2cdefdafc3e/confusable_homoglyphs-3.1.0.tar.gz" } ], "3.1.1": [ { "comment_text": "", "digests": { "md5": "ec2a1d5e921c19a04d99c9fb0d0dd19a", "sha256": "946a3a65b73117b1853f4ef253f15443502c92e9df1fc7786e868450cb487ffb" }, "downloads": -1, "filename": "confusable_homoglyphs-3.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ec2a1d5e921c19a04d99c9fb0d0dd19a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 140724, "upload_time": "2018-05-15T21:33:38", "url": "https://files.pythonhosted.org/packages/65/ee/8a7be3f83acbf18fcc7baff6d5ddd9f0af09a07fd956ebf9bbeee32a5915/confusable_homoglyphs-3.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "be866d0760bcd38115c26202119528c2", "sha256": "b86d61ceb8ed350a3defe9eaa99a68eb9b08f89bfbb4ff4e8cbffbffbc26733c" }, "downloads": -1, "filename": "confusable_homoglyphs-3.1.1.tar.gz", "has_sig": false, "md5_digest": "be866d0760bcd38115c26202119528c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 161575, "upload_time": "2018-05-15T21:33:34", "url": "https://files.pythonhosted.org/packages/8b/8c/898639a4c152765d3530a3db1226000ee5ca024f31339e88a40ccd22274a/confusable_homoglyphs-3.1.1.tar.gz" } ], "3.2.0": [ { "comment_text": "", "digests": { "md5": "eff03a1e88ff8583f7c7ef896922481d", "sha256": "e3ce611028d882b74a5faa69e3cbb5bd4dcd9f69936da6e73d33eda42c917944" }, "downloads": -1, "filename": "confusable_homoglyphs-3.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eff03a1e88ff8583f7c7ef896922481d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 141197, "upload_time": "2018-08-31T13:04:08", "url": "https://files.pythonhosted.org/packages/a4/38/aadd1c42ae353943cd1523cdd38ffb267ba95861b4e8bb1a559d975ae612/confusable_homoglyphs-3.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e8f03a9076c079f2d304db3a9848b709", "sha256": "3b4a0d9fa510669498820c91a0bfc0c327568cecec90648cf3819d4a6fc6a751" }, "downloads": -1, "filename": "confusable_homoglyphs-3.2.0.tar.gz", "has_sig": false, "md5_digest": "e8f03a9076c079f2d304db3a9848b709", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 161937, "upload_time": "2018-08-31T13:04:04", "url": "https://files.pythonhosted.org/packages/62/55/0aac1a100d755987e62c12367724b33419ed15921c6a915dc257c886ceff/confusable_homoglyphs-3.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eff03a1e88ff8583f7c7ef896922481d", "sha256": "e3ce611028d882b74a5faa69e3cbb5bd4dcd9f69936da6e73d33eda42c917944" }, "downloads": -1, "filename": "confusable_homoglyphs-3.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eff03a1e88ff8583f7c7ef896922481d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 141197, "upload_time": "2018-08-31T13:04:08", "url": "https://files.pythonhosted.org/packages/a4/38/aadd1c42ae353943cd1523cdd38ffb267ba95861b4e8bb1a559d975ae612/confusable_homoglyphs-3.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e8f03a9076c079f2d304db3a9848b709", "sha256": "3b4a0d9fa510669498820c91a0bfc0c327568cecec90648cf3819d4a6fc6a751" }, "downloads": -1, "filename": "confusable_homoglyphs-3.2.0.tar.gz", "has_sig": false, "md5_digest": "e8f03a9076c079f2d304db3a9848b709", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 161937, "upload_time": "2018-08-31T13:04:04", "url": "https://files.pythonhosted.org/packages/62/55/0aac1a100d755987e62c12367724b33419ed15921c6a915dc257c886ceff/confusable_homoglyphs-3.2.0.tar.gz" } ] }