0

我正在尝试制作一个 python 脚本来测试服务器是否可以在DNS-over-HTTPS中回答。因此,我阅读了这篇文章并尝试在 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-编码':'分块','服务器':'cloudflare','连接':'keep-alive'} 400

如果我基于这里所写的内容,我的要求没有具体说明或太小

有谁知道我在哪里弄错了?

谢谢

4

1 回答 1

0

您用来传递参数的表单需要application/dns-jsonMIME Accept 类型。否则,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/

于 2018-12-18T17:55:54.003 回答