في السابق، كانت التطبيقات المستندة إلى الويب تتطلّب إضافات المتصفح لاستخدام الميزات المتقدّمة ميزات نظام أسماء النطاقات مثل DANE واكتشاف خدمة نظام أسماء النطاقات-SD أو حتى لحل أي شيء آخر بخلاف عناوين IP، مثل سجلات MX. لاستخدام الميزات التي تعتمد على ملحقات أمان نظام أسماء النطاقات (DNSSEC)، مثل سجلّات SSHFP، يمكن استخدام أيٍّ من هذه الإضافات. التحقق من صحة ملحقات أمان نظام أسماء النطاقات (DNSSEC) بنفسها، لأنّ المتصفّح أو نظام التشغيل قد لا يتحقّقان من ذلك.
منذ عام 2016، قدّم نظام أسماء النطاقات العام من Google واجهة برمجة تطبيقات متوافقة مع الويب في DoH تتضمّن ملحقات أمان نظام أسماء النطاقات (DNSSEC). عمليات تحقق لا تتطلب تهيئة المتصفح أو نظام التشغيل أو الإضافات. تسمح معلمات طلب بحث GET البسيطة واستجابات JSON للعملاء بتحليل تستخدم واجهات برمجة تطبيقات الويب الشائعة وتجنب التفاصيل المعقدة لتنسيق رسالة نظام أسماء النطاقات، مثل ضغط المؤشر لأسماء النطاقات.
يمكنك الاطّلاع على صفحة مستندات وزارة الصحة العامة للحصول على معلومات عن وزارة الصحة. مثل عناوين HTTP ومعالجة إعادة التوجيه وأفضل ممارسات الخصوصية رموز حالة HTTP.
تتضمن صفحة عمليات النقل الآمن
أمثلة على curl
في سطر الأوامر في DoH، والمعلومات المشتركة في DoH ونظام أسماء النطاقات عبر
TLS (DoT)، مثل دعم TLS واقتطاع نظام أسماء النطاقات
مواصفات واجهة برمجة التطبيقات JSON
جميع طلبات البيانات من واجهة برمجة التطبيقات هي طلبات HTTP GET. في حالة وجود المعلمات المكررة، يتم استخدام القيمة الأولى فقط.
المَعلمات المتوافقة
- الاسم
سلسلة، مطلوبة
المعلمة المطلوبة الوحيدة. يتم قبول أحرف إلغاء الشرطة المائلة للخلف في RFC 4343.
- يجب أن يكون الطول (بعد استبدال أحرف إلغاء الشرطة المائلة للخلف) بين 1 و 253 (مع تجاهل نقطة الانتهاء الاختيارية إن كانت موجودة).
- يجب أن يتراوح طول جميع التصنيفات (أجزاء من الاسم بين النقاط) 1 إلى 63 بايت.
- يتم الحصول على الأسماء غير الصالحة مثل
.example.com
أوexample..com
أو سلسلة فارغة. 400 طلب سيئ. - يجب أن تكون الأحرف غير ASCII punycoded (
xn--qxam
، وليسελ
).
- كتابة
سلسلة، القيمة التلقائية:
1
يمكن تمثيل نوع RR كرقم في [1، 65535] أو سلسلة أساسية. (غير حساسة لحالة الأحرف، مثل
A
أوaaaa
). يمكنك استخدام255
لـ 'ANY' طلبات البحث، ولكن اعلم أن هذا ليس بديل لإرسال الاستعلامات لكل من سجلات A وAAAA أو MX. لا تحتاج خوادم الأسماء الموثوقة إلى عرض جميع السجلات لطلبات البحث هذه. والبعض الآخر لا يستجيب والبعض الآخر (مثل cloudflare.com) لا يعرض سوى HINFO.- cd
منطقي، القيمة التلقائية:
false
علامة القرص المضغوط (تم إيقاف التحقق). استخدام الإضافة
cd=1
أوcd=true
لإيقاف التحقّق من صحة ملحقات أمان نظام أسماء النطاقات (DNSSEC) استخدام مَعلمةcd=0
أوcd=false
أو بدون مَعلمةcd
لتفعيل التحقّق من صحة ملحقات أمان نظام أسماء النطاقات (DNSSEC)- عدد
سلسلة، تلقائي: فارغ
خيار نوع المحتوى المطلوب. استخدم
ct=application/dns-message
لتلقي رسالة نظام أسماء نطاقات ثنائية في نص HTTP للاستجابة بدلاً من نص JSON. يمكنك استخدامct=application/x-javascript
لطلب نص JSON صراحةً. ويتم تجاهل قيم أنواع المحتوى الأخرى، ويتم عرض محتوى JSON التلقائي.- do
منطقي، القيمة التلقائية:
false
علامة "ملحق أمان نظام أسماء النطاقات" (DNSSEC) استخدام
do=1
أوdo=true
لتضمين سجلّات ملحقات أمان نظام أسماء النطاقات (DNSSEC) (RRSIG وNSEC وNSEC3) استخدام مَعلمةdo=0
أوdo=false
أو لاdo
لحذف سجلّات ملحقات أمان نظام أسماء النطاقات (DNSSEC)يجب أن تتعامل التطبيقات دائمًا مع أي من ملحقات أمان نظام أسماء النطاقات (DNSSEC) (وتتجاهلها، إذا لزم الأمر). السجلات في استجابات JSON حيث قد تتضمنها عمليات تنفيذ أخرى دائمًا، وقد نغيّر السلوك التلقائي لاستجابات JSON في المستقبل. (تراعي دائمًا استجابات رسالة نظام أسماء النطاقات الثنائية قيمة علامة DO.)
- edns_client_subnet
سلسلة، تلقائي: فارغ
الخيار edns0-client-subnet. التنسيق هو عنوان IP مع قناع الشبكة الفرعية. أمثلة:
1.2.3.4/24
،2001:700:300::/48
.إذا كنت تستخدم معالجة نظام أسماء النطاقات عبر بروتوكول HTTPS بسبب مخاوف تتعلق بالخصوصية، ولا تريد أي جزء من عنوان IP لإرساله إلى خوادم الأسماء الموثوقة لدقة الموقع الجغرافي، استخدم
edns_client_subnet=0.0.0.0/0
. عادةً ما يرسل نظام أسماء النطاقات العام من Google معلومات تقريبية عن الشبكة. (عادةً ما يتم التخلص من الجزء الأخير من عنوان IPv4).- random_padding
سلسلة، تم التجاهل
ويتم تجاهل قيمة هذه المَعلمة. مثال:
XmkMw~o_mgP2pf.gpw-Oi5dK
شعور عملاء واجهة برمجة التطبيقات بالقلق بشأن هجمات الخصوصية المحتملة من جانب القناة باستخدام حيث يمكن لأحجام حزم البيانات الخاصة بطلبات HTTPS GET استخدام هذا المعامل لإجراء جميع الطلبات بشكل دقيق بنفس الحجم من خلال طلبات المساحة المتروكة مع بيانات عشوائية. لمنع إساءة تفسير عنوان URL، يجب فرض قيود على أحرف المساحة المتروكة. إلى أحرف عنوان URL غير المحجوزة: الأحرف الكبيرة والصغيرة والأرقام والواصلة والنقطة والشرطة السفلية والتلدة.
استجابة نظام أسماء النطاقات بتنسيق JSON
تمت الإجابة بنجاح (التعليقات التي تتم إضافتها هنا ليست موجودة في الردود الفعلية):
{
"Status": 0, // NOERROR - Standard DNS response code (32 bit integer).
"TC": false, // Whether the response is truncated
"RD": true, // Always true for Google Public DNS
"RA": true, // Always true for Google Public DNS
"AD": false, // Whether all response data was validated with DNSSEC
"CD": false, // Whether the client asked to disable DNSSEC
"Question":
[
{
"name": "apple.com.", // FQDN with trailing dot
"type": 1 // A - Standard DNS RR type
}
],
"Answer":
[
{
"name": "apple.com.", // Always matches name in the Question section
"type": 1, // A - Standard DNS RR type
"TTL": 3599, // Record's time-to-live in seconds
"data": "17.178.96.59" // Data for A - IP address as text
},
{
"name": "apple.com.",
"type": 1,
"TTL": 3599,
"data": "17.172.224.47"
},
{
"name": "apple.com.",
"type": 1,
"TTL": 3599,
"data": "17.142.160.59"
}
],
"edns_client_subnet": "12.34.56.78/0" // IP address / scope prefix-length
}
راجِع RFC 7871 (EDNS Client Subnet) للحصول على تفاصيل حول "طول بادئة النطاق" وكيفية تأثيره في التخزين المؤقت.
خطأ في الاستجابة مع معلومات التشخيص:
{
"Status": 2, // SERVFAIL - Standard DNS response code (32 bit integer).
"TC": false, // Whether the response is truncated
"RD": true, // Always true for Google Public DNS
"RA": true, // Always true for Google Public DNS
"AD": false, // Whether all response data was validated with DNSSEC
"CD": false, // Whether the client asked to disable DNSSEC
"Question":
[
{
"name": "dnssec-failed.org.", // FQDN with trailing dot
"type": 1 // A - Standard DNS RR type
}
],
"Comment": "DNSSEC validation failure. Please check http://dnsviz.net/d/dnssec-failed.org/dnssec/."
}
سجلّات نظام التعرّف على هوية المُرسِل (SPF) وسجلّات TXT مع علامات الاقتباس المضمّنة وتحديد مصدر خادم الأسماء:
{
"Status": 0, // NOERROR - Standard DNS response code (32 bit integer).
"TC": false, // Whether the response is truncated
"RD": true, // Always true for Google Public DNS
"RA": true, // Always true for Google Public DNS
"AD": false, // Whether all response data was validated with DNSSEC
"CD": false, // Whether the client asked to disable DNSSEC
"Question": [
{
"name": "*.dns-example.info.", // FQDN with trailing dot
"type": 99 // SPF - Standard DNS RR type
}
],
"Answer": [
{
"name": "*.dns-example.info.", // Always matches name in Question
"type": 99, // SPF - Standard DNS RR type
"TTL": 21599, // Record's time-to-live in seconds
"data": "\"v=spf1 -all\"" // Data for SPF - quoted string
}
],
"Comment": "Response from 216.239.38.110"
// Uncached responses are attributed to the authoritative name server
}
{
"Status": 0, // NOERROR - Standard DNS response code (32 bit integer).
"TC": false, // Whether the response is truncated
"RD": true, // Always true for Google Public DNS
"RA": true, // Always true for Google Public DNS
"AD": false, // Whether all response data was validated with DNSSEC
"CD": false, // Whether the client asked to disable DNSSEC
"Question": [
{
"name": "s1024._domainkey.yahoo.com.", // FQDN with trailing dot
"type": 16 // TXT - Standard DNS RR type
}
],
"Answer": [
{
"name": "s1024._domainkey.yahoo.com.", // Always matches Question name
"type": 16, // TXT - Standard DNS RR type
"data": "\"k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2FAZVGE3kL23bzeoULYv4PeleB3gfm\"\"JiDJOKU3Ns5L4KJAUUHjFwDebt0NP+sBK0VKeTATL2Yr/S3bT/xhy+1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj/+XcwIDAQAB; n=A 1024 bit key;\""
// Data for TXT - multiple quoted strings
}
],
}
سلاسل نظام أسماء النطاقات
يتم ترميز جميع سجلّات TXT كسلسلة JSON واحدة بما في ذلك استخدامات سجلّ TXT الأطول تنسيقات السجل مثل RFC 4408 (نظام التعرف على هوية المرسل) (SPF) أو RFC 4871 (DKIM)
نظام أسماء النطاقات (EDNS)
إنّ آلية إضافة EDNS العامة غير متاحة. يُعد خيار الشبكة الفرعية لعميل EDNS (edns-client-subnet) معلمة في طلب GET وحقل مستوى أعلى في استجابة JSON.