#domain-name #domain #tld #psl #no-std #tldextract

no-std publicsuffix

从域名中提取根域名和后缀

36个稳定版本

2.2.3 2022年10月8日
2.1.1 2021年9月9日
2.1.0 2021年3月30日
1.5.6 2021年2月26日
0.0.2 2016年12月31日

#45Web编程

Download history 105539/week @ 2024-03-14 111098/week @ 2024-03-21 100655/week @ 2024-03-28 102363/week @ 2024-04-04 101785/week @ 2024-04-11 119053/week @ 2024-04-18 127705/week @ 2024-04-25 132545/week @ 2024-05-02 119497/week @ 2024-05-09 147163/week @ 2024-05-16 145029/week @ 2024-05-23 167626/week @ 2024-05-30 140386/week @ 2024-06-06 151003/week @ 2024-06-13 148255/week @ 2024-06-20 124823/week @ 2024-06-27

596,576 每月下载量
用于 771 个Crate (12 个直接)

MIT/Apache

88KB
400

PublicSuffix

Mozilla的Public Suffix List的本地Rust库

CI Latest Version Crates.io downloads Docs Minimum supported Rust version Maintenance License

此库使用Mozilla的Public Suffix List以可靠地确定域名后缀。此crate提供了一个可动态更新的列表。如果您需要一个更快但静态的列表,请改用psl crate。

注意:此crate的v1版本包含验证域名和电子邮件地址的逻辑。从v2版本开始,此功能已移动到addr crate。此crate也不再为您下载列表。

设置

将此crate添加到您的Cargo.toml

[dependencies]
publicsuffix = "2"

示例

use publicsuffix::{Psl, List};

// the official list can be found at
// https://publicsuffix.org/list/public_suffix_list.dat
let list: List = "<-- your public suffix list here -->".parse()?;

let suffix = list.suffix(b"www.example.com")?;
assert_eq!(suffix, "com");
assert_eq!(suffix.typ(), Some(Type::Icann));

let domain = list.domain(b"www.example.com")?;
assert_eq!(domain, "example.com");
assert_eq!(domain.suffix(), "com");

let domain = list.domain("www.食狮.中国".as_bytes())?;
assert_eq!(domain, "食狮.中国");
assert_eq!(domain.suffix(), "中国");

let domain = list.domain(b"www.xn--85x722f.xn--55qx5d.cn")?;
assert_eq!(domain, "xn--85x722f.xn--55qx5d.cn");
assert_eq!(domain.suffix(), "xn--55qx5d.cn");

let domain = list.domain(b"a.b.example.uk.com")?;
assert_eq!(domain, "example.uk.com");
assert_eq!(domain.suffix(), "uk.com");

let domain = list.domain(b"_tcp.example.com.")?;
assert_eq!(domain, "example.com.");
assert_eq!(domain.suffix(), "com.");

依赖关系

~12–530KB
~13K SLoC