API الخاص بعميل FastDDNS

حدّث hostname الخاص بك في DDNS تلقائيًا كلما تغيّر عنوان IP الخاص بك.

نظرة عامة

تسمح واجهة FastDDNS Client API لأي جهاز يدعم HTTP — مثل أجهزة router وكاميرات IP والسكريبتات أو برامج التحديث المخصصة — بإبقاء hostname الخاص بـ DNS موجّهًا إلى عنوان IP الحالي. تتبع API تصميمًا بسيطًا لطلبات GET: يرسل العميل بيانات الاعتماد وhostname، ويرد الخادم برمز حالة قصير يوضح النتيجة.

يكتشف الخادم عنوان IP العام للعميل تلقائيًا من الاتصال الوارد. لا حاجة إلى معايير إضافية لتحديد عنوان IP الخاص بك.

ℹ️ كل من HTTP وHTTPS مدعومان. يوصى بشدة باستخدام HTTPS لحماية بيانات اعتمادك أثناء النقل.

المصادقة

تدعم API طريقتين للمصادقة. كلتاهما مقبولتان بالتساوي — اختر الطريقة الأسهل للتهيئة على جهازك أو router.

🔑 بيانات اعتماد لكل اسم مضيف: كل hostname تنشئه على FastDDNS يُمنح اسم مستخدم مخصصًاuser_name وuser_passكلمة مرور مخصصة له. يمكن لبيانات الاعتماد هذه فقط تحديث ذلك اسم المضيف المحدد ولا يمكن استخدامها لتسجيل الدخول إلى لوحة إدارة FastDDNS. يحد هذا التصميم من التأثير إذا تم اختراق بيانات اعتماد أحد الأجهزة يومًا ما.

الطريقة 1 — مصادقة HTTP الأساسية (مضمّنة في URL)

تُضمَّن بيانات الاعتماد في الرابط باستخدام صيغة user:password@host القياسية. وتدعمها على نطاق واسع أجهزة router والكاميرات ومكتبات عملاء HTTP. استخدم مفتاح عميل التحديث من لوحة التحكم الخاصة بك ككلمة مرور.

https://{user_name}:{user_pass}@client.fastddns.net/?hostname={hostname}

الحقل الوصف مكان العثور عليه
{user_name} اسم المستخدم المعيّن لهذا hostname المحدد عند إنشائه. لوحة تحكم FastDDNS → أسماء المضيفين → التفاصيل
{user_pass} كلمة المرور المعيّنة لهذا hostname المحدد عند إنشائه. لوحة تحكم FastDDNS → أسماء المضيفين → التفاصيل
{hostname} اسم hostname المؤهل بالكامل المراد تحديثه، مثل testhost.fastddns.org. لوحة تحكم FastDDNS → أسماء المضيفين → التفاصيل

الطريقة 2 — معلمات سلسلة الاستعلام

تُمرَّر بيانات الاعتماد كمعلمات استعلام عادية إلى جانب hostname. يفيد ذلك للأجهزة وfirmware التي لا يمكنها تكوين رؤوس HTTP Basic Auth، لكنها تسمح باستخدام سلسلة URL مخصصة بالكامل.

https://client.fastddns.net/?hostname={hostname}&user_name={user_name}&user_pass={user_pass}
المعلمة النوع الوصف
{user_name}
 
string اسم المستخدم المعيّن لهذا hostname عند إنشائه.
{user_pass} string كلمة المرور المعيّنة لهذا hostname عند إنشائه.
{hostname} string اسم hostname المؤهل بالكامل المراد تحديثه، مثل testhost.fastddns.org.

مثال على استخدام مصادقة سلسلة الاستعلام:

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=YOUR_UPDATE_USERNAME&user_pass=YOUR_UPDATE_PASSWORD
⚠️ عند استخدام مصادقة سلسلة الاستعلام، فضّل دائمًا HTTPS حتى لا تُنقل بيانات الاعتماد بنص واضح. HTTP متاح، لكن يجب استخدامه فقط على الشبكات المحلية الموثوقة أو لأغراض الاختبار.

إجراء التحديث

أرسل طلب GET واحدًا لتحديث عنوان IP لـ hostname مسجل في حسابك. يحدّث كل طلب اسم مضيف واحد في كل مرة.

