publicsuffixlist
Public Suffix Listpython 2.5+/3.x的解析器实现。支持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# 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)。
来源/链接
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库