Returns: The DNS resolver to use. Raises: MissingNameServers, if name servers are unknown and `dns_use_hosts_file` is disabled.
(self)
| 58 | |
| 59 | @cache |
| 60 | def resolver(self) -> Resolver: |
| 61 | """ |
| 62 | Returns: |
| 63 | The DNS resolver to use. |
| 64 | Raises: |
| 65 | MissingNameServers, if name servers are unknown and `dns_use_hosts_file` is disabled. |
| 66 | """ |
| 67 | if ns := self.name_servers(): |
| 68 | # We always want to use our own resolver if name server info is available. |
| 69 | return mitmproxy_rs.dns.DnsResolver( |
| 70 | name_servers=ns, |
| 71 | use_hosts_file=ctx.options.dns_use_hosts_file, |
| 72 | ) |
| 73 | elif ctx.options.dns_use_hosts_file: |
| 74 | # Fallback to getaddrinfo as hickory's resolver isn't as reliable |
| 75 | # as we would like it to be (https://github.com/mitmproxy/mitmproxy/issues/7064). |
| 76 | return GetaddrinfoFallbackResolver() |
| 77 | else: |
| 78 | raise MissingNameServers() |
| 79 | |
| 80 | async def dns_request(self, flow: dns.DNSFlow) -> None: |
| 81 | if self._should_resolve(flow): |
no test coverage detected