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 Basic Auth (ฝังอยู่ใน URL)

ข้อมูลเข้าสู่ระบบจะถูกฝังไว้ใน URL โดยใช้รูปแบบuser:password@host มาตรฐาน ซึ่งเราเตอร์ กล้อง และไลบรารีไคลเอ็นต์ 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 — พารามิเตอร์สตริงแบบสอบถาม

ข้อมูลเข้าสู่ระบบจะถูกส่งเป็นพารามิเตอร์ query แบบข้อความธรรมดาควบคู่ไปกับ 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

ตัวอย่างการใช้การตรวจสอบสิทธิ์สตริงการสืบค้น:

{_NT58_4}
⚠️ เมื่อใช้การตรวจสอบสิทธิ์ผ่าน query string ให้เลือกใช้ HTTPS เสมอ เพื่อไม่ให้ข้อมูลเข้าสู่ระบบถูกส่งเป็นข้อความธรรมดา HTTP พร้อมใช้งาน แต่ควรใช้บนเครือข่ายท้องถิ่นที่เชื่อถือได้หรือเพื่อการทดสอบเท่านั้น

ดำเนินการอัปเดต

ส่งคำขอ GET เพียงครั้งเดียวเพื่ออัปเดตที่อยู่ IP ของ hostname ที่ลงทะเบียนไว้กับบัญชีของคุณ คำขอแต่ละครั้งจะอัปเดต ชื่อโฮสต์ทีละชื่อ

ปลายทาง

GET https://client.fastddns.net/
เข้าถึงได้ผ่าน HTTP แบบไม่เข้ารหัสเช่นกัน — ให้แทนที่ https ด้วย http

รูปแบบ URL — วิธีที่ 1: การตรวจสอบสิทธิ์พื้นฐานของ HTTP

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 ชื่อโฮสต์ที่มีคุณสมบัติครบถ้วน (FQDN) ที่จะอัปเดต เช่น myhome.fastddns.net หรือ testhost.fastddns.org รองรับ hostname เพียงหนึ่งรายการต่อคำขอ
user_name วิธีที่ 2 string ชื่อผู้ใช้สำหรับ hostname นี้ ต้องระบุเมื่อใช้การตรวจสอบสิทธิ์ผ่าน Query String (วิธีที่ 2) ไม่ต้องระบุเมื่อใช้ HTTP Basic Auth (วิธีที่ 1)
user_pass วิธีที่ 2 string รหัสผ่านสำหรับ hostname นี้ ต้องระบุเมื่อใช้การตรวจสอบสิทธิ์ผ่าน Query String (วิธีที่ 2) ไม่ต้องระบุเมื่อใช้ HTTP Basic Auth (วิธีที่ 1)
การตรวจจับ IP อัตโนมัติ: เซิร์ฟเวอร์ใช้ IP ต้นทางของการเชื่อมต่อ TCP ขาเข้าเพื่อกําหนดที่อยู่ IP สาธารณะของคุณ คุณไม่จําเป็นต้องระบุพารามิเตอร์ myip

ตัวอย่างคำขอ

วิธีที่ 1 - การตรวจสอบสิทธิ์พื้นฐาน HTTP ผ่าน 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 และยืนยันว่า hostname นี้ลงทะเบียนอยู่ในบัญชีของคุณ

{_NT34_5}

ข้อผิดพลาดของเซิร์ฟเวอร์

เกิดข้อผิดพลาดภายในฝั่งเซิร์ฟเวอร์ FastDDNS ให้รออย่างน้อย 5 นาทีก่อนลองใหม่ หากปัญหายังคงอยู่ ให้ตรวจสอบหน้าสถานะ FastDDNS หรือติดต่อฝ่ายสนับสนุน

สรุปการตอบกลับ

