From: kimbo Date: Mon, 30 Dec 2019 22:57:39 +0000 (-0700) Subject: example for DNS over HTTPS X-Git-Tag: v2.0.0rc1~342^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6eb86db61e3e59ad782cb0733bf933ddbb61fb68;p=thirdparty%2Fdnspython.git example for DNS over HTTPS --- diff --git a/examples/doh.py b/examples/doh.py new file mode 100644 index 00000000..01c562f8 --- /dev/null +++ b/examples/doh.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +# +# This is an example of sending DNS queries over HTTPS (DoH) with dnspython. +# Requires use of the requests module's Session object. +# +# See https://2.python-requests.org//en/latest/user/advanced/#session-objects +# for more details about Session objects +import requests + +import dns.message +import dns.query +import dns.rdatatype + + +def main(): + where = '1.1.1.1' + qname = 'example.com.' + # one method is to use context manager, session will automatically close + with requests.sessions.Session() as session: + q = dns.message.make_query(qname, dns.rdatatype.A) + r = dns.query.https(q, where, session) + for answer in r.answer: + print(answer) + + # ... do more lookups + + where = 'https://dns.google/dns-query' + qname = 'example.net.' + # second method, close session manually + session = requests.sessions.Session() + q = dns.message.make_query(qname, dns.rdatatype.A) + r = dns.query.https(q, where, session) + for answer in r.answer: + print(answer) + + # ... do more lookups + + # close the session when you're done + session.close() + +if __name__ == '__main__': + main()