async-doh
DNS over HTTPS based on aiohttp and async_dns.
Installation
$ pip install async-doh
Usage
Command-line
usage: python3 -m async_doh.client [-h] [-n NAMESERVERS [NAMESERVERS ...]] [-t TYPES [TYPES ...]] hostnames [hostnames ...]
Async DNS resolver with DoH
positional arguments:
hostnames the hostnames to query
optional arguments:
-h, --help show this help message and exit
-n NAMESERVERS [NAMESERVERS ...], --nameservers NAMESERVERS [NAMESERVERS ...]
name servers
-t TYPES [TYPES ...], --types TYPES [TYPES ...]
query types, default as `any`
Examples:
$ python3 -m async_doh.client -n https://223.5.5.5/dns-query -t ANY -- www.google.com
Client
import asyncio
import aiohttp
from async_doh.client import DoHClient
async def main():
async with DoHClient() as client:
result = await client.query('https://1.1.1.1/dns-query', 'www.google.com', 'A')
print('query:', result)
result = await client.query_json('https://1.1.1.1/dns-query', 'www.google.com', 'A')
print('query_json:', result)
asyncio.run(main())
Server
from aiohttp import web
from async_doh.server import application
web.run(application)
Now you have http://localhost:8080/dns-query as an endpoint.
Patching async_dns
By importing the patch, async_dns will use aiohttp to send queries through HTTPS (aka DNS over HTTPS):
import asyncio
from async_dns.core import types
from async_dns.resolver import ProxyResolver
from async_doh.client import patch
async def main():
revoke = await patch()
resolver = ProxyResolver(proxies=['https://dns.alidns.com/dns-query'])
res, _ = await resolver.query('www.google.com', types.A)
print(res)
await revoke()
asyncio.run(main())
References
Release files for async-doh 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| async-doh-0.3.0.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| async_doh-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.9 kB
Release files / async-doh-0.3.0.tar.gz
| Download URL | async-doh-0.3.0.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e2ff660409bf778f1a356c353b5798ad028a87f2ddb15795a1aef1f773c77d00
|
|
BLAKE2b-256 checksum How to use checksums |
0f805093a7b6bd523f2b599a1f04cfa27c237961e980ec00aaa159cbdff28f14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.7 CPython/3.9.6 Darwin/20.5.0
|
Release files / async_doh-0.3.0-py3-none-any.whl
| Download URL | async_doh-0.3.0-py3-none-any.whl |
|---|---|
| Size | 7.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e0570fc9a91a429af736a3822a000d390196db449fbbcd3ea077d50d9970794e
|
|
BLAKE2b-256 checksum How to use checksums |
baa094c57a37497c577df4d23ee555c9a2086bb70a74b969f2c0999c4114a06b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.7 CPython/3.9.6 Darwin/20.5.0
|