Bản xem trước cho lập trình viên

HTTP API của IP Lens

Các endpoint JSON nhỏ gọn cho kết nối của khách truy cập và chẩn đoán nhẹ.

Lấy IP hiện tại

GET /api/ip

curl "/api/ip"

Trả về địa chỉ đến server, phiên bản IP, giao thức và trạng thái HTTPS. Thêm ?enrich=1 để lấy metadata mạng gần đúng.

Tra cứu một địa chỉ IP

GET /api/ip-lookup?ip=8.8.8.8

Chỉ chấp nhận IPv4 hoặc IPv6 công khai, có validation và giới hạn 30 yêu cầu mỗi phút theo người gọi.

Xem tín hiệu mạng

GET /api/network-risk

Trả về metadata cache cùng tín hiệu VPN, proxy hoặc hosting thận trọng. Không được xem đây là bằng chứng.

Health và đo tốc độ Internet

GET /api/health kiểm tra database và storage. GET /api/ping phục vụ đo độ trễ và jitter.

GET /api/speed?bytes=N trả dữ liệu nhị phân application/octet-stream với Content-Length chính xác. Giá trị số được ép về số nguyên và giới hạn trong 64 KB–8 MB (65.536–8.388.608 byte); thiếu hoặc không phải số dùng 262.144 byte. Giới hạn 60 yêu cầu trong mỗi cửa sổ trượt 10 phút. Một lần đo đầy đủ trên kết nối nhanh có thể dùng tối đa ba mẫu tải xuống.

POST /api/speed-upload chỉ nhận application/octet-stream, tối đa 4 MB (4.194.304 byte), đọc theo khối và trả JSON {"ok":true,"bytes":N}. Giới hạn 10 yêu cầu trong mỗi cửa sổ trượt 10 phút. Hai giới hạn dùng khóa HMAC riêng suy ra từ IP người gọi.

Sai phương thức trả HTTP 405, sai kiểu nội dung upload trả 415, upload quá lớn trả 413 và vượt giới hạn trả 429. Phản hồi dùng Cache-Control: private, no-store, max-age=0X-Content-Type-Options: nosniff.

Mỗi lần đo do bạn bấm bắt đầu truyền tối đa khoảng 15,25 MiB, chưa tính header và phản hồi ping. Kết quả đo tuyến đến máy chủ IP Lens, có thể thấp hơn tốc độ ISP quảng cáo và không chứng nhận tốc độ gói cước. Dữ liệu truyền được xử lý tạm thời; ứng dụng không lưu dữ liệu truyền hoặc kết quả vào database, analytics, cache hay log do ứng dụng quản lý. Chỉ bản ghi HMAC giới hạn yêu cầu có thời hạn được lưu để chống lạm dụng.

Thống kê tổng hợp riêng tư

GET /api/stats/summary?days=30

Dùng HTTP Basic Auth với username và password quản trị trong config.php. Kết quả gồm tổng lượt xem, người dùng-ngày của người, số trang đã xem, lượt xem và tỷ lệ bot, phân bố tên/nhóm bot, cùng thống kê ngày và URL tách người/bot. Top quốc gia, trình duyệt, OS, thiết bị, ngôn ngữ và nguồn giới thiệu chỉ tính người. Recent activity chỉ trả thông tin người dùng/thiết bị đã che hoặc nhận diện bot đã chuẩn hóa, không kèm đường dẫn trang, IP đầy đủ, User-Agent đầy đủ hay visitor key.

Thời tiết gần đúng

GET /api/weather?lang=vi

Trả thời tiết theo vị trí IP gần đúng khi WeatherAPI.com đã được bật và cấu hình ở server.

Ví dụ JavaScript

fetch('/api/ip-lookup?ip=8.8.8.8')
  .then(function (response) { return response.json(); })
  .then(function (data) { console.log(data.ip, data.network); });