Skip to main content

a simple DNS-over-HTTPS client

Project description

doh-cli

a simple DNS over HTTPS client

This is a simple DoH python client (RFC 8484, GET), json output by default! In less than 100 lines of code (more or less).

Install

pip3 install doh-cli

Requirements

It's based & tested on Python 3.

If you want to contribute, you can clone the repository and install all dependencies locally:

pip3 install .

Usage

doh-cli libredns.gr A

Help

doh-cli --help

Supported Resource Records

  • A
  • AAAA
  • CNAME
  • MX
  • NS
  • SOA
  • SPF
  • SRV
  • TXT
  • CAA

Supported DoH Servers

DoH Options

  • libredns (default)
  • libredns-ads (LibreDNS No-Trackers/Ads)
  • google
  • cloudflare
  • quad9
  • cleanbrowsing
  • cira (CIRA's Canadian Shield)
  • cira-protect (Protected adds malware and phishing blocking)
  • cira-family (Family blocks malware and phishing plus pornographic content)

Some Examples

IPv4

doh-cli libredns.gr A
[{"Query": "libredns.gr.", "TTL": "366", "RR": "A", "Answer": "116.202.176.26"}]

you can use jq to format, parse output:

doh-cli libredns.gr A | jq .
[
  {
    "Query": "libredns.gr.",
    "TTL": "54",
    "RR": "A",
    "Answer": "116.202.176.26"
  }
]

IPv6

doh-cli libredns.gr AAAA | jq .
[
  {
    "Query": "libredns.gr.",
    "TTL": "207",
    "RR": "AAAA",
    "Answer": "2a01:4f8:c2c:52bf::1"
  }
]

CNAME

doh-cli www.libredns.gr CNAME | jq .
[
  {
    "Query": "www.libredns.gr.",
    "TTL": "600",
    "RR": "CNAME",
    "Answer": "libredns.gr."
  }
]

MX

doh-cli libreops.cc MX | jq .
[
  {
    "Query": "libreops.cc.",
    "TTL": "10794",
    "RR": "MX",
    "Answer": [
      "10",
      "spool.mail.gandi.net.",
      "libreops.cc.",
      "10794",
      "IN",
      "MX",
      "50",
      "fb.mail.gandi.net."
    ]
  }
]

CAA

doh-cli libredns.gr CAA
[{"Query": "libredns.gr.", "TTL": "590", "RR": "CAA", "Answer": ["0", "issue", "\"letsencrypt.org\""]}]

Plain Output

doh-cli libredns.gr A --output plain
116.202.176.26

verbose

doh-cli libredns.gr A --output plain --verbose
https://doh.libredns.gr/dns-query?dns=lSIBAAABAAAAAAAACGxpYnJlZG5zAmdyAAABAAE
116.202.176.26

debug

doh-cli test.libredns.gr A --output plain --debug
id 24169
opcode QUERY
rcode NOERROR
flags QR RD RA
;QUESTION
test.libredns.gr. IN A
;ANSWER
test.libredns.gr. 3600 IN A 116.202.176.26
;AUTHORITY
libredns.gr. 1822 IN SOA ns1.gandi.net. hostmaster.gandi.net. 1582812814 10800 3600 604800 10800
;ADDITIONAL

116.202.176.26

Query time

doh-cli test.libredns.gr A --output plain --time
Query time: 531.764

116.202.176.26
doh-cli test.libredns.gr --time
Query time: 540.990

[{"Query": "test.libredns.gr.", "TTL": "3600", "RR": "A", "Answer": ["116.202.176.26"]}]

Disclaimer: This value is relative to python request against DoH service, not the actual dns response.

Choose another DNS server

doh-cli libredns.gr A --output plain --dns cloudflare
116.202.176.26

or you can use LibreDNS Block Trackers endpoint:

doh-cli --output plain --dns libredns-ads analytics.google.com A
0.0.0.0

or provide your own DoH url:

doh-cli --output plain --dns https://doh.libredns.gr/dns-query www.example.com A
93.184.216.34

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

doh-cli-0.2.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

doh_cli-0.2-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file doh-cli-0.2.tar.gz.

File metadata

  • Download URL: doh-cli-0.2.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for doh-cli-0.2.tar.gz
Algorithm Hash digest
SHA256 9e2ca1f2b1e74293ccc78c011b2b65134d2802b911ad3b9bac62e4c970a2a36d
MD5 c19eb6750c7bc5a9107bc3d7bc8cbfdc
BLAKE2b-256 70d67067bf9ac9de013e953fc2a89f10a89d4e5723dd5a5d215cd8f9a7c76fca

See more details on using hashes here.

File details

Details for the file doh_cli-0.2-py3-none-any.whl.

File metadata

  • Download URL: doh_cli-0.2-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for doh_cli-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8769e3128fc291698d0f5d5aa163d878d147a32b513e8de55a909175b71e6fea
MD5 40bddb9d526423042e2ad44073501ab2
BLAKE2b-256 a0499470cf7a993877fa77fcbb050b4388398b25578ef02d9e4879b84f816bb8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page