summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorkimbo <kimballleavitt@gmail.com>2019-12-30 15:57:39 -0700
committerkimbo <kimballleavitt@gmail.com>2019-12-30 15:57:39 -0700
commit6eb86db61e3e59ad782cb0733bf933ddbb61fb68 (patch)
tree4168cb8f04273aee4ade83357061d8c9de49a44e /examples
parent6ffc22fe449c2cac6d7c50e4e7a4d4c8836bb09e (diff)
downloaddnspython-6eb86db61e3e59ad782cb0733bf933ddbb61fb68.tar.gz
example for DNS over HTTPS
Diffstat (limited to 'examples')
-rw-r--r--examples/doh.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/doh.py b/examples/doh.py
new file mode 100644
index 0000000..01c562f
--- /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()