SwiftWhois

SwiftWhois 是一个 Swift 包,它提供了一个简单直接的机制,通过 Apple 的 Network 框架和 NWConnection 来查询 Whois 信息。 该软件包旨在抽象网络通信和解析的复杂性,为开发人员提供一种简单的方法来实现 Whois 查询功能。

特性

要求

iOS 13.0+ / macOS 10.15+

安装

SPM

.package(url: "https://github.com/isaced/SwiftWhois.git", from: "0.0.1")

用法

基础

import SwiftWhois

let result = SwiftWhois.lookup(domain: "google.com")
print(result.domainName) // google.com
print(result.registrar) // MarkMonitor, Inc.
print(result.nameServers) // ["ns1.google.com", "ns2.google.com", "ns3.google.com", "ns4.google.com"]
print(result.creationDate) // 1997-09-15T00:00:00Z
print(result.expirationDate) // 2028-09-14T00:00:00Z
print(result.updatedDate) // 2021-08-17T17:32:39Z
print(result.domainStatus) // ["clientDeleteProhibited", "clientTransferProhibited", ...]
print(result.raw) // Raw WHOIS data

自定义 WHOIS 服务器

通常,您不需要指定 WHOIS 服务器,SwiftWhois 会自动为您选择 WHOIS 服务器。 但是,如果您想指定 WHOIS 服务器,您可以这样做

SwiftWhois.lookup(domain: "google.com", server: "whois.verisign-grs.com")

原理

SwiftWhois 利用 NWConnection 执行 Whois 协议交互的网络操作。它简化了获取和解释 Whois 数据的过程,封装了管理网络连接和数据处理所需的逻辑。

工作原理

  1. 服务器发现: 通过查询 whois.iana.org (默认情况下),为给定的域名或 IP 地址确定合适的 Whois 服务器,除非指定了备用 Whois 服务器。
  2. 连接: 启动与已确定的 Whois 服务器的 NWConnection,通常在端口 43 上。查询组装: 基于服务器的要求,为给定的域名或 IP 地址创建格式正确的 Whois 查询。
  3. 调度: 将组装好的查询异步发送到 Whois 服务器并等待响应。
  4. 接收和解析: 接收服务器的响应,这是一个文本 Whois 记录,并对其进行解析,以将有意义的数据提取到结构化的表示中。
  5. 结束: 通过传递解析后的 Whois 信息或错误(如果遇到)来完成操作,然后终止网络连接。

待办事项

贡献 & 支持

许可证

MIT