🛡️ Self-Hosted Captcha v2

Server Captcha

..

🎈

Balloon

Bấm bóng bay theo thứ tự

🪐

Planet

Kéo hành tinh vào quỹ đạo

🧩

Puzzle

Kéo mảnh ghép vào vị trí

🎯

Slider

Kéo đến vị trí đánh dấu

🔢

Math

Giải phép tính toán học

🔄

Rotate

Xoay hình về đúng hướng

📊

Sequence

Tìm số tiếp theo

🎨

Color

Chọn màu đúng theo tên

🔍

Icon

Tìm icon giống mẫu

🛤️

Path

Nối điểm theo thứ tự

🎮 Demo Thử

Chọn loại captcha và bấm nút bên dưới để thử nghiệm:

✓ Token nhận được:

🔒 Tính Năng Bảo Mật

🔍 Fingerprint Check

Thu thập 13+ thuộc tính trình duyệt (screen, WebGL, canvas, audio, fonts...) để xác minh client thật.

🤖 Anti-Selenium

Detect WebDriver, automation properties, headless browser clues (SwiftShader, Chrome DevTools Protocol).

🖱️ Mouse Entropy

Phân tích chuyển động chuột - bot thường có entropy thấp do di chuyển quá đều.

📖 Hướng Dẫn Tích Hợp Chi Tiết Cho Website Client

Bước 1: Nạp Widget vào giao diện UI

Thêm mã thẻ lệnh nạp hệ thống Captcha Bảo vệ vào trước thẻ </body> hoặc khu vực bạn định sử dụng, đi kèm với 1 thẻ <div> rỗng để dựng vị trí hiển thị Captcha.

<!-- Tạo vùng chứa vị trí nút bấm Captcha -->
<div id="captcha-container"></div>

<!-- Gọi script widget đã được mã hóa siêu an toàn -->
<script src="https://your-server.com/widget.min.js"></script>
Bước 2: Hiển thị và Bắt Sự Kiện Giải Mật Mã

Chạy lệnh Javascript này ở file riêng của bạn hoặc gán vào sự kiện window.onload. Ngay lúc này, Nút "Tôi không phải robot" sẽ xuất hiện tại vị trí thẻ Div đã chọn.

let myCaptchaToken = null;

const captcha = new ServerCaptcha({
  siteKey: 'your-api-key',              // API KEY được cung cấp để nhận diện trang web của bạn
  container: '#captcha-container',      // Khớp với Selector (ID thẻ div)
  serverUrl: 'https://your-server.com', // Host chứa Server Captcha
  
  onSuccess: (token) => {
    // 🎯 CHÚC MỪNG MÀN GIẢI MÃ THÀNH CÔNG!
    // User của bạn đã chứng minh được thân phận. Họ được cấp 1 phiếu Validation.
    console.log('Xác minh thân phận (Token):', token);
    
    // Bạn ghi nhớ lệnh Token vào một input ẩn để nạp vào Form đăng ký/đăng nhập:
    document.getElementById('hiddenTokenInput').value = token;
  },

  onError: (err) => {
    // Lỗi khi gặp sự cố ngắt kết nối hoặc Client độc hại bị cấm truy cập
    console.error('Lỗi Captcha Error:', err);
  }
});
Bước 3: Máy chủ của Client kiểm chứng lại (Verify)

Người dùng ấn nút gửi Form trên Website lên Máy chủ của bạn chứa luôn biến hiddenTokenInput. NHƯNG đừng tin lời Frontend, Máy chủ (NodeJS/PHP) của bạn bắt buộc phải mang tấm vé Token trên gọi lại sang Captcha Server để Verify chép!

// Gửi Token mà Client submit form lên, gọi HTTP POST đến Server Captcha (Server-to-Server)
const response = await fetch('https://your-server.com/api/v1/token/verify', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ token: received_token_tu_client })
});

const data = await response.json();
if (data.valid === true) {
  // ✅ DUYỆT CẤP PHÉP. Bot xịn đi qua thành công.
  // Ghi log db, tạo tài khoản, trả về phản hồi tuỳ ý.
} else {
  // ❌ NGHI VẤN HACK. Token hết hạn 5 phút / dùng 2 lần / giả mạo / giải sai. NGĂN CHẶN!
}