Richkit 是一个 Python 3 包,提供以域名为输入并返回该域名附加信息的工具。它可以是对域名本身的分析,从数据库查询,从其他服务检索,或者它们的某种组合。
Richkit 的目的是提供一个可复用的域名分析、查询和检索函数库,这些函数在奥尔堡大学网络安全研究组内部共享,也向公众开放以供复用和修改。
文档可在 https://richkit.readthedocs.io/en/latest/ 找到。
Python >= 3.5要安装 Richkit,只需在终端输入 pip install richkit
以下代码可用于分别检索 TLD 和 URL 类别。
检索给定 URL 的有效顶级域名:
>>> from richkit.analyse import tld
>>> urls = ["www.aau.dk","www.github.com","www.google.com"]
>>>
>>> for url in urls:
... print(tld(url))
dk
com
com
检索给定 URL 的类别:
>>> from richkit.retrieve.symantec import fetch_from_internet
>>> from richkit.retrieve.symantec import LocalCategoryDB
>>>
>>> urls = ["www.aau.dk","www.github.com","www.google.com"]
>>>
>>> local_db = LocalCategoryDB()
>>> for url in urls:
... url_category=local_db.get_category(url)
... if url_category=='':
... url_category=fetch_from_internet(url)
... print(url_category)
Education
Technology/Internet
Search Engines/Portals
Richkit 定义了一组按以下模块分类的函数:
richkit.analyse:该模块提供可应用于域名的函数。与 richkit.lookup 类似,但与 richkit.retrieve 不同,这些操作不会将域名透露给第三方,从而保证机密性。
richkit.lookup:该模块提供在本地资源中查找域名的能力,即域名不会被发送给第三方。该模块可能会获取列表或数据库等资源,但必须以保持域名机密性的方式进行。与 richkit.retrieve 形成对比。
richkit.retrieve:该模块提供检索各类域名数据的能力。它没有 richkit.lookup 的“机密性约束”。
为防止环境相关问题,我们提供了 Dockerfile.test 文件,它基本上构建了一个用于运行 Richkit 测试的 Docker 镜像。
.github/local-test/run-test.sh 第 3 行的 MAXMIND_LICENCE_KEY。这是通过 lookup 模块测试用例所必需的。在 Docker 环境中测试的命令:
docker build -t richkit-test -f Dockerfile.test . :构建运行测试用例所需的镜像
docker run -e MAXMIND_LICENSE_KEY="<licence-key> " richkit-test :在 Docker 镜像中运行 run-test.sh 文件。
非常欢迎贡献。
我们使用 gitflow 分支策略,如果你计划向此仓库推送分支,请遵循该策略。请注意,我们会使用 .githooks/check-branch-name.py 测试分支名称。可以使用 git pre-commit 钩子在提交时自动检查。Linux 上提供了一个示例,可以直接使用如下方式进行启用(假设 python>=3.6 和 bash):
ln -s $(pwd)/.githooks/pre-commit.linux.sample $(pwd)/.git/hooks/pre-commit