نقطة النهاية

GET https://client.fastddns.net/
يمكن الوصول إليه أيضًا عبر HTTP العادي — استبدل https بـ http.

تنسيق URL — الطريقة 1: HTTP Basic Auth

https://{user_name}:{user_pass}@client.fastddns.net/?hostname={hostname}

تنسيق URL — الطريقة 2: سلسلة الاستعلام

https://client.fastddns.net/?hostname={hostname}&user_name={user_name}&user_pass={user_pass}

معلمات الاستعلام

المعلمة النوع الوصف
hostname مطلوب string ‏hostname المؤهل بالكامل (FQDN) المراد تحديثه، مثل myhome.fastddns.net أو testhost.fastddns.org. لا يُسمح إلا بـ hostname واحد لكل طلب.
user_name الطريقة 2 string اسم المستخدم لهذا hostname. يكون مطلوبًا عند استخدام مصادقة سلسلة الاستعلام (الطريقة 2)، ولا يلزم عند استخدام HTTP Basic Auth (الطريقة 1).
user_pass الطريقة 2 string كلمة المرور لهذا hostname. تكون مطلوبة عند استخدام مصادقة سلسلة الاستعلام (الطريقة 2)، ولا تلزم عند استخدام HTTP Basic Auth (الطريقة 1).
الكشف التلقائي عن IP: يستخدم الخادم عنوان IP المصدر لاتصال TCP الوارد لتحديد عنوان IP العام لديك. لا تحتاج إلى توفير معامل myip.

طلبات نموذجية

الطريقة 1 — مصادقة HTTP Basic Auth عبر HTTPS:

https://YOUR_UPDATE_USERNAME:YOUR_UPDATE_PASSWORD@client.fastddns.net/?hostname=testhost.fastddns.org

الطريقة 2 — سلسلة الاستعلام عبر HTTPS:

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=YOUR_UPDATE_USERNAME&user_pass=YOUR_UPDATE_PASSWORD

استخدام HTTP عادي (للاختبار أو عبر الشبكات الموثوقة فقط):

http://YOUR_UPDATE_USERNAME:YOUR_UPDATE_PASSWORD@client.fastddns.net/?hostname=testhost.fastddns.org

رموز الاستجابة

جميع استجابات التحديث تعيد حالة HTTP 200 حسنا مع نص عادي. يجب على عميلك تحليل هذا النص لتحديد النتيجة الفعلية للتحديث.

good {ip}

نجاح التحديث

تم تحديث سجل hostname إلى عنوان IP المكتشف. ويُضمَّن عنوان IP الفعلي في الاستجابة، مثل good 203.0.113.45. هذه هي الاستجابة المتوقعة عند تغيّر عنوان IP الخاص بك.

nochg {ip}

لا حاجة إلى التحديث

يشير hostname بالفعل إلى عنوان IP المكتشف — لذلك لم تكن هناك حاجة إلى إجراء تحديث. ويُضمَّن عنوان IP الحالي، مثل nochg 203.0.113.45. هذه استجابة طبيعية وليست خطأً.

badauth

فشل المصادقة

اسم المستخدم أو مفتاح عميل التحديث غير صحيح أو أُبطل. تحقّق من بيانات الاعتماد في لوحة تحكم FastDDNS. لا تُعِد المحاولة تلقائيًا — أصلح بيانات الاعتماد أولًا.

nohost

اسم المضيف غير موجود

لا يوجد hostname المحدد في حسابك، أو أنه غير مؤهل للتحديثات الديناميكية. تحقّق من تهجئة hostname وتأكد من أنه مسجّل ضمن حسابك.

911

خطأ في الخادم

حدث خطأ داخلي في خادم FastDDNS. انتظر 5 دقائق على الأقل قبل إعادة المحاولة. إذا استمرت المشكلة، فتحقّق من صفحة حالة FastDDNS أو تواصل مع الدعم.

ملخص الاستجابة

