API máy khách FastDDNS

Tự động cập nhật hostname DDNS của bạn mỗi khi địa chỉ IP thay đổi.

Tổng quan

API máy khách FastDDNS cho phép mọi thiết bị có khả năng HTTP — router, camera IP, tập lệnh hoặc phần mềm cập nhật chuyên dụng — duy trì hostname DNS trỏ đến địa chỉ IP hiện tại của bạn. API sử dụng thiết kế yêu cầu GET đơn giản: máy khách gửi thông tin xác thực và hostname, còn máy chủ phản hồi bằng một mã trạng thái ngắn cho biết kết quả.

Máy chủ tự động phát hiện địa chỉ IP công cộng của máy khách từ kết nối đến. Không cần thêm tham số nào để chỉ định IP của bạn.

ℹ️ Cả HTTPHTTPS đều được hỗ trợ. Bạn nên ưu tiên HTTPS để bảo vệ thông tin xác thực trong quá trình truyền.

Xác thực

API hỗ trợ hai phương thức xác thực. Cả hai đều được chấp nhận như nhau — hãy chọn phương thức dễ cấu hình hơn trên thiết bị hoặc router của bạn.

🔑 Thông tin xác thực cho từng hostname: Mỗi hostname bạn tạo trên FastDDNS được cấp riêng user_name chuyên dụng. Thông tin xác thực này có thể user_passchỉ cập nhật hostname cụ thể đó và không thể được sử dụng để đăng nhập vào bảng điều khiển quản lý FastDDNS. Thiết kế này hạn chế tác động nếu thông tin xác thực của thiết bị bị xâm phạm. Phương thức 1 — Xác thực HTTP Basic (nhúng trong URL)

Thông tin xác thực được nhúng trong URL bằng cách sử dụng tiêu chuẩn

định dạng này. Định dạng này được router, camera và các thư viện HTTP client hỗ trợ rộng rãi. Hãy sử dụng user:password@hostUpdater Client Key làm mật khẩu. Trường

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

Mô tả Nơi tìm Tìm nó ở đâu
{user_name} Tên người dùng được gán cho tên máy chủ cụ thể này tại thời điểm tạo. Mật khẩu được gán cho hostname cụ thể này khi tạo hostname.
{user_pass} Mật khẩu được gán cho tên máy chủ cụ thể này tại thời điểm tạo. Hostname đủ điều kiện cần cập nhật, ví dụ:
{hostname} .testhost.fastddns.org. Phương thức 2 — Tham số chuỗi truy vấn

Thông tin xác thực được truyền dưới dạng các tham số truy vấn thuần văn bản cùng với

. Cách này hữu ích cho các thiết bị và firmware không thể cấu hình header HTTP Basic Auth nhưng cho phép nhập chuỗi URL tùy chỉnh hoàn toàn. hostnameTham số

https://client.fastddns.net/?hostname={hostname}&user_name={user_name}&user_pass={user_pass}
Loại Mô tả  
{user_name}
 
string Mật khẩu được gán cho hostname này khi tạo hostname.
{user_pass} string Hostname đủ điều kiện cần cập nhật, ví dụ:
{hostname} string .testhost.fastddns.org.

⚠️

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=YOUR_UPDATE_USERNAME&user_pass=YOUR_UPDATE_PASSWORD
⚠️ HTTPSHTTPSHTTPHTTPThực hiện cập nhật

Thực hiện cập nhật

một hostname mỗi lần..

Điểm cuối

GET https://client.fastddns.net/
bằng https.http.

Định dạng URL — Phương pháp 2: Chuỗi truy vấn

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

Tham số truy vấn

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

Tham số

Kiểu Mô tả bắt buộc
hostname hostname đủ điều kiện (FQDN) cần cập nhật, ví dụ: string Tên máy chủ đủ điều kiện (FQDN) để cập nhật, ví dụ: myhome.fastddns.net. Mỗi yêu cầu chỉ hỗ trợ một hostname.testhost.fastddns.orgPhương pháp 2
user_name Phương pháp 2 string Phương pháp 2
user_pass Phương pháp 2 string
Tự động phát hiện IP: parameter. myip.

Phương pháp 1

— Xác thực cơ bản HTTP qua HTTPS:Phương pháp 2

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

