Thấy trang mục tiêu đổi từ api.js sang enterprise.js? Request giải chỉ cần thêm enterprise=1. Phần còn lại — sitekey, pageurl, polling kết quả, đặt token vào form — giữ nguyên.
Khác biệt lớn nằm ở phía chủ website: Enterprise là bản trả phí trên Google Cloud, thêm mã lý do (reason codes), ngưỡng rủi ro theo từng action và tính năng bảo vệ tài khoản.
Vì sao một site chuyển sang Enterprise
| Lý do nâng cấp | Thứ thay đổi trên site |
|---|---|
| Tích hợp WAF | reCAPTCHA nối thẳng vào WAF của Cloudflare/Akamai |
| Phân tích chi tiết | Dashboard hiển thị xu hướng rủi ro và mẫu tấn công |
| Quy tắc riêng | Mỗi action một ngưỡng điểm khác nhau |
| Tuân thủ | SLA doanh nghiệp và tùy chọn nơi lưu trữ dữ liệu |
| Bảo vệ tài khoản | Phát hiện rò rỉ mật khẩu và chiếm đoạt tài khoản |
Tất cả nằm ở tầng quyết định: thử thách không khó hơn, site chỉ khắt khe hơn khi đọc điểm.
Bảng so sánh Standard và Enterprise
| Tính năng | Standard | Enterprise |
|---|---|---|
| Giá | Miễn phí (tối đa 1 triệu assessment/tháng) | $1 cho mỗi 1.000 assessment (1K–100K/tháng), trên mức đó tính bậc |
| Phạm vi điểm | 0,0–1,0 | 0,0–1,0 |
| Mã lý do | Không | Có (AUTOMATION, UNEXPECTED_ENVIRONMENT, v.v.) |
| Ngưỡng tùy chỉnh | Không (tự đặt trong code) | Có (cấu hình theo từng action trong console) |
| Quản lý theo project | Không | Có (Google Cloud Console) |
| Endpoint API | siteverify |
recaptchaenterprise.googleapis.com |
| Phát hiện rò rỉ mật khẩu | Không | Có |
| Account Defender | Không | Có |
| Xác thực đa yếu tố | Không | Có (qua tích hợp WAF) |
| Hỗ trợ v2 | Có | Có |
| Hỗ trợ v3 | Có | Có |
Điểm số thì giống nhau, mã lý do thì không
Cả hai trả về điểm 0,0–1,0; khác nhau ở ngữ cảnh đi kèm. Phản hồi Standard rất gọn:
{
"success": true,
"score": 0.7,
"action": "login",
"challenge_ts": "2024-01-15T12:00:00Z",
"hostname": "example.com"
}
Enterprise trả về cấu trúc lồng nhau, tách token khỏi phần phân tích rủi ro:
{
"tokenProperties": {
"valid": true,
"action": "login",
"createTime": "2024-01-15T12:00:00Z",
"hostname": "example.com"
},
"riskAnalysis": {
"score": 0.7,
"reasons": ["LOW_CONFIDENCE_SCORE"],
"extendedVerdictReasons": []
},
"event": {
"token": "...",
"siteKey": "...",
"expectedAction": "login"
}
}
Mảng reasons cho site biết vì sao điểm như vậy, nên backend xử lý theo nhiều mức thay vì chỉ chặn hoặc cho qua. JSON này nằm ở server của site; phía script, kết quả vẫn chỉ là token g-recaptcha-response.
Nhận biết Enterprise ngay trên trang
Bốn dấu hiệu là đủ:
| Dấu hiệu | Standard | Enterprise |
|---|---|---|
| URL script | google.com/recaptcha/api.js |
google.com/recaptcha/enterprise.js |
| Hàm thực thi | grecaptcha.execute() |
grecaptcha.enterprise.execute() |
| API xác minh | Endpoint siteverify |
recaptchaenterprise.googleapis.com |
| Console quản trị | reCAPTCHA admin console | Google Cloud Console |
Kiểm tra thẻ script trong source:
// Standard
<script src="https://www.google.com/recaptcha/api.js?render=SITEKEY"></script>
// Enterprise
<script src="https://www.google.com/recaptcha/enterprise.js?render=SITEKEY"></script>
- Đưa bước tìm chuỗi
enterprise.jsvào smoke test hằng ngày. - Cảnh báo ngay khi chuỗi đổi: thẻ script đổi trước, job giải báo lỗi sau.
Gửi task giải bằng CaptchaAI
CaptchaAI hỗ trợ cả v2 và v3, Standard lẫn Enterprise. Với reCAPTCHA v3 Standard:
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha", "version": "v3",
"googlekey": SITEKEY, "action": "login", "pageurl": URL, "json": 1
})
Bản Enterprise — thêm đúng một dòng:
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha", "version": "v3",
"enterprise": 1, # Only difference
"googlekey": SITEKEY, "action": "login", "pageurl": URL, "json": 1
})
Với reCAPTCHA v2 bản Standard:
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"googlekey": SITEKEY, "pageurl": URL, "json": 1
})
Và v2 bản Enterprise:
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"enterprise": 1,
"googlekey": SITEKEY, "pageurl": URL, "json": 1
})
- Phần còn lại giữ nguyên: nhận ID task, polling
res.php, đặt token vào form. - CaptchaAI tính giá theo thread (luồng giải đồng thời), không theo lần giải.
- Không có phụ phí theo loại CAPTCHA: gói BASIC ($15/tháng, 5 thread) chạy Enterprise y hệt Standard.
Tình huống thực tế: đội QA thương mại điện tử ở TP.HCM
Đội bạn theo dõi giá và tồn kho cho danh mục sản phẩm của chính công ty trên vài sàn trong nước. Sáng thứ Hai, tỷ lệ lỗi tăng vọt ở đúng một nguồn. Quy trình chẩn đoán:
- Mở trang bằng trình duyệt có giao diện, xem source, kiểm tra
api.jshayenterprise.js. - Nếu là
enterprise.js, lấy lại sitekey — key Enterprise tạo trong Google Cloud Console nên chắc chắn đã đổi. - Thêm
enterprise: 1vào request tớiin.php, đối chiếuactionvới giá trị trang truyền vàogrecaptcha.enterprise.execute(). - Chạy lại một lô nhỏ trên staging trước khi bật toàn bộ job.
Đội outsourcing chạy nhiều crawler nên ghi log thời điểm đổi script — dữ liệu này có ích cho hồ sơ tuân thủ theo Nghị định 13/2023/NĐ-CP.
Câu hỏi thường gặp
Enterprise có phải là một phiên bản khác của reCAPTCHA v3 không?
Không. Enterprise là gói sản phẩm, không phải phiên bản: cả v2 lẫn v3 đều có bản Enterprise, nên giữ nguyên version rồi thêm enterprise=1.
Điểm 0,3 trên Enterprise có nghĩa là request bị chặn không?
Chưa chắc. Ngưỡng do chủ site đặt theo từng action: 0,3 có thể bị chặn ở luồng đăng nhập nhưng vẫn qua ở tìm kiếm.
Site đổi sang Enterprise thì code của tôi hỏng ở chỗ nào?
Thường là hai chỗ: sitekey cũ hết hiệu lực và request thiếu cờ enterprise=1. Biểu hiện giống nhau — có token nhưng form bị từ chối — nên kiểm tra sitekey trước.