publicsuffixlist工具
publicsuffixlist的Python项目详细描述
publicsuffixlist
Public Suffix Listpython 2.5+/3.x的解析器实现。
- 符合TEST DATA
- 支持idn(unicode或punycoded)。
- 支持python2.5+和python 3.x
- 与内置psl和更新程序脚本一起提供。
- 用纯python编写。没有库依赖项。
安装
publicsuffixlist
可以通过pip
或pip3
安装。
$ sudo pip install publicsuffixlist
如果您使用的是稍旧的发行版(rhel/centos6.x),则可能需要在安装之前更新pip
本身。
$ sudo pip install -U pip
用法
frompublicsuffixlistimportPublicSuffixListpsl=PublicSuffixList()# uses built-in PSL filepsl.publicsuffix("www.example.com")# "com"# longest public suffix partpsl.privatesuffix("www.example.com")# "example.com"# shortest domain assigned for a registrantpsl.privatesuffix("com")# None# None if no private (non-public) part foundpsl.publicsuffix("www.example.unknownnewtld")# "unkownnewtld"# new TLDs are valid public suffix by defaultpsl.publicsuffix(u"www.example.香港")# u"香港"# accept unicodepsl.publicsuffix("www.example.xn--j6w193g")# "xn--j6w193g"# accept punycoded IDNs by default
最新的psl可以作为类似文件的line iterable对象传递。
withopen("latest_psl.dat","rb")asf:psl=PublicSuffixList(f)
同时适用于python 2.x和3.x。
$ python2 setup.py test
$ python3 setup.py test
插入兼容性代码以替换publicsuffix
# from publicsuffix import PublicSuffixListfrompublicsuffixlist.compatimportPublicSuffixListpsl=PublicSuffixList()psl.suffix("www.example.com")# return "example.com"psl.suffix("com")# return "" rather than None
一些方便的方法。
psl.is_private("example.com")# Truepsl.privateparts("aaa.www.example.com")# ("aaa", "www", "example.com")psl.subdomain("aaa.www.example.com",depth=1)# "www.example.com"
限制
publicsuffixlist
不提供域名验证。
在dns协议中,大部分8位字符都是可接受的域名标签。符合icann的注册中心不接受具有_
(下划线)但主机名可能具有的域名。例如,DMARC记录。
用户需要根据用户的上下文确认输入有效。
不支持部分编码(Unicode混合)的punycode,因为punycode en/解码速度非常慢,并且结果编码不可预知。
如果您不确定输入是否是有效的punycode,则应该执行unknowndomain.encode("idna")
,这是等幂。
icann和私有后缀
公共后缀列表包含icann域的后缀和私有后缀。使用标志only_icann
可以停用私有后缀:
>>> psl = PublicSuffixList()
>>> psl.publicsuffix("example.priv.at")
'priv.at'
>>> psl = PublicSuffixList(only_icann=True)
>>> psl.publicsuffix("example.priv.at")
'at'
许可证
- 此模块在Mozilla Public License 2.0下获得许可。
- 由Mozilla Foundation维护的公共后缀列表是根据Mozilla公共许可2.0授权的。
- PSL测试用例数据集是公共域(CC0)。
来源/链接
- github上的git存储库(https://github.com/ko-zu/psl)
- PYPI(https://pypi.python.org/pypi?name=publicsuffixlist&:action=display)