— Truy vấn chuỗi qua HTTPS:Sử dụng HTTP thuần túy (chỉ dành cho thử nghiệm / mạng đáng tin cậy):

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

Mã trả về

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

Tất cả phản hồi cập nhật đều trả về trạng thái HTTP

200 OK200 đượcCập nhật thành công

good {ip}

Cập nhật thành công

. Đây là phản hồi mong đợi khi IP của bạn đã thay đổi.good 203.0.113.45Không cần thay đổi

nochg {ip}

Không cần thay đổi

. Đây là phản hồi bình thường, không phải lỗi.nochg 203.0.113.45Xác thực không thành công

badauth

Xác thực không thành công

Không tìm thấy hostname

nohost

Không tìm thấy tên máy chủ

Lỗi máy chủ

911

Lỗi máy chủ

Tóm tắt phản hồi

Văn bản phản hồi

Trạng thái HTTP Ý nghĩa Hành động cần thiết 200
good {ip} 200 Không có — cập nhật hoàn tất 200
nochg {ip} 200 Không có — đã là bản hiện tại 200
badauth 200 Kiểm tra tên người dùng / khóa client 200
nohost 200 Xác minh hostname trong bảng điều khiển 200
911 200 Thử lại sau ít nhất 5 phút ⚠️
⚠️ Luôn phân tích cú pháp nội dung văn bản của phản hồi, không chỉ mã trạng thái HTTP. API luôn trả về — nội dung văn bản cho biết liệu bản cập nhật có thực sự thành công hay không. 200Lấy IP của client

Nhận IP khách hàng

Endpoint

Không yêu cầu xác thực. Cũng có thể truy cập qua HTTP thuần túy.

GET https://client.fastddns.net/dyndns/getip
Phản hồi

Trả về HTTP

200 OK200 đượcCác yêu cầu mẫu

# Example response body
203.0.113.45RESPONSE

Sử dụng

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

:curl:

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

Ví dụ về mã

Python

# 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

PHP

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

Bash (Cron / Tập lệnh router)

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

Khắc phục sự cố

#!/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

Tôi nhận được

Tôi nhận được badauth

user_name hoặc user_pass được cung cấp không khớp với thông tin xác thực được gán cho hostname đó. Mỗi hostname có thông tin xác thực riêng — tìm chúng trong bảng điều khiển, tại Hostnames → Details. Lưu ý rằng thông tin xác thực này chỉ dành cho hostname và không thể được sử dụng để đăng nhập vào cổng quản lý FastDDNS. Nếu gần đây bạn đã đặt lại thông tin xác thực, hãy cập nhật tất cả thiết bị đang sử dụng hostname đó.

Tôi nhận được nohost

hostname trong tham số hostname không tồn tại hoặc không thuộc tài khoản được xác định bởi thông tin xác thực đã cung cấp. Kiểm tra lỗi chính tả trong hostname, xác nhận hostname đó có trong bảng điều khiển của bạn, đồng thời xác minh rằng user_nameuser_pass khớp với hostname cụ thể đó.

Máy chủ phát hiện IP không chính xác

Máy chủ sử dụng IP nguồn của kết nối TCP. Nếu thiết bị của bạn nằm sau router NAT, máy chủ sẽ phát hiện IP công cộng của router — đây thường là hành vi mong muốn. Nếu bạn đang sử dụng VPN hoặc proxy, máy chủ sẽ thấy IP thoát của VPN/proxy. Sử dụng getip endpointendpoint Get Client IP

để xác minh IP mà máy chủ nhìn thấy từ thiết bị của bạn. 911

Điều này cho thấy sự cố tạm thời ở phía máy chủ. Hãy chờ ít nhất 5 phút trước khi thử lại. Không gửi lặp lại các yêu cầu quá nhanh — điều này có thể kích hoạt giới hạn tốc độ. Kiểm tra trang trạng thái FastDDNS để xem có sự cố đang diễn ra hay không.

Tôi nên thăm dò endpoint cập nhật bao lâu một lần?

Chúng tôi khuyên bạn nên kiểm tra thay đổi IP sau mỗi 5 phút. Khi IP của bạn không thay đổi, máy chủ trả về nochg, đây là một thao tác không làm gì nhẹ. Không nên thăm dò thường xuyên hơn một lần mỗi phút vì có thể dẫn đến giới hạn tốc độ.