DNSBL lists checker based on aiodns. Checks if an IP or a domain is listed on anti-spam DNS blacklists.
This is a fork of pydnsbl.
Key differences:
- Fully type annotated
- No sync wrapper (async only)
- No category classification
pip install aiodnsbl
import asyncio
from aiodnsbl import DNSBLChecker
loop = asyncio.get_event_loop()
checker = DNSBLChecker()
# Check IP
loop.run_until_complete(checker.check("8.8.8.8"))
# <DNSBLResult: 8.8.8.8 (0/10)>
loop.run_until_complete(checker.check("68.128.212.240"))
# <DNSBLResult: 68.128.212.240 [BLACKLISTED] (4/10)>
# Check domain
loop.run_until_complete(checker.check("example.com"))
# <DNSBLResult: example.com (0/4)>
# Bulk check
loop.run_until_complete(
checker.bulk_check(["example.com", "8.8.8.8", "68.128.212.240"])
)
# [<DNSBLResult: example.com (0/4)>, <DNSBLResult: 8.8.8.8 (0/10)>, <DNSBLResult: 68.128.212.240 [BLACKLISTED] (4/10)>]
import asyncio
from aiodnsbl import DNSBLChecker
async def main():
checker = DNSBLChecker()
res = await checker.check("68.128.212.240")
print(res)
# <DNSBLResult: 68.128.212.240 [BLACKLISTED] (4/10)>
print(res.blacklisted)
# True
print([provider.host for provider in res.providers])
# ['b.barracudacentral.org', 'bl.spamcop.net', 'dnsbl.sorbs.net', 'ips.backscatterer.org', ...]
print([provider.host for provider in res.detected_by])
# ['b.barracudacentral.org', 'dnsbl.sorbs.net', 'spam.dnsbl.sorbs.net', 'zen.spamhaus.org']
loop = asyncio.get_event_loop()
loop.run_until_complete(main())