publicsuffixlist工具

publicsuffixlist的Python项目详细描述


publicsuffixlist

Public Suffix Listpython 2.5+/3.x的解析器实现。

  • 符合TEST DATA
  • 支持idn(unicode或punycoded)。
  • 支持python2.5+和python 3.x
  • 与内置psl和更新程序脚本一起提供。
  • 用纯python编写。没有库依赖项。

Build StatusPyPI versionDownloads

安装

publicsuffixlist可以通过pippip3安装。

$ 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)。

来源/链接

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像