نص الاستجابة حالة HTTP المعنى الإجراء المطلوب
good {ip} 200 تم تحديث IP بنجاح لا شيء — اكتمل التحديث
nochg {ip} 200 لم يتغير IP، ولم يُجرَ أي تحديث لا شيء — القيمة الحالية محدثة بالفعل
badauth 200 بيانات الاعتماد غير صالحة تحقق من اسم المستخدم / مفتاح العميل
nohost 200 اسم المضيف غير مسجل تحقق من hostname في لوحة المعلومات
911 200 خطأ من جانب الخادم أعد المحاولة بعد 5 دقائق أو أكثر
⚠️ مهم للأتمتة: حلّل دائمًا نص الاستجابة، وليس رمز حالة HTTP فقط. تعيد API دائمًا200 — يخبرك نص الاستجابة ما إذا كان التحديث قد نجح فعليًا.

الحصول على IP العميل

يوفر FastDDNS نقطة نهاية بسيطة تُرجع عنوان IP العام كما يراه الخادم. وهذا مفيد لتصحيح الأخطاء، والتحقق من عنوان IP الذي يرسل منه جهازك، أو استخدامه في السكربتات المخصصة قبل استدعاء نقطة نهاية التحديث.

نقطة النهاية

GET https://client.fastddns.net/dyndns/getip
لا تتطلب مصادقة. ويمكن الوصول إليها أيضًا عبر HTTP العادي.

الاستجابة

تُرجع HTTP 200 حسنا مع عنوان IP العام الذي اكتشفه الخادم كنص عادي في نص الاستجابة.

# Example response body
203.0.113.45RESPONSE

طلبات نموذجية

https://client.fastddns.net/dyndns/getip
http://client.fastddns.net/dyndns/getip

باستخدام curl:

curl https://client.fastddns.net/dyndns/getipSHELL

أمثلة على الشيفرة

شل / cURL

# Recommended: let curl build the Authorization header (-u), so the
# credentials never appear in the URL.
HOSTNAME="myhome.fastddns.org"
USER_NAME="YOUR_UPDATE_USERNAME"
USER_PASS="YOUR_UPDATE_PASSWORD"
curl -s -u "${USER_NAME}:${USER_PASS}" "https://client.fastddns.net/?hostname=${HOSTNAME}"
# Legacy form, for devices that can only be given one URL field:
curl -s "https://client.fastddns.net/?hostname=${HOSTNAME}&user_name=${USER_NAME}&user_pass=${USER_PASS}"
# Check what IP the server sees from your device
curl -s "https://client.fastddns.net/dyndns/getip"SHELL

بايثون

import requests
HOSTNAME  = "testhost.fastddns.org"
USER_NAME = "YOUR_UPDATE_USERNAME"
USER_PASS = "YOUR_UPDATE_PASSWORD"
# Method 1: HTTP Basic Auth
resp = requests.get(
    "https://client.fastddns.net/",
    auth=(USER_NAME, USER_PASS),
    params={"hostname": HOSTNAME}
)
# Method 2: Query string
# resp = requests.get("https://client.fastddns.net/", params={
#     "hostname": HOSTNAME, "user_name": USER_NAME, "user_pass": USER_PASS
# })
body = resp.text.strip()
if body.startswith("good"):
    print(f"Updated successfully: {body}")
elif body.startswith("nochg"):
    print(f"No change needed: {body}")
elif body == "badauth":
    print("Authentication failed. Check credentials.")
elif body == "nohost":
    print("Hostname not found.")
elif body == "911":
    print("Server error. Try again later.")PYTHON

PHP

<?php
$hostname  = 'testhost.fastddns.org';
$user_name = 'YOUR_UPDATE_USERNAME';
$user_pass = 'YOUR_UPDATE_PASSWORD';
// Recommended: Basic Auth in a request header, so the password is not
// part of the URL and cannot leak through logs or error messages.
$url = "https://client.fastddns.net/?hostname=" . urlencode($hostname);
$auth = 'Basic ' . base64_encode($user_name . ':' . $user_pass);
// Method 2: Query string credentials
// $url = "https://client.fastddns.net/?hostname=" . urlencode($hostname)
//      . "&user_name=" . urlencode($user_name)
//      . "&user_pass=" . urlencode($user_pass);
$ctx = stream_context_create(['http' => [
    'timeout' => 10,
    'header'  => "Authorization: {$auth}\r\n",
]]);
$body = trim(file_get_contents($url, false, $ctx));
switch (true) {
    case str_starts_with($body, 'good'):
        echo "Updated: {$body}\n"; break;
    case str_starts_with($body, 'nochg'):
        echo "No change: {$body}\n"; break;
    case $body === 'badauth':
        echo "Auth failed. Check hostname credentials.\n"; break;
    case $body === 'nohost':
        echo "Hostname not found.\n"; break;
    case $body === '911':
        echo "Server error, retry later.\n"; break;
}PHP

