47 个版本

0.15.6 2022 年 8 月 31 日
0.15.4 2022 年 7 月 6 日
0.15.3 2022 年 1 月 21 日
0.15.2 2021 年 11 月 29 日
0.2.0 2018 年 7 月 30 日

#194网络编程

Download history 51681/week @ 2024-03-14 54792/week @ 2024-03-21 61284/week @ 2024-03-28 64743/week @ 2024-04-04 70180/week @ 2024-04-11 70893/week @ 2024-04-18 66957/week @ 2024-04-25 73000/week @ 2024-05-02 71515/week @ 2024-05-09 73641/week @ 2024-05-16 82935/week @ 2024-05-23 93224/week @ 2024-05-30 93586/week @ 2024-06-06 89331/week @ 2024-06-13 77177/week @ 2024-06-20 85485/week @ 2024-06-27

每月 368,805 次下载
129 个 Crates (30 个直接) 中使用

MIT/Apache 许可证

93KB
815 代码行

健壮且快速解析域名

CI Latest Version Docs

该库使用 Mozilla 的 Public Suffix ListRust 中可靠地解析域名。它将可靠地检查域名是否有有效语法。它还检查每个标签的长度限制、标签总数以及域名的完整长度。

示例

use addr::{parse_domain_name, parse_dns_name};

// You can find out the root domain
// or extension of any given domain name
let domain = parse_domain_name("www.example.com")?;
assert_eq!(domain.root(), Some("example.com"));
assert_eq!(domain.suffix(), "com");
assert_eq!(domain.prefix(), Some("www"));

let domain = parse_domain_name("www.食狮.中国")?;
assert_eq!(domain.root(), Some("食狮.中国"));
assert_eq!(domain.suffix(), "中国");

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

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

let name = parse_dns_name("_tcp.example.com.")?;
assert_eq!(name.suffix(), Some("com."));

// In any case if the domain's suffix is in the list
// then this is definately a registrable domain name
assert!(domain.has_known_suffix());

待办事项

严格国际化域名 (IDN) 验证 (使用 idna 功能标志)

用例

对于那些处理域名的用户,publicsuffix.org/learn/ 列出了许多用例。为了简洁,这里不再一一列举。我在域名注册商工作,因此我们充分利用了这个库。以下是该库的一些用法:

  • 验证域名。这可能是显而易见的。如果你有一个 domain.has_known_suffix(),你可以绝对确信这是一个有效的域名。正则表达式可能不够健壮。
  • 黑名单或白名单域名。如果你不知道实际的注册域名,那么盲目地进行这种操作可能会导致过于严格或过于宽松。无论是哪种情况,结果都不好...
  • 提取域名的可注册部分,以便你可以检查域名是否已注册。
  • 使用域名的可注册部分在 DBMS 中存储域名细节,将其作为主键。

依赖

~2.5MB
~101K SLoC