API JSON DNS-over-HTTPS (DoH) menyediakan titik akhir URL untuk API TLS maupun non-TLS.
Titik akhir
https://223.5.5.5/resolve?name=domain&type=tipe rekaman&uid=ID Akun&ak=ID AccessKey&key=****&ts=timestamp
http://223.5.5.5/resolve?name=domain&type=tipe rekaman&uid=ID Akun&ak=ID AccessKey&key=****&ts=timestamp
https://223.6.6.6/resolve?name=domain&type=tipe rekaman&uid=ID Akun&ak=ID AccessKey&key=****&ts=timestamp
http://223.6.6.6/resolve?name=domain&type=tipe rekaman&uid=ID Akun&ak=ID AccessKey&key=****&ts=timestamp
Parameter permintaan
Metode permintaan: GET. Parameter permintaan adalah sebagai berikut:
Parameter | Tipe | Deskripsi | Contoh | Cara penggunaan dan nilai default |
name | string | Nama domain dalam permintaan | name=www.taobao.com | Wajib, tidak ada nilai default |
type | string | type=A | Opsional, tidak ada nilai default | |
edns_client_subnet | IP | ECS IP | edns_client_subnet=1.2.XX.XX/24 | Untuk penggunaan Proxy DNS, tidak berlaku untuk klien biasa |
short | boolean | short=true atau short=1 | Opsional, dinonaktifkan secara default | |
uid | string | uid adalah ID Akun di konsol, bukan ID akun Alibaba Cloud | uid=9**9 | Wajib, tidak ada nilai default |
ak | string | ak adalah ID AccessKey di konsol | ak=test | Wajib, tidak ada nilai default |
ts | string | Timestamp | Bilangan bulat tak bertanda, detik sejak 1 Januari 1970 | ts=1614927253 Wajib, tidak ada nilai default |
key | string | String hash untuk otentikasi | Tanda tangan yang dibuat menggunakan AccessKey Secret | key=fb321ab77496a89c04de0a1e979bfee4b4678a0dcd57f4da1da83****490f64b Wajib, tidak ada nilai default |
did | string | ID Perangkat | did=afck0100 | Opsional |
Tentang parameter edns_client_subnet
Parameter edns_client_subnet mendukung fungsi ECS DNS (RFC7871), yang meneruskan informasi subnet pengguna ke DNS otoritatif untuk resolusi DNS yang lebih akurat dan pengalihan lalu lintas. Masker subnet yang lebih panjang memberikan informasi alamat yang lebih presisi, sementara masker yang lebih pendek menawarkan privasi pengguna yang lebih baik. Panjang masker subnet "/24" direkomendasikan.
Parameter ini dirancang untuk skenario di mana proxy DNS menggunakan API JSON DoH. Dalam skenario tersebut, pengguna mengirim kueri DNS ke proxy DNS, yang kemudian menggunakan parameter ini untuk mengirimkan informasi subnet pengguna ke HTTPDNS. Informasi tersebut selanjutnya diteruskan ke server otoritatif.
Sebagai contoh, dengan subnet=1.2.XX.XX/24, server otoritatif akan menerima informasi awalan alamat 1.2.XX.XX/24 untuk membantu memilih jalur DNS untuk pengguna.
Tentang tipe yang didukung untuk parameter type
Tipe rekaman | ID | Catatan |
A | 1 | Alamat IPv4 |
NS | 2 | Rekaman NS |
CNAME | 5 | Rekaman CNAME domain |
SOA | 6 | Rekaman SOA Zona |
TXT | 16 | Rekaman TXT |
AAAA | 28 | Alamat IPv6 |
PTR | 12 | Rekaman PTR, digunakan untuk pencarian balik DNS |
MX | 15 | Rekaman pertukaran surat |
SRV | 33 | Rekaman SRV menentukan host dan port untuk layanan tertentu |
CAA | 257 | Rekaman CAA adalah langkah keamanan untuk mencegah penerbitan sertifikat HTTPS yang salah |
Algoritma untuk menghasilkan parameter autentikasi key
key = sha256(ID Akun+AccessKey Secret+ts+qname+ID AccessKey)
Catatan: Tanda tambah (+) merepresentasikan penggabungan string, bukan karakter "+" yang sebenarnya. Dalam rumus ini, Account ID adalah nilai string dari ID akun Anda. Sebagai contoh, jika ID akun Anda adalah 9**9, string-nya adalah "9**9". ts adalah timestamp dari permintaan saat ini. qname adalah nama domain yang diminta. Untuk informasi selengkapnya tentang cara menghasilkan ID AccessKey dan Rahasia AccessKey, lihat Buat kunci.
Contoh pembuatan key
Asumsikan:
ID Akun=5***4
AccessKey Secret=12345**
qname=aliyun.com
ts=1614927253
AccessKey ID=5***4_2155917885567****
key=sha256(5***412345**1614927253aliyun.com5***4_2155917885567****)
Kunci yang dihasilkan adalah:
key=*****ab77496a89c04de0a1e979bfee4b4678a0dcd57f4da1da83***a490f64b
Permintaan contoh
https://223.5.5.5/resolve?name=domain&type=tipe rekaman&uid=ID Akun&ak=ID AccessKey&key=****&ts=timestamp
Respon contoh
{
"Status":0,
"TC":false,
"RD":true,
"RA":true,
"AD":false,
"CD":false,
"Question":{ // Bagian permintaan
"name":"www.taobao.com.",
"type":1
},
"Answer":[ // Bagian respons
{
"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" Bagian otoritas, jika data ada, formatnya sama dengan bidang Answer
//"Additional" Bagian tambahan, jika data ada, formatnya sama dengan bidang Answer
// Opsional "edns_client_subnet":"1.2.XX.XX/24"
}Deskripsi nilai respons
Nama bidang | Deskripsi | Contoh |
Status | rcode di header pesan DNS | 0: noerror 1: formerr 2: servfail 3: nxdomain |
TC | TC di header pesan DNS, menunjukkan apakah pemotongan mungkin terjadi | Biasanya false |
RD | RD di header pesan DNS, menunjukkan apakah rekursi diinginkan | Biasanya true |
RA | RA di header pesan DNS, menunjukkan apakah rekursi tersedia | Biasanya true |
AD/CD | Flag yang sesuai di header pesan DNS | Biasanya false |
Question | Bidang permintaan DNS | Tidak ada |
Answer | Bidang respons DNS | Tidak ada |
name | Nama domain, termasuk dalam Question dan Answer | www.taobao.com |
type | Tipe permintaan, lihat "Tentang tipe yang didukung untuk parameter type" di atas | Contohnya: A, AAAA, TXT, CNAME, NS, SOA |
TTL | Waktu maksimum caching nilai respons di server, dalam detik | 3600 |
data | Hasil respons, terkait dengan tipe | Tidak ada |
Contoh respons mode singkat:
Menggunakan www.taobao.com sebagai contoh, ketika meminta rekaman A, URL permintaannya adalah:
https://223.5.5.5/resolve?name=domain&type=A&uid=AccountID&short=1&ak=AccessKey ID&key=****&ts=timestampResponsnya adalah sebagai berikut:
["221.229.XX.XX","61.155.XX.XX","221.229.XX.XX"]Ketika meminta rekaman CNAME, URL-nya adalah:
https://223.5.5.5/resolve?name=domain&type=CNAME&uid=AccountID&short=1&ak=AccessKey ID&key=****&ts=timestampResponsnya adalah sebagai berikut:
["www.taobao.com.danuoyi.tbcache.com."]Tanggapan gagal
Ketika permintaan gagal, kode status respons HTTP adalah 4xx/5xx, dan kode kesalahan spesifik dikembalikan untuk debugging atau pelaporan masalah. Hasilnya direpresentasikan dalam format JSON.
Contoh respons gagal:
{
"code":"UrlParameterError"
}Daftar kode kesalahan
Kode kesalahan | Kode status HTTP | Deskripsi |
UrlParameterError | 400 | Kesalahan format parameter permintaan |
NoPermission | 401 | Otentikasi gagal |
UrlPathError | 404 | Kesalahan URL |
NoResponse | 500 | Timeout permintaan, tidak ada respons |
Untuk informasi selengkapnya tentang cara menggunakan API JSON DoH untuk mengakses HTTPDNS guna resolusi nama domain, lihat Praktik Terbaik API JSON DoH.
Kami merekomendasikan menggunakan SDK untuk akses, karena mencakup kode tanda tangan dan tidak memerlukan implementasi manual. Untuk akses SDK, lihat Panduan Pengembangan SDK Android dan Panduan Pengembangan SDK iOS.