Thay thế ipify bằng ip.tnd.vn: drop-in chỉ đổi một dòng URL

Chia sẻ bài viết

Mục lục
Thay thế ipify bằng ip.tnd.vn: drop-in chỉ đổi một dòng URL
Thay thế ipify bằng ip.tnd.vn drop-in
Đổi một dòng URL, code cũ chạy y nguyên - nhưng nhanh hơn tại Việt Nam.

Rất nhiều script và app đang gọi api.ipify.org để lấy public IP. Nó ổn, nhưng server đặt xa, đôi lúc chậm hoặc bị chặn, và bạn không kiểm soát được nó. ip.tnd.vn được xây để tương thích hành vi với ipify, nên bạn có thể đổi sang chỉ bằng cách thay URL, không cần sửa logic parse. Bài này chỉ rõ map từng endpoint.

Bảng quy đổi endpoint

api.ipify.org                         -> ip.tnd.vn
api.ipify.org?format=json             -> ip.tnd.vn?format=json
api.ipify.org?format=jsonp&callback=f -> ip.tnd.vn?format=jsonp&callback=f

Response giống hệt: text trả về IP thuần không xuống dòng, JSON trả về {"ip":"..."} với đúng key ip. Vì vậy mọi code đang đọc field ip đều chạy tiếp mà không sửa gì.

So sánh phản hồi thực tế

$ curl -s https://api.ipify.org
14.167.77.227

$ curl -s https://ip.tnd.vn
14.167.77.227

$ curl -s "https://ip.tnd.vn?format=json"
{"ip":"14.167.77.227"}

Cùng IP, cùng định dạng. Khác biệt là ip.tnd.vn đặt tại Việt Nam (qua Cloudflare edge gần bạn) nên độ trễ thấp hơn cho người dùng và server ở VN.

Migrate trong code

Python:

# Cũ
ip = requests.get("https://api.ipify.org?format=json").json()["ip"]
# Mới - chỉ đổi domain
ip = requests.get("https://ip.tnd.vn?format=json").json()["ip"]

Node.js:

// Cũ
const r = await fetch("https://api.ipify.org?format=json");
// Mới
const r = await fetch("https://ip.tnd.vn?format=json");
const { ip } = await r.json();

JSONP cho frontend cũ

Nếu bạn còn dùng JSONP để né CORS trên trang tĩnh, ip.tnd.vn hỗ trợ luôn trên cùng domain (ipify phải dùng host riêng):

<script src="https://ip.tnd.vn?format=jsonp&callback=showIp"></script>
<script>
function showIp(data){ console.log("IP:", data.ip); }
</script>

Những điểm cần biết khi chuyển

  • Tên callback JSONP được sanitize: chỉ ký tự hợp lệ của identifier JS mới được chấp nhận, an toàn hơn, tránh injection.
  • Không cache: header Cache-Control: no-store đảm bảo IP luôn mới, hợp cho theo dõi IP động.
  • IP không spoof được: đọc từ header CF-Connecting-IP tại edge Cloudflare, client không tự khai man được.
  • IPv6: nếu client kết nối bằng IPv6, kết quả sẽ là IPv6, giống cơ chế của ipify.

Hạ tầng tự chủ, đặt tại Việt Nam

ip.tnd.vn là ví dụ cho triết lý của TND: tự host công cụ mình cần, đặt gần người dùng VN. Cần VPS để chạy API, cron, bot của riêng bạn? Cloud VPS TND có IP sạch, SSD NVMe, từ 199k/tháng.

Xem Cloud VPS Xem Proxy IPv4

Tham gia nhóm Vibe Coder Việt Nam

Bạn đang code cùng Claude, Codex, Gemini, Cursor hay Windsurf? Vào nhóm Facebook để trao đổi tip, debug giúp nhau, chia sẻ workflow vibe coding, và update tool mới mỗi tuần. Cộng đồng dev tự host stack đang grow nhanh tại Việt Nam.

Join nhóm trên Facebook

Hạ tầng cho dev: truy vấn SQL, PHP dựng trang, build Next.js hay đóng gói app iOS và Android đều nghẽn ở tốc độ đọc ghi ổ đĩa và xung nhịp CPU. VPS NVMe Enterprise RAID 10, IOPS đọc ghi cao dùng ổ Enterprise U.2 NVMe chạy RAID 10, IOPS đọc ghi gấp 5 đến 7 lần SATA SSD, backup hàng tuần, bàn giao trong 5 phút.