未指定 DNS 查询或太小

DNS query not specified or too small

我正在尝试制作一个 python 脚本来测试服务器是否可以在 DNS-over-HTTPS 中应答。 因此,我阅读了 this article 并尝试提出相同的请求,但在 python 中:

import requests
r=requests.get("https://cloudflare-dns.com/dns-query?name=example.com&type=A", headers={"accept":"application/dns-message"})
print(r.url)
print(r.headers)
print(r.status_code)

这是输出

https://cloudflare-dns.com/dns-query?name=example.com&type=A

{'Access-Control-Allow-Origin': '*', 'Vary': 'Accept-Encoding', 'CF-RAY': '48b33f92aec83e4a-ZRH', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Date': 'Tue, 18 Dec 2018 17:11:23 GMT', 'Transfer-Encoding': 'chunked', 'Server': 'cloudflare', 'Connection': 'keep-alive'} 400

如果我根据写的内容 here,我的要求未 指定或太小

有人看出我错在哪里了吗?

谢谢

您用来传递参数的表单需要 application/dns-json 作为 MIME 接受类型。否则,对于 application/dns-message,您只有一个 dns 键,其值为编码的完整 DNS 消息。

比较:

 curl -H 'accept: application/dns-json' 'https://cloudflare-dns.com/dns-query?name=example.com&type=AAAA'

(来自 https://developers.cloudflare.com/1.1.1.1/dns-over-https/json-format/

curl -H 'accept: application/dns-message' -v 'https://cloudflare-dns.com/dns-query?dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | hexdump

(来自 https://developers.cloudflare.com/1.1.1.1/dns-over-https/wireformat/