Metadata-Version: 2.1
Name: aiodnsbl
Version: 0.1.0
Summary: Async DNSBL lists checker
Home-page: https://github.com/ninoseki/aiodnsbl
License: MIT
Author: Manabu Niseki
Author-email: manabu.niseki@gmail.com
Requires-Python: >=3.7,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: aiodns (>=3.0.0,<4.0.0)
Requires-Dist: idna (>=3.2,<4.0)
Requires-Dist: poetry-version (>=0.1.5,<0.2.0)
Project-URL: Repository, https://github.com/ninoseki/aiodnsbl
Description-Content-Type: text/markdown

# aiodnsbl

[DNSBL](https://en.wikipedia.org/wiki/DNSBL) lists checker based on [aiodns](https://github.com/saghul/aiodns). Checks if an IP or a domain is listed on anti-spam DNS blacklists.

## Notes

This is a fork of [pydnsbl](https://github.com/dmippolitov/pydnsbl).

Key differences:

- Fully type annotated
- No sync wrapper (async only)
- No category classification

## Installation

```bash
pip install aiodnsbl
```

## Usage

```python
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)>]
```

```python
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())
```
