| | |
- build_query(
name: str,
qtype: int = <RecordType.A: 1>,
qclass: int = <RecordClass.IN: 1>,
transaction_id: Optional[int] = None,
rd: int = 1
) -> bytes
- Build a standard DNS query packet (wire format).
- async query(
name: str,
qtype: int = <RecordType.A: 1>,
server: str = '8.8.8.8',
port: int = 53,
timeout: float = 5.0,
qclass: int = <RecordClass.IN: 1>
) -> DNSMessage
- RFC-compliant query:
- Uses UDP first (<=512 bytes).
- If TC (truncated) flag is set, retries over TCP.
- Falls back to TCP if the query itself exceeds 512 bytes.
Returns the decoded DNSMessage.
- async query_tcp(
name: str,
qtype: int = <RecordType.A: 1>,
server: str = '8.8.8.8',
port: int = 53,
timeout: float = 5.0,
transaction_id: Optional[int] = None
) -> DNSMessage
- Force TCP regardless of packet size.
- async query_udp(
name: str,
qtype: int = <RecordType.A: 1>,
server: str = '8.8.8.8',
port: int = 53,
timeout: float = 3.0,
transaction_id: Optional[int] = None
) -> DNSMessage
- Force UDP regardless of packet size.
- async resolve(name: str, server: str = '8.8.8.8', port: int = 53) -> List[str]
- Smart resolve: tries A first, then AAAA.
Returns all IPs (v4 first, then v6).
- async resolve_a(name: str, server: str = '8.8.8.8', port: int = 53) -> List[str]
- Resolve A records -> list of IPv4 strings.
- async resolve_aaaa(name: str, server: str = '8.8.8.8', port: int = 53) -> List[str]
- Resolve AAAA records -> list of IPv6 strings.
- async resolve_any(name: str, server: str = '8.8.8.8', port: int = 53) -> DNSMessage
- Send ANY query and return the full DNSMessage.
- async resolve_caa(name: str, server: str = '8.8.8.8', port: int = 53) -> List[CAARecord]
- Resolve CAA records -> list of CAARecord objects.
- async resolve_cname(name: str, server: str = '8.8.8.8', port: int = 53) -> List[str]
- Resolve CNAME records -> list of canonical name strings.
- async resolve_mx(name: str, server: str = '8.8.8.8', port: int = 53) -> List[Tuple[int, str]]
- Resolve MX records -> list of (preference, exchange) tuples, sorted by preference.
- async resolve_ns(name: str, server: str = '8.8.8.8', port: int = 53) -> List[str]
- Resolve NS records -> list of nameserver strings.
- async resolve_ptr(ip: str, server: str = '8.8.8.8', port: int = 53) -> List[str]
- Reverse DNS lookup (PTR).
Automatically converts IPv4 (e.g. "8.8.8.8") to "8.8.8.8.in-addr.arpa".
- async resolve_soa(name: str, server: str = '8.8.8.8', port: int = 53) -> Optional[SOARecord]
- Resolve SOA record -> SOARecord or None.
- async resolve_srv(name: str, server: str = '8.8.8.8', port: int = 53) -> List[SRVRecord]
- Resolve SRV records -> list of SRVRecord objects.
- async resolve_txt(name: str, server: str = '8.8.8.8', port: int = 53) -> List[str]
- Resolve TXT records -> list of decoded text strings (segments joined).
- async send_tcp_raw(
packet: bytes,
server: str = '8.8.8.8',
port: int = 53,
timeout: float = 5.0
) -> bytes
- Send raw DNS wire-format bytes over TCP (2-byte length prefix) and return
the raw response. Forces TCP regardless of message size.
- async send_udp_raw(
packet: bytes,
server: str = '8.8.8.8',
port: int = 53,
timeout: float = 3.0
) -> bytes
- Send raw DNS wire-format bytes over UDP and return the raw response.
Forces UDP regardless of message size.
|