from os.path import split import dns.resolver import ipaddress def parse_spf_parts(part): if part.startswith('ip4:'): return [part[4:]] elif part.startswith('ip6:'): return [part[4:]] elif part.startswith('include'): return get_spf_record(part[8:]) elif part.startswith('a'): addresses = [] for address in dns.resolver.resolve_name(part[2:]).addresses(): addresses.append(address) return addresses else: return [] def get_spf_record(domain_name): spf_record = '' servers = [] txt_records = dns.resolver.resolve(domain_name, 'TXT') for record in txt_records: if record.to_text().find('v=spf1') > 0: spf_record = record.to_text() parts = spf_record.split() for part in parts: servers += (parse_spf_parts(part)) return servers spf_servers = get_spf_record('trivago.com') print(spf_servers)