Topik ini menyediakan potongan kode utama dan detail konfigurasi untuk menggunakan DNS over HTTPS (DoH) dalam aplikasi Qt WebEngine.
1. Pendahuluan
Mulai versi 6.6, Qt WebEngine mendukung DNS over HTTPS (DoH). Fitur ini memungkinkan pengembang melakukan resolusi DNS melalui protokol HTTPS terenkripsi guna mencegah pembajakan DNS pada aplikasi web. HTTPDNS adalah layanan Alibaba Cloud yang dirancang untuk aplikasi seluler dan perangkat Internet of Things (IoT), menyediakan resolusi rekursif publik yang stabil, aman, dan akurat. Topik ini menjelaskan cara mengintegrasikan layanan DoH HTTPDNS ke dalam aplikasi Qt WebEngine.
2. Prasyarat
Sebelum mengintegrasikan DoH dengan Qt WebEngine, pastikan Anda telah mengonfigurasi layanan DoH.
3. Konfigurasi
Integrasi dengan layanan DoH HTTPDNS dikonfigurasi terutama melalui API QWebEngineGlobalSettings::DnsMode.
Konfigurasi mencakup dua bagian:
Safe mode (
secureMode): Menentukan prioritas penggunaan antara DoH dan DNS lokal serta mengontrol kebijakan resolusi DNS dan mekanisme backoff di berbagai lingkungan jaringan.Server templates (
serverTemplates): Menentukan daftar layanan DNS over HTTPS (DoH), mendefinisikan titik akhir server DoH yang tersedia, serta mendukung beberapa server untuk menyediakan Ketersediaan tinggi.
Kode berikut merupakan contoh:
// Konfigurasi DoH
QWebEngineGlobalSettings::DnsMode dnsMode;
dnsMode.secureMode = QWebEngineGlobalSettings::SecureDnsMode::SecureWithFallback;
dnsMode.serverTemplates = QStringList{
"https://xxxx.com/dns-query{?dns}"
};
QWebEngineGlobalSettings::setDnsMode(dnsMode);
// Setelah mengonfigurasi DoH, buat WebEngineView dan muat halaman web
QWebEngineView *webView = new QWebEngineView();
webView->load(QUrl("https://www.example.com"));
webView->show();4. Catatan konfigurasi
Format templat integrasi DoH: Templat harus menyertakan parameter
{?dns}.Contoh yang benar:
"https://xxxx.aliyunhttpdns.com/dns-query{?dns}"Contoh yang salah:
"https://dns.xxxx/dns-query"(Parameter{?dns}tidak ada.)Contoh yang salah:
"https://1.1.X.X/dns-query?dns="(Format parameter salah.)
Konfigurasi DoH bersifat global
Anda dapat mengaturnya melalui
QWebEngineGlobalSettings.Konfigurasi harus diselesaikan sebelum membuat instans
QWebEngineViewapa pun.Setelah dikonfigurasi, semua instans WebEngineView berikutnya secara otomatis menggunakan pengaturan DoH tersebut.
Konfigurasi Ketersediaan tinggi
Disarankan menggunakan pola
SecureWithFallbackuntuk mencegah dampak pada bisnis jika DoH tidak tersedia dalam skenario ekstrem.Konfigurasikan beberapa server DoH sebagai solusi fallback. Gunakan HTTPDNS sebagai layanan DoH utama dan layanan DoH cadangan lainnya, seperti layanan DoH publik gratis, untuk disaster recovery.
5. Ringkasan
Topik ini menjelaskan cara mengintegrasikan DNS over HTTPS (DoH) dalam aplikasi Qt WebEngine, termasuk konfigurasi dasar, pemilihan safe mode, dan strategi penerapan Ketersediaan tinggi. Setelah konfigurasi, verifikasi integrasi DoH dengan menangkap paket untuk melihat Permintaan HTTPS, memeriksa log DNS, atau melakukan pengujian gangguan jaringan. Untuk memastikan stabilitas di lingkungan produksi, gunakan mode SecureWithFallback dan konfigurasikan beberapa server DoH.