]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
example for DNS over HTTPS
authorkimbo <kimballleavitt@gmail.com>
Mon, 30 Dec 2019 22:57:39 +0000 (15:57 -0700)
committerkimbo <kimballleavitt@gmail.com>
Mon, 30 Dec 2019 22:57:39 +0000 (15:57 -0700)
examples/doh.py [new file with mode: 0644]

diff --git a/examples/doh.py b/examples/doh.py
new file mode 100644 (file)
index 0000000..01c562f
--- /dev/null
@@ -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()