#domain #tld #data-file #etld

public-suffix

基于 Mozilla 公共后缀列表的高效确定 eTLD+1 的crate

2 个版本

0.1.1 2023年12月14日
0.1.0 2023年7月28日

#463 in 网页编程

Download history 2072/week @ 2024-03-14 2395/week @ 2024-03-21 1756/week @ 2024-03-28 2248/week @ 2024-04-04 1765/week @ 2024-04-11 1273/week @ 2024-04-18 1474/week @ 2024-04-25 1149/week @ 2024-05-02 1672/week @ 2024-05-09 1648/week @ 2024-05-16 1614/week @ 2024-05-23 1589/week @ 2024-05-30 1875/week @ 2024-06-06 3011/week @ 2024-06-13 2724/week @ 2024-06-20 1652/week @ 2024-06-27

每月 9,564 次下载
2 个crate中使用 (通过 passkey-client)

MIT/Apache

420KB
21K SLoC

public-suffix by 1Password

github version documentation

《public-suffix》crate 提供了一种紧凑且高效的方法来确定任何给定域的有效 TLD+1。

此 crate 由一个数据文件驱动,存储在 public-suffix-list.dat 中,并包含生成 Rust 结构以在代码中表示此信息的代码。

使用此 Crate

您可以直接使用此 crate,使用包含的 DEFAULT_PROVIDER 列表,如下所示

let domain = "sainsburys.co.uk";
let etld = DEFAULT_PROVIDER.effective_tld_plus_one(domain);

生成自定义公共后缀列表

可能用户希望根据特定应用的需求,为某些域计算不同的 eTLD+1。

为此,提供您自己的 public_suffix_list.dat 版本,并运行包含的生成脚本 (gen.sh),使用自定义 TLD 文件的內容。

这将重新生成这些数据在 Rust 中的表示,以便包含在您自己的 crate 中。由 gen.sh 调用的 main.go 程序支持各种参数来控制其输出。您可能希望使用的常用参数包括

  • --output-path - 存储生成的文件的目录。
  • --base-name - 生成的文件的基准名称。生成器将在指定的 output-path 目录中创建 ${base-name}.rs${base-name}_test.rs
  • --struct - 将生成以表示您的自定义 TLD 数据的 Rust 结构的名称。
  • --crate - 一个布尔值,控制结构是否以 public_suffix::StructName (如果为真) 或 crate::StructName (如果为假) 的形式创建。在创建您自己的结构时,始终将此设置为假。

使用您的自定义公共后缀列表

接下来,在你的 Cargo.toml 中,禁用此 crate 中的 default-provider 功能: default-features = false。这样做将移除内置的公共后缀列表结构的实现,然后你可以使用自己的

type PublicSuffixList = ListProvider<my_custom_tld_list::MyCustomTldListStruct>;

pub const MY_CUSTOM_TLD_LIST: PublicSuffixList = PublicSuffixList::new();

...然后你可以在 MY_CUSTOM_TLD_LIST 上调用相同的函数

let domain = "sainsburys.co.uk";
let etld = MY_CUSTOM_TLD_LIST.effective_tld_plus_one(domain);

贡献和反馈

public-suffix 是一个 开源项目

🐛 如果你发现了一个想要报告的问题,或者有其他反馈,请 提交一个新的问题

🧑‍💻 如果你想为代码做出贡献,请先通过 问题 进行提交或评论,以便我们跟踪工作。

致谢

1Password 团队用 ❤️ 和 ☕ 制作。

为你的开源项目获取免费 1Password 账户

你的团队需要一种安全的方式来管理开源项目的密码和其他凭证吗?请访问我们的 其他仓库,以免费获得 1Password Teams 账户

1Password for Open Source Projects

许可证

根据你的选择,许可为 Apache 许可证 2.0 版MIT 许可证
除非你明确表示,否则你提交给本 crate 的任何有意贡献,根据 Apache-2.0 许可证的定义,都应双许可如上,不附加任何额外条款或条件。

无运行时依赖

功能