Json 无法使用cloudflare和python请求通过https进行dns

Json 无法使用cloudflare和python请求通过https进行dns,json,dns,python-requests,dns-over-https,Json,Dns,Python Requests,Dns Over Https,我正在尝试编写一个快速脚本,可以使用CloudFlare的HTTPS公共dns服务器上新的1.1.1.1 dns进行dns查找 在这里查看他们的文档,我不确定我做错了什么,为什么我会得到415状态码(415不支持的内容类型) 这是我的剧本: #!/usr/bin/env python 导入请求 导入json 从pprint导入pprint url = 'https://cloudflare-dns.com/dns-query' client = requests.session() json

我正在尝试编写一个快速脚本,可以使用CloudFlare的HTTPS公共dns服务器上新的1.1.1.1 dns进行dns查找

在这里查看他们的文档,我不确定我做错了什么,为什么我会得到415状态码(415不支持的内容类型)

这是我的剧本: #!/usr/bin/env python 导入请求 导入json 从pprint导入pprint

url = 'https://cloudflare-dns.com/dns-query'
client = requests.session() 

json1 = {'name': 'example.com','type': 'A'}

ae = client.get(url, headers = {'Content-Type':'application/dns-json'}, json = json1)


print ae.raise_for_status()
print ae.status_code

print ae.json()

client.close()
以下是输出:

    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 415 Client Error: Unsupported Media Type for url: https://cloudflare-dns.com/dns-query
对于json响应(我相信这是意料之中的):

使用curl这个方法效果非常好


非常感谢

您根本不应该设置JSON请求。响应使用JSON

应用程序/dns json
值放入
ct
参数中:

JSON格式的查询使用GET请求发送。使用GET发出请求时,DNS查询被编码到URL中。“ct”的附加URL参数应指示MIME类型(应用程序/dns json)

GET请求没有正文,因此不要尝试发送JSON:

params = {
    'name': 'example.com',
    'type': 'A',
    'ct': 'application/dns-json',
}
ae = client.get(url, params=params)
演示:


您根本不应该设置JSON请求。响应使用JSON

应用程序/dns json
值放入
ct
参数中:

JSON格式的查询使用GET请求发送。使用GET发出请求时,DNS查询被编码到URL中。“ct”的附加URL参数应指示MIME类型(应用程序/dns json)

GET请求没有正文,因此不要尝试发送JSON:

params = {
    'name': 'example.com',
    'type': 'A',
    'ct': 'application/dns-json',
}
ae = client.get(url, params=params)
演示:


非常感谢,我尝试了你的第一个建议,但没有成功,最后一个很好。再次感谢您的时间和解释。非常感谢,我尝试了您的第一个建议,但没有成功,最后一个很好。再次感谢您的时间和解释。
>>> import requests
>>> url = 'https://cloudflare-dns.com/dns-query'
>>> client = requests.session()
>>> params = {
...     'name': 'example.com',
...     'type': 'A',
...     'ct': 'application/dns-json',
... }
>>> ae = client.get(url, params=params)
>>> ae.status_code
200
>>> from pprint import pprint
>>> pprint(ae.json())
{'AD': True,
 'Answer': [{'TTL': 2560,
             'data': '93.184.216.34',
             'name': 'example.com.',
             'type': 1}],
 'CD': False,
 'Question': [{'name': 'example.com.', 'type': 1}],
 'RA': True,
 'RD': True,
 'Status': 0,
 'TC': False}