ข้อความตอบกลับ สถานะ HTTP ความหมาย การดำเนินการที่จำเป็น
{ฯ_NT33_} 200 ไม่มี — อัปเดตเสร็จสมบูรณ์ ไม่มี — การอัปเดตเสร็จสมบูรณ์
nochg {ip} 200 ไม่มี — เป็นข้อมูลปัจจุบันอยู่แล้ว ไม่มี — ปัจจุบันอยู่แล้ว
badauth 200 ตรวจสอบชื่อผู้ใช้ / คีย์ไคลเอ็นต์ ตรวจสอบชื่อผู้ใช้ / คีย์ไคลเอ็นต์
nohost 200 ไม่ได้ลงทะเบียนชื่อโฮสต์ ยืนยันชื่อโฮสต์ในแดชบอร์ด
911 200 ข้อผิดพลาดฝั่งเซิร์ฟเวอร์ ลองอีกครั้งหลังจาก 5+ นาที
⚠️ สิ่งสำคัญสำหรับระบบอัตโนมัติ: แยกวิเคราะห์ ข้อความเนื้อหาการตอบกลับ, ไม่ใช่แค่รหัสสถานะ HTTP เท่านั้น API จะส่งคืน 200 เสมอ — เนื้อหาข้อความจะบอกคุณว่าการอัปเดตสำเร็จจริงหรือไม่

รับ IP ของไคลเอ็นต์

FastDDNS มี endpoint ยูทิลิตี้อย่างง่ายที่ส่งคืนที่อยู่ IP สาธารณะตามที่เซิร์ฟเวอร์มองเห็น วิธีนี้มีประโยชน์สำหรับการดีบัก เพื่อตรวจสอบว่าอุปกรณ์ของคุณส่งคำขอมาจาก IP ใด หรือใช้ในสคริปต์แบบกำหนดเองก่อนเรียก endpoint การอัปเดต

ปลายทาง

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
$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

Bash (Cron / Router Script)

#!/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 นั้น โดยดูได้ในแดชบอร์ดของคุณที่ ชื่อโฮสต์→รายละเอียด. โปรดทราบว่าข้อมูลประจำตัวเหล่านี้ใช้ได้เฉพาะกับ hostname และ ไม่สามารถใช้เข้าสู่ระบบพอร์ทัลการจัดการ FastDDNS ได้. หากคุณเพิ่งรีเซ็ตข้อมูลประจำตัว โปรดอัปเดตอุปกรณ์ทั้งหมดที่ใช้ hostname นั้น

ฉันได้รับ nohost

ชื่อโฮสต์ในพารามิเตอร์ hostname ไม่มีอยู่จริง หรือไม่ได้เป็นของบัญชีที่ระบุโดยข้อมูลประจำตัวที่ให้มา ตรวจสอบว่า hostname สะกดถูกต้อง ยืนยันว่ามี hostname นี้อยู่ในแดชบอร์ด และตรวจสอบว่า user_name และ user_pass และ ชื่อโฮสต์ที่เฉพาะเจาะจงนั้น.

เซิร์ฟเวอร์ตรวจพบ IP ไม่ถูกต้อง

เซิร์ฟเวอร์ใช้ IP ต้นทางของการเชื่อมต่อ TCP หากอุปกรณ์ของคุณอยู่หลัง router NAT เซิร์ฟเวอร์จะตรวจพบ IP สาธารณะของ router ซึ่งโดยปกติเป็นพฤติกรรมที่ต้องการ หากคุณใช้ VPN หรือพร็อกซี เซิร์ฟเวอร์จะเห็น IP ทางออกของ VPN/proxy แทน ใช้ getip endpoint เพื่อยืนยันว่าเซิร์ฟเวอร์มองเห็น IP ใดจากอุปกรณ์ของคุณ

ฉันได้รับ 911

แสดงว่ามีปัญหาชั่วคราวที่ฝั่งเซิร์ฟเวอร์ โปรดรออย่างน้อย 5 นาทีก่อนลองอีกครั้ง อย่าส่งคำขอซ้ำอย่างรวดเร็ว เพราะอาจทำให้ถูกจำกัดอัตราการส่งคำขอ ตรวจสอบหน้าสถานะ FastDDNS ว่ามีเหตุขัดข้องที่กำลังดำเนินอยู่หรือไม่

ควรตรวจสอบ endpoint สำหรับอัปเดตบ่อยแค่ไหน

เราแนะนำให้ตรวจสอบการเปลี่ยนแปลงของ IP ทุก ๆ 5 นาที เมื่อ IP ของคุณไม่มีการเปลี่ยนแปลง เซิร์ฟเวอร์จะส่งคืน nochg ซึ่งเป็น no-op ที่มีน้ำหนักเบา ไม่แนะนำให้ทำโพลบ่อยกว่าหนึ่งครั้งต่อนาที เพราะอาจทำให้ถูกจำกัดอัตราการส่งคำขอ