PySide6.QtNetwork.QDnsLookup¶
- class QDnsLookup¶
QDnsLookup类表示一个DNS查找。更多…概要¶
属性¶
authenticDataᅟ- 回复是否由解析器认证errorᅟ- 如果DNS查找失败,则发生的错误类型,或NoErrorerrorStringᅟ- 如果DNS查找失败,则为人类可读的错误描述nameᅟ- 要查找的名称nameserverᅟ- 用于DNS查找的域名服务器nameserverPortᅟ- 用于DNS查找的nameserver的端口号nameserverProtocolᅟ- 发送DNS查询时使用的协议typeᅟ- DNS查找的类型
方法¶
def
__init__()def
error()def
errorString()def
isFinished()def
name()def
nameserver()def
nameserverPort()def
pointerRecords()def
serviceRecords()def
setName()def
setNameserver()def
setType()def
textRecords()def
type()
插槽¶
信号¶
def
finished()def
nameChanged()def
typeChanged()
静态函数¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QDnsLookup使用操作系统提供的机制来执行DNS查找。要执行查找,您需要指定一个name和type,然后调用lookup()槽。完成后将发出finished()信号。例如,您可以确定XMPP聊天客户端应连接到哪个服务器以获取给定域:
def lookupServers(self): # Create a DNS lookup. dns = QDnsLookup(self) dns.finished.connect(self.handleServers) # Find the XMPP servers for gmail.com dns.setType(QDnsLookup.SRV) dns.setName("_xmpp-client._tcp.gmail.com") dns.lookup()
请求完成后,您可以使用以下方式处理结果:
def handleServers(self): # Check the lookup succeeded. if dns.error() != QDnsLookup.NoError: qWarning("DNS lookup failed") dns.deleteLater() return # Handle the results. records = dns.serviceRecords() for record in records: ... dns.deleteLater()
注意
如果您只是想查找与主机名关联的IP地址,或与IP地址关联的主机名,您应该使用
QHostInfo。基于TLS的DNS和真实数据¶
QDnsLookup在某些平台上支持DNS-over-TLS(DoT,由RFC 7858指定)。目前包括所有支持常规查询的Unix平台,如果Qt中存在QSslSocket支持。要查询运行时是否支持,请使用isProtocolSupported()。当使用DNS-over-TLS时,
QDnsLookup仅实现了RFC 7858第4.1节中描述的“机会隐私配置文件”认证方法。在此模式下,QDnsLookup(通过QSslSocket)仅验证服务器提供的证书是否对连接的服务器有效。客户端可以使用setSslConfiguration()来施加额外的限制,并在查询完成后使用sslConfiguration()获取信息。QDnsLookup将请求通过TLS查询的DNS服务器对其返回的数据进行认证。如果它们确认数据有效,authenticData属性将被设置为true。QDnsLookup本身不验证数据的完整性,因此应用程序应仅在已通过其他方式确认可信的服务器上信任此属性。没有TLS的真实数据¶
QDnsLookup请求任何使用setNameserver()设置的服务器获取真实数据,即使不需要TLS加密。这在查询与应用程序在同一主机上或受信任网络上的缓存名称服务器时非常有用。虽然与TLS情况类似,但应用程序有责任确定其选择使用的服务器是否可信,以及未加密的连接是否无法被篡改。QDnsLookup遵循系统配置,在默认的域名服务器上请求真实数据(即,如果未调用setNameserver())。目前仅在使用了 glibc 2.31 或更高版本的 Linux 系统上支持此功能。在其他任何系统上,QDnsLookup将忽略查询头中的 AD 位。- class Error¶
指示在处理DNS查找过程中发现的所有可能的错误条件。
常量
描述
QDnsLookup.NoError
没有错误条件。
QDnsLookup.ResolverError
初始化系统的DNS解析器时出错。
QDnsLookup.OperationCancelledError
查找已通过使用
abort()方法中止。QDnsLookup.InvalidRequestError
请求的DNS查找无效。
QDnsLookup.InvalidReplyError
服务器返回的回复无效。
QDnsLookup.ServerFailureError
服务器在处理请求时遇到内部故障(SERVFAIL)。
QDnsLookup.ServerRefusedError
服务器出于安全或策略原因拒绝处理请求(REFUSED)。
QDnsLookup.NotFoundError
请求的域名不存在(NXDOMAIN)。
QDnsLookup.TimeoutError
服务器未到达或未及时回复(自6.6版本起)。
- class Type¶
指示执行的DNS查找类型。
常量
描述
QDnsLookup.A
IPv4地址记录。
QDnsLookup.AAAA
IPv6地址记录。
QDnsLookup.ANY
任何记录。
QDnsLookup.CNAME
规范名称记录。
QDnsLookup.MX
邮件交换记录。
QDnsLookup.NS
名称服务器记录。
QDnsLookup.PTR
指针记录。
QDnsLookup.SRV
服务记录。
QDnsLookup.TLSA
TLS关联记录。
QDnsLookup.TXT
文本记录。
- class Protocol¶
指示正在查询的DNS服务器类型。
常量
描述
QDnsLookup.Standard
常规的、未加密的DNS,使用UDP并在必要时回退到TCP(默认端口:53)
QDnsLookup.DnsOverTls
通过TLS加密的DNS(DoT,如RFC 7858所规定),通过TCP(默认端口:853)
在版本6.8中添加。
注意
当使用
from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。- property authenticDataᅟ: bool¶
此属性保存解析器是否已验证回复。
QDnsLookup本身不执行身份验证。相反,它信任被查询的名称服务器来执行身份验证并报告结果。应用程序负责确定通过setNameserver()配置的任何服务器是否可信;如果没有设置服务器,QDnsLookup将遵循系统配置来决定是否信任响应。即使
error()指示解析器发生错误,也可以设置此属性。- Access functions:
- property errorᅟ: QDnsLookup.Error¶
此属性保存DNS查找失败时发生的错误类型,或
NoError..- Access functions:
- property errorStringᅟ: str¶
此属性保存DNS查找失败时的人类可读错误描述。
- Access functions:
- property nameᅟ: str¶
此属性保存要查找的名称。
如果要查找的名称为空,
QDnsLookup将尝试解析DNS的根域。该查询通常使用type设置为NS来执行。注意
名称将使用IDNA进行编码,这意味着它不适合查询与DNS-SD规范兼容的SRV记录。
- Access functions:
- property nameserverᅟ: QHostAddress¶
此属性保存用于DNS查找的域名服务器。
- Access functions:
- property nameserverPortᅟ: int¶
此属性保存用于DNS查找的名称服务器的端口号。
值为0表示
QDnsLookup应使用nameserverProtocol()的默认端口。注意
将端口号设置为默认值(53)以外的任何值可能会导致名称解析失败,这取决于操作系统限制和防火墙,如果要使用的
nameserverProtocol()是Standard。值得注意的是,QDnsLookup使用的Windows API无法处理备用端口号。- Access functions:
- property nameserverProtocolᅟ: QDnsLookup.Protocol¶
此属性保存发送DNS查询时使用的协议。
- Access functions:
- property typeᅟ: QDnsLookup.Type¶
此属性保存DNS查找的类型。
- Access functions:
构造一个
QDnsLookup对象,并将parent设置为父对象。为给定的
type和name构造一个QDnsLookup对象,并将parent设置为父对象。- __init__(type, name, nameserver[, parent=None])
- Parameters:
type –
类型name – str
nameserver –
QHostAddressparent –
QObject
构造一个
QDnsLookup对象,以使用运行在默认DNS端口上的DNS服务器nameserver,对记录类型type的name发出查询,并将parent设置为父对象。- __init__(type, name, nameserver, port[, parent=None])
- Parameters:
type –
类型name – str
nameserver –
QHostAddressport – int
parent –
QObject
构造一个
QDnsLookup对象,以使用运行在端口port上的DNS服务器nameserver,对记录类型type的name发出查询,并将parent设置为父对象。注意
将端口号设置为默认值(53)以外的任何值可能会导致名称解析失败,这取决于操作系统限制和防火墙,如果要使用的
nameserverProtocol()是Standard。值得注意的是,QDnsLookup使用的Windows API无法处理备用端口号。- __init__(type, name, protocol, nameserver[, port=0[, parent=None]])
- Parameters:
type –
类型name – str
protocol –
协议nameserver –
QHostAddressport – int
parent –
QObject
构造一个
QDnsLookup对象,以使用运行在端口port上的DNS服务器nameserver,对记录类型type的name发出查询,并将parent设置为父对象。如果支持,查询将使用
protocol发送。使用isProtocolSupported()来检查是否支持。注意
将端口号设置为默认值(53)以外的任何值可能会导致名称解析失败,这取决于操作系统限制和防火墙,如果要使用的
nameserverProtocol()是Standard。值得注意的是,QDnsLookup使用的Windows API无法处理备用端口号。- abort()¶
中止DNS查找操作。
如果查找已经完成,则不执行任何操作。
- canonicalNameRecords()¶
- Return type:
返回与此查找关联的规范名称记录列表。
返回协议
protocol的标准(默认)端口号。属性
errorᅟ的获取器。- errorString()¶
- Return type:
字符串
属性
errorStringᅟ的获取器。- finished()¶
当回复完成处理时,会发出此信号。
属性
errorᅟ的通知信号。- hostAddressRecords()¶
- Return type:
返回与此查找关联的主机地址记录列表。
- isAuthenticData()¶
- Return type:
布尔
属性
authenticDataᅟ的获取器。- isFinished()¶
- Return type:
布尔
返回回复是否已完成或被中止。
如果使用
protocol的DNS查询在QDnsLookup中受支持,则返回true。另请参阅
- lookup()¶
执行DNS查找。
当完成时,会发出
finished()信号。- mailExchangeRecords()¶
- Return type:
返回与此查找关联的邮件交换记录列表。
记录根据RFC 5321进行排序,因此如果您使用它们连接到服务器,应按列出的顺序尝试它们。
获取属性
nameᅟ的Getter。- nameChanged(name)¶
- Parameters:
name – str
当查找
name发生变化时,会发出此信号。name是新的查找名称。属性
nameᅟ的通知信号。- nameServerRecords()¶
- Return type:
返回与此查找相关联的名称服务器记录列表。
- nameserver()¶
- Return type:
另请参阅
属性
nameserverᅟ的获取器。- nameserverChanged(nameserver)¶
- Parameters:
名称服务器 –
QHostAddress
属性
nameserverᅟ的通知信号。- nameserverPort()¶
- Return type:
整数
另请参阅
获取属性
nameserverPortᅟ的值。- nameserverPortChanged(port)¶
- Parameters:
端口 – int
属性
nameserverPortᅟ的通知信号。获取属性
nameserverProtocolᅟ的Getter。属性
nameserverProtocolᅟ的通知信号。- pointerRecords()¶
- Return type:
返回与此查找关联的指针记录列表。
- serviceRecords()¶
- Return type:
返回与此查找相关的服务记录列表。
记录根据RFC 2782进行排序,因此如果您使用它们连接到服务器,应按列出的顺序尝试它们。
属性
nameᅟ的设置器。- setNameserver(nameserver)¶
- Parameters:
名称服务器 –
QHostAddress
属性
nameserverᅟ的设置器。- setNameserver(nameserver, port)
- Parameters:
nameserver –
QHostAddressport – int
将名称服务器设置为
nameserver,并将端口设置为port。注意
将端口号设置为默认值(53)以外的任何值可能会导致名称解析失败,这取决于操作系统限制和防火墙,如果要使用的
nameserverProtocol()是Standard。值得注意的是,QDnsLookup使用的Windows API无法处理备用端口号。另请参阅
- setNameserver(protocol, nameserver[, port=0])
- Parameters:
protocol –
协议nameserver –
QHostAddressport – int
- setNameserverPort(port)¶
- Parameters:
端口 – int
另请参阅
属性
nameserverPortᅟ的设置器。属性
nameserverProtocolᅟ的设置器。- setSslConfiguration(sslConfiguration)¶
- Parameters:
sslConfiguration –
QSslConfiguration
设置用于出站DNS-over-TLS连接的
sslConfiguration。属性
typeᅟ的设置器。- sslConfiguration()¶
- Return type:
返回当前的SSL配置。
- textRecords()¶
- Return type:
QDnsTextRecord 的列表
返回与此查找关联的文本记录列表。
- tlsAssociationRecords()¶
- Return type:
返回与此查找关联的TLS关联记录列表。
根据与基于DNS的命名实体认证(DANE)相关的标准,如果DNS回复的真实性本身无法确认,则应忽略此字段,并且不得用于验证给定服务器的真实性。有关更多信息,请参见
isAuthenticData()。属性
typeᅟ的获取器。当查找
type发生变化时,会发出此信号。type是新的查找类型。属性
typeᅟ的通知信号。