Phân Tích Kỹ Thuật

Yêu cầu về cookie reCAPTCHA: Điều gì được đặt và tại sao nó quan trọng

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ó.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

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 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 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

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 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ó NID1P_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.

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))")

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.net làm tên miền dự phòng khi google.com bị chặn.
  • Dùng localStorage (các mục rc::*) để 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 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
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.

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.

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.

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.

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.

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

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.

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