Trình duyệt có cookie Google còn mới thường chỉ cần nhấn checkbox là qua; trình duyệt trống trơn hoặc chạy ở chế độ ẩn danh gần như luôn bị hỏi thêm vài vòng ảnh. Lý do nằm ở cookie: reCAPTCHA đọc và ghi một loạt cookie để chấm điểm rủi ro trước khi quyết định độ khó thử thách. Biết chính xác cookie nào đang được dùng — và giữ chúng đúng cách giữa các lần chạy — quyết định pipeline automation của bạn chạy êm hay liên tục dính thử thách khó.
Trả lời nhanh: cần làm gì với cookie khi tự động hóa reCAPTCHA
- Giữ cookie Google (
NID,1P_JAR…) và cookie của trang đích giữa các lần chạy — đừng để trình duyệt automation luôn khởi động sạch. - Bảo toàn các mục
rc::trong localStorage cùng lúc với cookie, vì reCAPTCHA dùng localStorage làm phương án dự phòng khi cookie bên thứ ba bị chặn. - Không chạy automation có reCAPTCHA ở chế độ ẩn danh — chế độ này xóa sạch cả hai loại dữ liệu mỗi phiên.
- Gọi CaptchaAI qua API thuần, không dựng trình duyệt, thì cookie không bắt buộc — chỉ cần đính kèm nếu trang đích yêu cầu giữ phiên đăng nhập.
Giữ cookie reCAPTCHA khi chạy tự động hóa
Với Playwright/Puppeteer, trình duyệt tự xử lý cookie
Automation chạy qua trình duyệt thật đã tự quản lý cookie sẵn. Việc bạn cần làm là giữ chúng lại giữa các lần chạy thay vì để mỗi phiên khởi động sạch:
# Save cookies after session
cookies = page.context.cookies()
import json
with open("cookies.json", "w") as f:
json.dump(cookies, f)
# Restore cookies in next session
with open("cookies.json") as f:
cookies = json.load(f)
page.context.add_cookies(cookies)
Với CaptchaAI khi chỉ gọi API, không chạy trình duyệt
Khi gửi task cho CaptchaAI mà không dựng trình duyệt, cookie của bạn không ảnh hưởng trực tiếp đến việc giải — CaptchaAI tự quản lý môi trường giải riêng. Bạn chỉ cần đính kèm cookie khi trang đích yêu cầu chúng để giữ phiên đăng nhập liên tục sau khi có token:
POST https://ocr.captchaai.com/in.php
key=YOUR_API_KEY
&method=userrecaptcha
&googlekey=SITE_KEY
&pageurl=https://staging.example.com/qa-login
&cookies=NID=12345;1P_JAR=2026-04-04-12
Tham số cookies là tùy chọn, dùng để gửi thêm ngữ cảnh cho CaptchaAI khi giải.
Cookie nào reCAPTCHA đang đọc và ghi
Cookie miền .google.com
| Cookie | Tên miền | Mục đích | Thời hạn |
|---|---|---|---|
NID |
.google.com |
Tùy chọn cá nhân và ID định danh của Google | 6 tháng |
SID / HSID / SSID |
.google.com |
Phiên đăng nhập tài khoản Google | 2 năm |
APISID / SAPISID |
.google.com |
Xác thực API của Google | 2 năm |
1P_JAR |
.google.com |
Cá nhân hóa quảng cáo Google | 1 tháng |
CONSENT |
.google.com |
Ghi nhận lựa chọn đồng ý cookie | 17 năm |
Cookie riêng của reCAPTCHA
| Cookie | Tên miền | Mục đích | Thời hạn |
|---|---|---|---|
_GRECAPTCHA |
.google.com / .recaptcha.net |
Theo dõi phiên reCAPTCHA | Phiên làm việc |
rc::a |
localStorage | Dữ liệu phân tích rủi ro | Lâu dài |
rc::b |
localStorage | Dấu thời gian thử thách | Phiên làm việc |
rc::c |
localStorage | Dữ liệu riêng của thử thách hiện tại | Phiên làm việc |
rc::d-<id> |
localStorage | Dữ liệu riêng theo từng widget | Phiên làm việc |
Cookie của chính trang bạn đang tự động hóa
Trang chủ nhà (trang chứa widget reCAPTCHA) thường đặt thêm cookie riêng để theo dõi phiên và chống CSRF:
| Loại cookie | Ví dụ | Vì sao liên quan |
|---|---|---|
| Session ID | PHPSESSID, session_id |
Gắn kết quả giải reCAPTCHA với đúng phiên người dùng |
| CSRF token | csrf_token, _token |
Bắt buộc để gửi được form |
| Tracking riêng của site | Tùy trang | Có thể là điều kiện kích hoạt reCAPTCHA |
Cookie quyết định độ khó thử thách reCAPTCHA thế nào
Cookie chỉ là một trong nhiều tín hiệu Google dùng để chấm điểm rủi ro, nhưng là tín hiệu có trọng số cao:
| Trạng thái cookie | Độ khó thử thách | Vì sao |
|---|---|---|
| Đang đăng nhập tài khoản Google | Thấp nhất | Tín hiệu định danh rất mạnh |
| Có cookie Google (chưa đăng nhập) | Thấp–trung bình | Cho thấy lịch sử duyệt web bình thường |
| Trình duyệt mới, không có cookie Google | Trung bình–cao | Không có lịch sử để đánh giá |
| Cookie bị chặn hoặc bị xóa | Cao | Trông đáng ngờ — trình duyệt bình thường luôn có cookie |
| Chế độ ẩn danh / riêng tư | Cao | Không có định danh ổn định để đối chiếu |
Có đủ SID, HSID, NID từ một phiên Google đã đăng nhập, thử thách thường chỉ còn một cú nhấn checkbox. Có NID và 1P_JAR từ việc duyệt web bình thường cũng thường đủ để thử thách nhẹ đi. Một phiên hoàn toàn mới, không cookie Google nào, gần như chắc chắn gặp nhiều vòng ảnh liên tiếp.
localStorage: bản sao lưu khi cookie bị chặn
| Mẫu key | Dữ liệu |
|---|---|
rc::a |
Payload phân tích rủi ro đã mã hóa |
rc::b |
Dấu thời gian của thử thách gần nhất |
rc::c |
Dữ liệu phiên của thử thách hiện tại |
rc::d-<hash> |
Dữ liệu riêng theo từng widget |
Các mục này giúp reCAPTCHA giữ trạng thái qua các lần tải trang mà không cần phụ thuộc cookie bên thứ ba. Trong automation, giữ nguyên localStorage cũng giúp giảm độ khó thử thách tương tự như giữ cookie:
# Save localStorage
storage = page.evaluate("() => JSON.stringify(localStorage)")
with open("localstorage.json", "w") as f:
f.write(storage)
# Restore localStorage
with open("localstorage.json") as f:
storage = f.read()
page.evaluate(f"Object.entries(JSON.parse('{storage}')).forEach(([k,v]) => localStorage.setItem(k,v))")
Vì sao cookie bên thứ ba bị chặn ảnh hưởng đến reCAPTCHA
reCAPTCHA tải trong iframe từ google.com, và trình duyệt hiện đại áp chính sách cookie ngày càng chặt:
| Chính sách trình duyệt | Ảnh hưởng lên reCAPTCHA |
|---|---|
| SameSite=Lax (mặc định) | Cookie của Google mặc định không được gửi kèm trong iframe reCAPTCHA |
| Chặn cookie bên thứ ba | reCAPTCHA tự chuyển sang recaptcha.net hoặc chế độ bên thứ nhất |
| ITP (Safari) | Cookie Google hết hạn nhanh hơn, thử thách khó xuất hiện thường xuyên hơn |
Cách Google né các hạn chế này
- Dùng
recaptcha.netlàm tên miền dự phòng khigoogle.combị chặn. - Dùng
localStorage(các mụcrc::*) để giữ trạng thái phía client thay cho cookie bên thứ ba. - Cung cấp tùy chọn tải script bên thứ nhất (first-party) cho khách hàng reCAPTCHA Enterprise.
Thực tiễn giữ cookie ổn định cho automation reCAPTCHA
| Thực hành | Lợi ích |
|---|---|
| Giữ nguyên hồ sơ trình duyệt giữa các lần chạy | Tích lũy lịch sử duyệt web → thử thách dễ hơn |
| Không xóa cookie giữa các task | Duy trì tính liên tục trong đánh giá rủi ro của Google |
Chuyển sang recaptcha.net khi google.com bị chặn |
Cùng dịch vụ, khác tên miền |
Bảo toàn các mục rc:: trong localStorage |
Giữ trạng thái phiên reCAPTCHA ổn định |
| Thỉnh thoảng ghé các sản phẩm khác của Google | Làm mới hiệu lực của cookie |
Khắc phục lỗi cookie reCAPTCHA thường gặp
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
| Luôn gặp thử thách ảnh khó | Không có cookie / hồ sơ hoàn toàn mới | Xây dựng dần hồ sơ trình duyệt có cookie Google |
| reCAPTCHA báo lỗi "cần cookie" | Cookie bên thứ ba đang bị chặn | Bật cookie cho google.com hoặc chuyển sang recaptcha.net |
| Token hợp lệ nhưng phiên không khớp | Cookie của site (PHPSESSID) chưa được giữ lại |
Lưu và khôi phục toàn bộ cookie, không chỉ cookie Google |
| Vòng lặp thử thách, liên tục đòi thêm ảnh | localStorage bị xóa giữa các lần thử | Bảo toàn các mục rc::* trong localStorage |
Một đội QA tại công ty outsourcing ở TP.HCM chạy test đăng nhập tự động mỗi đêm bằng Playwright. Ban đầu mỗi lần CI khởi động trình duyệt hoàn toàn sạch, nên reCAPTCHA gần như lần nào cũng đẩy ra thử thách ảnh nhiều vòng, kéo dài pipeline. Sau khi đổi sang lưu cookies.json và các mục rc:: giữa các lần chạy theo đúng cách ở trên, phần lớn lượt chạy chỉ còn cần nhấn checkbox. Đội cũng ghi rõ trong tài liệu tuân thủ việc lưu cookie phiên QA này, vì Nghị định 13/2023/NĐ-CP yêu cầu ghi nhận dữ liệu nào được lưu và trong bao lâu, kể cả trên staging.
Câu hỏi thường gặp về cookie reCAPTCHA
recaptcha.net và google.com có dùng chung cookie không?
Không hoàn toàn. recaptcha.net là tên miền dự phòng khi google.com bị chặn, nhưng cookie đặt theo tên miền nên không tự đồng bộ giữa hai bên — đó là lý do reCAPTCHA còn dựa vào các mục rc:: trong localStorage để giữ trạng thái ổn định.
reCAPTCHA v2 Enterprise có yêu cầu cookie khác reCAPTCHA v2 thường không?
Không khác về bản chất. Enterprise thường có tùy chọn tải script bên thứ nhất để giảm phụ thuộc cookie bên thứ ba, nhưng cơ chế chấm điểm rủi ro dựa trên cookie và localStorage vẫn theo nguyên tắc tương tự reCAPTCHA v2 tiêu chuẩn.
Nhiều phiên trình duyệt tự động hóa chạy song song có nên dùng chung một hồ sơ cookie không?
Không nên. Mỗi phiên song song nên có cookie và localStorage riêng để mô phỏng người dùng thật; dùng chung một hồ sơ cho nhiều phiên tạo ra mẫu hành vi bất thường mà công cụ chấm điểm rủi ro dễ nhận ra.
Cookie NID và 1P_JAR có hết hạn không?
Có. Cookie NID của Google tồn tại khoảng 6 tháng, còn 1P_JAR chỉ khoảng 1 tháng. Dùng hồ sơ trình duyệt đó thường xuyên sẽ giúp cookie luôn được làm mới trước khi hết hạn.
Nếu trình duyệt chặn cookie bên thứ ba, localStorage có đủ để giữ độ khó thử thách thấp không?
Một phần. Các mục rc:: giữ lại phần nào trạng thái đánh giá rủi ro, nhưng không thay thế hoàn toàn cookie Google đã đăng nhập. Cách ổn định nhất vẫn là giữ cả cookie lẫn localStorage giữa các lần chạy.
Bài viết liên quan
- Cách giải reCAPTCHA v2 callback bằng API
- Xử lý reCAPTCHA v2 và Turnstile trên cùng một trang
- Cơ chế callback của reCAPTCHA v2
Bước tiếp theo
Giữ cookie và localStorage đúng cách chỉ giải quyết một nửa vấn đề — nửa còn lại là có một API giải ổn định khi thử thách vẫn xuất hiện. Lấy API key CaptchaAI của bạn và gửi task reCAPTCHA v2 kèm ngữ cảnh cookie ngay trong quy trình tự động hóa hiện tại.