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 "https://iplens.me/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 IP hoặc tên miền

GET /api/ip-lookup?ip=example.com

Chấp nhận IPv4, IPv6 công khai hoặc tên miền. Tên miền được phân giải ở server, bỏ qua địa chỉ riêng/nội bộ và ưu tiên IPv4 công khai trước IPv6. 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 120 yêu cầu trong mỗi cửa sổ trượt 10 phút. Một lần đo đầy đủ chạy khoảng 8 giây mỗi chiều với 4 luồng song song và dừng sớm khi đạt 100 MiB tải xuống / 50 MiB tải lên.

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 120 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=0 và X-Content-Type-Options: nosniff.

Mỗi lần đo do bạn bấm bắt đầu truyền tối đa khoảng 150 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ê truy cậ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. Ngoài thống kê tổng hợp, kết quả có tối đa 20 IP người dùng riêng biệt và 20 cặp tên bot/IP. IP đầy đủ chỉ được trả khi chức năng lưu danh tính mã hóa đang bật và yêu cầu đã xác thực. Dữ liệu không kèm URL đã truy cập, User-Agent đầy đủ, khóa mã hóa hoặc ciphertext.

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); });