Résolvez les noms de domaine via HTTPS à l'aide de l'API JSON DoH, disponible sur des endpoints avec et sans TLS.
Endpoints
https://223.5.5.5/resolve?name=domain&type=record type&uid=AccountID&ak=AccessKey ID&key=****&ts=timestamp
http://223.5.5.5/resolve?name=domain&type=record type&uid=AccountID&ak=AccessKey ID&key=****&ts=timestamp
https://223.6.6.6/resolve?name=domain&type=record type&uid=AccountID&ak=AccessKey ID&key=****&ts=timestamp
http://223.6.6.6/resolve?name=domain&type=record type&uid=AccountID&ak=AccessKey ID&key=****&ts=timestamp
Paramètres de requête
Méthode : GET. Paramètres :
|
Paramètre |
Type |
Description |
Exemple |
Utilisation et valeur par défaut |
|
name |
string |
Nom de domaine dans la requête |
name=www.taobao.com |
Obligatoire, aucune valeur par défaut |
|
type |
string |
type=A |
Facultatif, aucune valeur par défaut |
|
|
edns_client_subnet |
IP |
IP ECS |
edns_client_subnet=1.2.XX.XX/24 |
Uniquement pour les proxys DNS |
|
short |
boolean |
short=true ou short=1 |
Facultatif, désactivé par défaut |
|
|
uid |
string |
ID de compte depuis la console (et non l'ID de compte Alibaba Cloud) |
uid=9**9 |
Obligatoire, aucune valeur par défaut |
|
ak |
string |
ID AccessKey depuis la console |
ak=test |
Obligatoire, aucune valeur par défaut |
|
ts |
string |
Horodatage |
Entier non signé, secondes écoulées depuis le 1er janvier 1970 |
ts=1614927253 Obligatoire, aucune valeur par défaut |
|
key |
string |
Chaîne de hachage pour l'authentification |
Signature générée à l'aide de la clé secrète AccessKey Secret |
key=fb321ab77496a89c04de0a1e979bfee4b4678a0dcd57f4da1da83****490f64b Obligatoire, aucune valeur par défaut |
|
did |
string |
ID d'appareil |
did=afck0100 |
Facultatif |
À propos du paramètre edns_client_subnet
Le paramètre edns_client_subnet implémente DNS ECS (RFC7871) en transmettant les informations de sous-réseau de l'utilisateur au DNS faisant autorité pour une résolution précise et un reroutage du trafic. Des masques de sous-réseau plus longs offrent un adressage plus précis ; des masques plus courts améliorent la confidentialité. Une longueur de masque /24 est recommandée.
Utilisez ce paramètre lorsqu'un proxy DNS transfère des requêtes via l'API JSON DoH. Le proxy envoie les informations de sous-réseau de l'utilisateur à HTTPDNS, qui les transmet au serveur faisant autorité.
Par exemple, avec subnet=1.2.XX.XX/24, le serveur faisant autorité reçoit le préfixe 1.2.XX.XX/24 pour sélectionner le chemin DNS optimal.
À propos des types pris en charge pour le paramètre type
|
Type d'enregistrement |
ID |
Remarques |
|
A |
1 |
Adresse IPv4 |
|
NS |
2 |
Enregistrement NS |
|
CNAME |
5 |
Enregistrement CNAME de domaine |
|
SOA |
6 |
Enregistrement SOA de zone |
|
TXT |
16 |
Enregistrement TXT |
|
AAAA |
28 |
Adresse IPv6 |
|
PTR |
12 |
Enregistrement PTR, utilisé pour la recherche DNS inverse |
|
MX |
15 |
Enregistrement d'échange de messagerie |
|
SRV |
33 |
L'enregistrement SRV spécifie l'hôte et le port pour des services spécifiques |
|
CAA |
257 |
L'enregistrement CAA est une mesure de sécurité visant à empêcher l'émission incorrecte de certificats HTTPS |
Algorithme de génération du paramètre d'authentification key
key = sha256(AccountID+AccessKey Secret+ts+qname+AccessKey ID)
Note: The plus sign (+) represents string concatenation, not the actual "+" character.
L'ID de compte est la valeur chaîne de votre ID de compte (par exemple, « 9**9 »). ts correspond à l'horodatage actuel de la requête. qname est le nom de domaine demandé. Pour générer une paire AccessKey, suivez les instructions de la rubrique Créer une clé.
Exemple de génération de clé
Supposons :
Account ID=5***4
AccessKey Secret=12345**
qname=aliyun.com
ts=1614927253
AccessKey ID=5*4_2155917885567**
key=sha256(54123451614927253aliyun.com54_2155917885567**)
Clé générée :
key=*ab77496a89c04de0a1e979bfee4b4678a0dcd57f4da1da83***a490f64b
Exemple de requête
https://223.5.5.5/resolve?name=domain&type=record type&uid=AccountID&ak=AccessKey ID&key=****&ts=timestamp
Exemple de réponse
{
"Status":0,
"TC":false,
"RD":true,
"RA":true,
"AD":false,
"CD":false,
"Question":{ // Request section
"name":"www.taobao.com.",
"type":1
},
"Answer":[ // Response section
{
"name":"www.taobao.com.",
"TTL":45,
"type":5,
"data":"www.taobao.com.danuoyi.tbcache.com."
},
{
"name":"www.taobao.com.danuoyi.tbcache.com.",
"TTL":45,
"type":1,
"data":"47.246.XX.XX"
},
{
"name":"www.taobao.com.danuoyi.tbcache.com.",
"TTL":45,
"type":1,
"data":"47.246.XX.XX"
}
]
//"Authority" Authority section, if data exists, format is the same as Answer field
//"Additional" Additional section, if data exists, format is the same as Answer field
// Optional "edns_client_subnet":"1.2.XX.XX/24"
}
Description des valeurs de réponse
|
Nom du champ |
Description |
Exemple |
|
Status |
RCODE de l'en-tête DNS |
0 : noerror 1 : formerr 2 : servfail 3 : nxdomain |
|
TC |
Indicateur TC : indique si la troncature est possible |
Généralement false |
|
RD |
Indicateur RD : indique si la récursivité est souhaitée |
Généralement true |
|
RA |
Indicateur RA : indique si la récursivité est disponible |
Généralement true |
|
AD/CD |
Indicateurs d'en-tête DNS |
Généralement false |
|
Question |
Champ de requête DNS |
Aucun |
|
Answer |
Champ de réponse DNS |
Aucun |
|
name |
Nom de domaine, inclus dans Question et Answer |
www.taobao.com |
|
type |
Type de requête tel qu'indiqué dans À propos des types pris en charge pour le paramètre type |
Par exemple : A, AAAA, TXT, CNAME, NS, SOA |
|
TTL |
Durée maximale de mise en cache sur le serveur, en secondes |
3600 |
|
data |
Données de réponse (varient selon le type) |
Aucun |
Exemple de réponse en mode court
Exemple de requête d'enregistrement A pour www.taobao.com :
https://223.5.5.5/resolve?name=domain&type=A&uid=AccountID&short=1&ak=AccessKey ID&key=****&ts=timestamp
Réponse :
["221.229.XX.XX","61.155.XX.XX","221.229.XX.XX"]
Requête d'enregistrement CNAME :
https://223.5.5.5/resolve?name=domain&type=CNAME&uid=AccountID&short=1&ak=AccessKey ID&key=****&ts=timestamp
Réponse :
["www.taobao.com.danuoyi.tbcache.com."]
Réponse en cas d'échec
Les requêtes ayant échoué renvoient un code HTTP 4xx/5xx avec un code d'erreur JSON pour le débogage ou le signalement de problèmes.
Exemple :
{
"code":"UrlParameterError"
}
Liste des codes d'erreur
|
Code d'erreur |
Code d'état HTTP |
Description |
|
UrlParameterError |
400 |
Erreur de format des paramètres de requête |
|
NoPermission |
401 |
Échec de l'authentification |
|
UrlPathError |
404 |
Erreur d'URL |
|
NoResponse |
500 |
Délai d'attente de la requête dépassé, aucune réponse |
Le guide des Bonnes pratiques de l'API DoH JSON couvre la résolution de domaine avec HTTPDNS.
Le SDK gère automatiquement les signatures. Commencez par consulter le Guide de développement du SDK Android ou le Guide de développement du SDK iOS.