باش (سكريبت كرون / راوتر)

#!/bin/bash
HOSTNAME="testhost.fastddns.org"
USER_NAME="YOUR_UPDATE_USERNAME"
USER_PASS="YOUR_UPDATE_PASSWORD"
# Method 1: HTTP Basic Auth
RESULT=$(curl -s -u "${USER_NAME}:${USER_PASS}" "https://client.fastddns.net/?hostname=${HOSTNAME}")
# Method 2: Query string (uncomment to use instead)
# RESULT=$(curl -s "https://client.fastddns.net/?hostname=${HOSTNAME}&user_name=${USER_NAME}&user_pass=${USER_PASS}")
case "$RESULT" in
  good*)   echo "[OK] $RESULT" ;;
  nochg*)  echo "[OK] $RESULT" ;;
  badauth) echo "[ERR] Bad credentials — check hostname user/pass"; exit 1 ;;
  nohost)  echo "[ERR] Hostname not found"; exit 1 ;;
  911)     echo "[ERR] Server error, retry later"; exit 1 ;;
  *)       echo "[WARN] Unknown response: $RESULT" ;;
esacBASH

استكشاف الأخطاء وإصلاحها

أتلقى badauth

اسم المستخدم user_name أو user_passكلمة المرور المرسلة لا تتطابق مع بيانات الاعتماد المخصصة لذلك الـhostname. لكل hostname بيانات اعتماد مستقلة خاصة به — ابحث عنها في لوحة التحكم ضمن أسماء المضيفين → التفاصيل. لاحظ أن بيانات الاعتماد هذه خاصة بالـhostname ولا يمكن استخدامها لتسجيل الدخول إلى بوابة إدارة FastDDNS. إذا أعدت تعيين بيانات الاعتماد مؤخراً، فحدّث جميع الأجهزة التي تستخدم ذلك الـhostname.

أتلقى nohost

اسم المضيف في معاملة hostname غير موجود أو لا ينتمي إلى الحساب المحدد بواسطة بيانات الاعتماد المقدمة. تحقق من عدم وجود أخطاء إملائية في الـhostname، وتأكد من إدراجه في لوحة التحكم، وتحقق من تطابق user_nameاسم المستخدم وكلمة المرورuser_pass ذلك الاسم المضيف المحدد.

يكتشف الخادم عنوان IP غير الصحيح

يستخدم الخادم عنوان IP المصدر لاتصال TCP. إذا كان جهازك خلف router يستخدم NAT، فسيُكتشف عنوان IP العام للـrouter، وهو عادةً السلوك المطلوب. أما إذا كنت تستخدم VPN أو proxy، فسيرى الخادم عنوان IP الخاص بنقطة الخروج من VPN أو proxy بدلاً من ذلك. استخدم getip endpoint للتحقق من أي عنوان IP يراها الخادم من جهازك.

للتحقق من عنوان IP الذي يراه الخادم من جهازك. 911

يشير ذلك إلى مشكلة مؤقتة من جانب الخادم. انتظر 5 دقائق على الأقل قبل إعادة المحاولة. لا تكرر الطلبات بسرعة، فقد يؤدي ذلك إلى تقييد معدل الطلبات. تحقق من صفحة حالة FastDDNS لمعرفة ما إذا كانت هناك حوادث نشطة.

كم مرة ينبغي أن أستعلم عن نقطة نهاية التحديث؟

نوصي بالتحقق من تغيّر عنوان IP كل 5 دقائق. عندما لا يتغير عنوان IP، يعيد الخادم nochgاستجابة no-op، أي لا ينفذ أي إجراء، وهي استجابة خفيفة. لا يُنصح بالاستعلام أكثر من مرة كل دقيقة، فقد يؤدي ذلك إلى تقييد معدل الطلبات.