Public Suffix List 公共后缀清单详解:3分钟完成本地校验与数据可信机制
2026/8/27 16:19:21 网站建设 项目流程

Public Suffix List 公共后缀清单详解:3分钟完成本地校验与数据可信机制

【免费下载链接】listThe Public Suffix List项目地址: https://gitcode.com/gh_mirrors/li/list

Public Suffix List(PSL)是浏览器、邮件网关与开发者共同依赖的公共后缀权威清单:它定义了 com、co.uk 这类后缀,告诉所有软件注册域名的边界停在哪里。

为什么 Cookie 与域名解析都离不开公共后缀清单

写后端代码或排查浏览器问题时,你多半撞过这堵墙:a.co.uk 和 b.co.uk 是两个互不相干的站点,可只按"倒数第二段"划边界的代码会把它们当同源,Cookie 隔离直接失效;更隐蔽的是 my-site.com.evil.com 这种仿冒域名,肉眼看着像官网,真正的注册主体却在最后一级。问题根源在于域名边界无法用固定层数判断:com 只占一级,co.uk 占两级,github.io 又要占三级。于是行业约定了一份公共后缀清单(即列出所有"注册域名到此为止"的后缀),浏览器、邮件安全和开发工具都先查它再划界。简单来说,它是"域名该剥几级"的全球字典,没有它,"同一个网站"这个概念就立不住。

读懂 public_suffix_list.dat:两大分区与特殊规则

整份清单就是仓库里那个 public_suffix_list.dat 纯文本文件,一万六千多行,无数据库、无配置,一行一条规则——这正是它能被直接内置进任何浏览器的原因。结构上它用标记切分成两个分区:

  • ICANN DOMAINS 段:ICANN 已注册顶级域及其受管二级域,如 com、co.uk、pvt.k12.ma.us;
  • PRIVATE DOMAINS 段:github.io、blogspot.com 这类平台型后缀,按机构名字母序排列;
  • 通配规则*:匹配该层级下任意子域,当前清单里有 282 处;
  • 例外规则!:在通配之下显式排除某个具体条目,全表仅 8 处。

3分钟完成本地校验:克隆仓库并跑通 linter

不需要安装任何依赖,Python 标准库就够:

git clone https://gitcode.com/gh_mirrors/li/list cd list python3 linter/pslint.py public_suffix_list.dat
  1. 第一条命令克隆仓库,拿到清单本体和全套校验工具;
  2. 第二条是可选的目录切换,进入工作区;
  3. 第三条运行语法 linter 一遍,无输出且退出码为 0 即代表清单格式通过。

如果还想跑解析器行为测试,可执行make test;它包含 test-rules 目标,需要先拉取 libpsl 库,只验证清单本身时用make test-syntax更省事。

公共后缀数据如何保证可信:linter、测试向量与官方数据源

  • linter/pslint.py 逐行做语法检查:非法字符、重复条目、排序违规、通配与例外配对都会报错,并配套pslint_selftest.sh自检用例,防止 linter 自己失灵;
  • tests/tests.txt 提供数百行"输入域名 → 期望公共后缀"的测试向量,由 test_psl.js 喂给真实解析器核对结果;
  • tools/newgtlds.go 定期拉取 ICANN 官方 gTLD 注册表数据并生成"new gTLDs"区段,把新增顶级域从人工抄写变成程序导入;
  • tools/internal/githistory 记录每条变更对应的 PR 历史,任何一行条目都能回溯到引入它的变更与理由。

维护与使用公共后缀清单的 3 个实用技巧

  • 提交前先在本地跑一遍 linter→ 实践中被拒的 PR 大多栽在排序和格式上,提交前自校验能明显缩短评审往返。
  • 接入项目时别把清单硬编码→ 清单按月更新,新 gTLD 随时上线,本地缓存定期拉取官方版本,才能和浏览器保持同一套边界。
  • 提条目前先读 CONTRIBUTING.md→ 它写明了排序规范和被拒的常见原因,维护者是志愿团队,不符合模板的 PR 会被直接关闭,提前功课比来回扯皮快得多。

本地校验跑通后,这份上万行的清单就真正"可信可用"了;想深入测试流程可看仓库根目录的 Makefile,想提交修改则从 CONTRIBUTING.md 开始读起。

【免费下载链接】listThe Public Suffix List项目地址: https://gitcode.com/gh_mirrors/li/list

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询