Trường Hợp Sử Dụng

Kiểm thử QA cho CAPTCHA trên trang bán lẻ của bạn

Phạm vi an toàn: Nội dung dưới đây chỉ dành cho môi trường QA, staging hoặc pre-production do bạn sở hữu hoặc được uỷ quyền.

Đừng tắt CAPTCHA trên staging để bộ test chạy xanh — hãy dạy bộ test tự lấy token. Tắt widget là bạn đang kiểm thử một cửa hàng không bao giờ được deploy, và lỗi ghép nhầm sitekey staging với secret production chỉ lộ ra khi khách hàng thật bấm nút đặt hàng.

Cách còn lại gọn hơn: giữ widget đúng như production rồi ghép bốn bước vào bộ test. CaptchaAI giải được nhóm widget hay gặp trong luồng bán lẻ — reCAPTCHA v2/v3, Cloudflare Turnstile và Challenge, GeeTest v3, CAPTCHA ảnh/OCR và grid-image.

Bốn bước để bộ test tự lấy token

  1. Mở trang staging bằng Playwright hoặc Selenium, chờ widget render rồi đọc sitekey và URL trang.
  2. Gửi task kèm sitekey và pageurl, nhận về ID task.
  3. Polling kết quả tới khi có token, kèm timeout và backoff.
  4. Đặt token vào field ẩn rồi submit như một phiên người dùng thật.

Thứ tự giữ nguyên với mọi widget, chỉ khác tham số: reCAPTCHA v2, Cloudflare Turnstile, GeeTest v3.

Dựng staging: widget CAPTCHA nằm ở đâu, SKU giả lập ra sao

Widget thường nằm ở ba chỗ: đăng nhập (reCAPTCHA v2 hoặc Turnstile), lọc danh mục (CAPTCHA ảnh/OCR) và thanh toán (reCAPTCHA v2 Invisible). Hỏng ở đăng nhập là nặng nhất: mất phiên thì case phía sau đỏ theo.

Bộ test chỉ an toàn khi không chạm hàng hoá thật: SKU có tiền tố QA- để log lọc được ngay, giá tròn số cho dễ assert, tồn kho cố định. Với đội e-commerce Việt Nam, lịch regression checkout dày nhất rơi vào trước 9.9 và 11.11 — thiếu bước lấy token là lần chạy nào cũng kẹt. Chưa có API key thì bắt đầu từ hướng dẫn bắt đầu nhanh.

Ví dụ Python cho pipeline CI

Luồng tối thiểu dưới đây gửi task rồi đọc kết quả; API key và URL staging nạp từ biến môi trường.

import os
import requests

API_KEY = os.environ['CAPTCHAAI_KEY']
QA_PAGE_URL = os.environ['QA_PAGE_URL']  # ví dụ https://staging.example.com/qa-login
QA_SITE_KEY = os.environ['QA_SITE_KEY']


def submit_qa_recaptcha() -> str:
    payload = {
        'clientKey': API_KEY,
        'task': {
            'type': 'NoCaptchaTaskProxyless',
            'websiteURL': QA_PAGE_URL,
            'websiteKey': QA_SITE_KEY,
        },
    }
    response = requests.post(
        'https://api.captchaai.com/createTask',
        json=payload,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()['taskId']


def fetch_qa_result(task_id: str) -> dict:
    payload = {'clientKey': API_KEY, 'taskId': task_id}
    response = requests.post(
        'https://api.captchaai.com/getTaskResult',
        json=payload,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()

Gọi fetch_qa_result trong vòng lặp có timeout rồi đặt token vào form.

Backend staging mới là nơi phán quyết

Có token chưa phải là test đã pass. Phép kiểm tra thật sự là backend staging verify token bằng secret của chính môi trường đó rồi trả về order_id mô phỏng. Nếu backend từ chối trong khi token vẫn còn hạn, gần như luôn là lệch cấu hình: sai cặp sitekey/secret hoặc lệch action name.

Log có cấu trúc cho từng lần chạy

Mỗi lần chạy nên để lại log đủ để tuần sau còn chẩn đoán: thời gian lấy token, mã trạng thái HTTP, ID task, độ sâu hàng đợi. Tách staging và pre-production thành kênh riêng, và giữ log tối giản dữ liệu cá nhân — tài khoản giả lập, không copy dữ liệu khách hàng sang staging, đúng tinh thần Nghị định 13/2023/NĐ-CP.

Lỗi CAPTCHA hay gặp và cách xử lý

Vấn đề Nguyên nhân thường gặp Cách xử lý
Không thấy widget Selector đổi hoặc load chậm Kiểm tra wait_for_selector
ERROR_NO_SLOT_AVAILABLE Hàng đợi đầy tạm thời Thử lại kèm backoff
Backend từ chối token Lệch sitekey hoặc secret Đối chiếu cấu hình staging
Token hết hạn Bước điền form quá dài Lấy token sát lúc submit

Tính số thread trước khi chọn gói

CaptchaAI tính tiền theo thread (luồng giải đồng thời), không theo từng lần giải, nên thứ cần ước lượng là số job CI chạy song song lúc cao điểm. Pipeline tuần tự chạy đêm thường vừa gói BASIC ($15/tháng, 5 thread); nhiều nhánh cùng chạy thì STANDARD ($30/tháng, 15 thread) sát hơn. Giá tính bằng USD.

Câu hỏi thường gặp

Có nên bật CAPTCHA trên staging giống hệt production không?

Nên. Chỉ khi widget và luồng verify khớp production thì kết quả test mới có ý nghĩa; staging dùng cặp sitekey/secret riêng.

CaptchaAI có giải hCaptcha ở bước thanh toán không?

Không. hCaptcha và FunCaptcha (Arkose Labs) hiện không được hỗ trợ; GeeTest v4 mới ở dạng sắp ra mắt.

Token lấy về dùng được trong bao lâu?

Hãy coi như chỉ vài phút. Lấy token ngay trước bước submit thay vì ở đầu test case.

Bộ test này có chạm vào đơn hàng thật không?

Không, nếu giữ hai ranh giới: domain staging của bạn (staging.example.com) và SKU giả lập.

Đọc thêm

Xác thực tích hợp CAPTCHA của cửa hàng bạn với CaptchaAI.

Os comentários estão desativados para este artigo.