Giải reCAPTCHA v2 qua API không cần gửi bất kỳ cookie trình duyệt nào — CaptchaAI tạo token hợp lệ chỉ từ sitekey và pageurl. Nhưng nếu automation của bạn còn phải lái cả trình duyệt thật (Selenium, Puppeteer) qua luồng đăng nhập, cookie lại quyết định phần lớn điểm rủi ro: xóa sạch cookie hoặc mở tab ẩn danh là cách nhanh nhất khiến reCAPTCHA v2 bắt chọn ảnh liên tục và reCAPTCHA v3 rớt điểm xuống dưới 0,3. Bài viết này liệt kê từng cookie reCAPTCHA sử dụng, cách phiên trình duyệt ảnh hưởng đến điểm số, và cách quản lý cookie đúng khi build automation.
Các lỗi cookie thường gặp và cách xử lý
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
| reCAPTCHA v2 luôn hiện challenge hình ảnh | Không có cookie phiên, độ tin cậy thấp | Duy trì cookie qua các lần request |
| Điểm reCAPTCHA v3 luôn < 0,3 | Phiên mới mỗi lần chạy | Giữ cookie jar giữa các lần chạy |
| Token dùng được một lần rồi thất bại khi retry | Cookie phiên không khớp | Dùng cùng một phiên cho cả tải trang và submit |
| Lỗi "Cookie/session validation failed" | Site kiểm tra chuỗi cookie | Dùng cách chèn token qua trình duyệt |
| Widget reCAPTCHA không tải | Cookie bên thứ ba bị chặn | Cho phép cookie từ google.com |
Danh sách cookie reCAPTCHA dùng để theo dõi phiên
reCAPTCHA đặt và đọc ba nhóm cookie khác nhau. Hiểu rõ từng nhóm giúp bạn debug nhanh khi điểm số bất thường:
- Cookie riêng của reCAPTCHA (
_GRECAPTCHA,rc::) - Cookie tài khoản Google (
SID,HSID,NID...) - Cookie bên thứ ba (
CONSENT,AEC,SOCS)
Cookie riêng của reCAPTCHA
| Cookie | Tên miền | Mục đích | Thời gian sống |
|---|---|---|---|
_GRECAPTCHA |
.google.com |
Trạng thái reCAPTCHA dùng chung nhiều site | 6 tháng |
rc::a |
Site đích | Dữ liệu phân tích rủi ro (canvas, hash hành vi chuột) | Theo phiên |
rc::b |
Site đích | Dữ liệu phân tích rủi ro (tín hiệu hành vi) | Theo phiên |
rc::c |
Site đích | Dữ liệu phân tích rủi ro (thời gian thao tác) | Theo phiên |
rc::d-15# |
Site đích | Duy trì trạng thái thử thách | Theo phiên |
Cookie tài khoản Google và cookie bên thứ ba
Cả hai đều đặt trên .google.com; nhóm tài khoản ảnh hưởng trực tiếp đến điểm, nhóm đồng ý chỉ mang tính hỗ trợ:
| Cookie | Loại | Mục đích | Tác động điểm số |
|---|---|---|---|
SID |
Tài khoản | ID phiên Google | +0,1 đến +0,3 |
HSID |
Tài khoản | ID phiên chỉ dùng HTTP | Một phần độ tin cậy phiên |
SSID |
Tài khoản | ID phiên bảo mật | Một phần độ tin cậy phiên |
NID |
Tài khoản | Tùy chọn Google / phiên | +0,05 đến +0,1 |
1P_JAR |
Tài khoản | Cá nhân hóa quảng cáo Google | Tín hiệu tin cậy nhỏ |
CONSENT |
Đồng ý | Trạng thái đồng ý cookie | Không trực tiếp |
AEC |
Đồng ý | Cookie quảng cáo được mã hóa | Không trực tiếp |
SOCS |
Đồng ý | Cài đặt đồng ý cookie | Không trực tiếp |
Vì sao phiên trình duyệt mới luôn bị chấm điểm thấp hơn
Khác biệt nằm ở lịch sử cookie ghi lại, không phải hành vi hiện tại.
Phiên mới, chưa có cookie
New browser session, all cookies cleared
↓
reCAPTCHA JavaScript loads
↓
No _GRECAPTCHA → First-time visitor signal
No SID/HSID → No Google account trust
No rc:: cookies → No behavioral history
↓
Starting risk score: lower baseline (0.3-0.5 for v3)
↓
Behavioral analysis must compensate for lack of history
↓
Result: More likely to receive visible challenge (v2)
Lower score (v3)
Không có lịch sử nào để đối chiếu, hệ thống chấm điểm rủi ro ở baseline thấp và thiên về hiển thị challenge.
Phiên quay lại, đã có cookie
Existing browser session with cookies
↓
reCAPTCHA JavaScript loads
↓
_GRECAPTCHA found → Returning visitor
SID/HSID found → Google account trust
rc:: cookies found → Previous behavioral data
↓
Starting risk score: higher baseline (0.5-0.7 for v3)
↓
Behavioral analysis reinforces cookie-based trust
↓
Result: More likely to auto-pass (v2)
Higher score (v3)
Cookie _GRECAPTCHA và rc:: cho thấy bạn từng vượt qua kiểm tra, nên baseline cao hơn và v2 thường tự pass.
Chrome bỏ cookie bên thứ ba ảnh hưởng gì đến reCAPTCHA
Google đã điều chỉnh ra sao
- reCAPTCHA v3 và Enterprise ưu tiên thực thi JavaScript bên thứ nhất
- Cookie đang chuyển sang lưu trữ
Partitioned(CHIPS) - Cookie
rc::vốn đã là bên thứ nhất (đặt trên domain của site đích)
Tác động thực tế đến automation
- Gần như không ảnh hưởng đến việc giải qua API — CaptchaAI tạo token phía server, không phụ thuộc cookie trình duyệt
- Automation chạy trình duyệt thật có thể thấy điểm dao động nhẹ khi Google đổi chiến lược cookie
Tự động lưu và tái sử dụng cookie giữa các lần chạy
Với automation chạy lặp lại — pipeline CI, job scraping theo lịch — cookie cần được lưu lại giữa các lần chạy, không tạo mới mỗi lần.
Ví dụ thực tế: một đội QA automation tại một công ty outsourcing ở TP.HCM chạy pipeline CI kiểm thử đăng nhập mỗi đêm trong container Docker mới hoàn toàn — gần một nửa số lần chạy bị chặn bởi challenge hình ảnh vì cookie luôn bị xóa sạch. Sau khi gắn volume lưu cookie giữa các lần chạy (kiểu CookieManager bên dưới), tỷ lệ bị challenge giảm rõ rệt vì mỗi lần chạy được xem như một phiên quay lại.
Chiến lược 1: duy trì cookie qua nhiều request (Python)
Lưu cookie xuống đĩa sau mỗi request và nạp lại ở lần chạy sau:
import requests
import pickle
import os
class CookieManager:
"""Manage cookies for reCAPTCHA sessions."""
def __init__(self, cookie_file="cookies.pkl"):
self.cookie_file = cookie_file
self.session = requests.Session()
self.load_cookies()
def load_cookies(self):
"""Load cookies from disk if they exist."""
if os.path.exists(self.cookie_file):
with open(self.cookie_file, "rb") as f:
self.session.cookies = pickle.load(f)
def save_cookies(self):
"""Save cookies to disk for next session."""
with open(self.cookie_file, "wb") as f:
pickle.dump(self.session.cookies, f)
def visit_page(self, url):
"""Visit a page to collect cookies."""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/120.0.0.0 Safari/537.36",
}
response = self.session.get(url, headers=headers, timeout=15)
self.save_cookies()
return response
def get_recaptcha_cookies(self):
"""Get cookies relevant to reCAPTCHA."""
relevant = {}
for cookie in self.session.cookies:
if cookie.name in ["_GRECAPTCHA", "SID", "HSID", "SSID", "NID"]:
relevant[cookie.name] = {
"value": cookie.value[:20] + "...",
"domain": cookie.domain,
"expires": cookie.expires,
}
if cookie.name.startswith("rc::"):
relevant[cookie.name] = {
"value": cookie.value[:20] + "...",
"domain": cookie.domain,
}
return relevant
# Usage
cm = CookieManager("recaptcha_session.pkl")
cm.visit_page("https://staging.example.com/qa-login") # Build cookies
print(cm.get_recaptcha_cookies())
Chiến lược 2: chuyển cookie vào Selenium
Xuất cookie ra JSON rồi nạp lại vào phiên Selenium mới:
from selenium import webdriver
import json
def setup_cookies(driver, cookie_file="selenium_cookies.json"):
"""Load and apply saved cookies to a Selenium session."""
if not os.path.exists(cookie_file):
return
with open(cookie_file, "r") as f:
cookies = json.load(f)
for cookie in cookies:
# Selenium requires the domain to match current page
try:
driver.add_cookie(cookie)
except Exception:
pass # Skip cookies for different domains
def save_cookies(driver, cookie_file="selenium_cookies.json"):
"""Save current cookies for future sessions."""
cookies = driver.get_cookies()
with open(cookie_file, "w") as f:
json.dump(cookies, f)
# Usage
driver = webdriver.Chrome()
driver.get("https://example.com")
setup_cookies(driver) # Apply saved cookies
driver.refresh() # Reload with cookies
# After CAPTCHA solving...
save_cookies(driver) # Save for next run
Chiến lược 3: chuyển cookie vào Puppeteer
Tương tự với Puppeteer, dùng page.setCookie() khi nạp và page.cookies() khi lưu:
const puppeteer = require("puppeteer");
const fs = require("fs");
async function manageCookies(page, cookieFile = "cookies.json") {
// Load cookies if file exists
if (fs.existsSync(cookieFile)) {
const cookies = JSON.parse(fs.readFileSync(cookieFile));
await page.setCookie(...cookies);
}
// Save cookies after page interaction
const saveCookies = async () => {
const cookies = await page.cookies();
fs.writeFileSync(cookieFile, JSON.stringify(cookies, null, 2));
};
return { saveCookies };
}
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
const { saveCookies } = await manageCookies(page);
await page.goto("https://staging.example.com/qa-login");
// ... solve CAPTCHA ...
await saveCookies();
await browser.close();
})();
CaptchaAI có cần cookie trình duyệt để giải reCAPTCHA không?
Không, với phần lớn site. Khi bạn gửi task tới CaptchaAI, bộ giải tạo token trong môi trường riêng của nó — trang đích chỉ xác thực token, không kiểm tra cookie trình duyệt của bạn. Một số ít site bảo mật cao là ngoại lệ, xem phần dưới.
Cookie trình duyệt chỉ liên quan trong hai trường hợp:
- Automation lái trình duyệt thật (Selenium, Puppeteer) qua luồng đăng nhập
- Site đích xác thực chuỗi cookie phiên khi nhận token
Tích hợp thuần API có thể bỏ qua phần quản lý cookie bên dưới.
reCAPTCHA tiêu chuẩn: chỉ cần sitekey và pageurl
Không cần chuyển cookie. CaptchaAI tạo token hợp lệ chỉ bằng sitekey và pageurl:
import requests
import time
API_KEY = "YOUR_API_KEY"
# Standard solve — no cookies needed
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "SITE_KEY",
"pageurl": "https://staging.example.com/qa-login",
"json": 1,
})
Khi site kiểm tra cả chuỗi cookie phiên
Một số site bảo mật cao (ngân hàng, cổng thanh toán, hệ thống nội bộ doanh nghiệp) xác thực rằng phiên gửi token khớp với phiên đã tải widget reCAPTCHA. Với các site này, quy trình gồm 5 bước:
- Tải trang bằng trình duyệt thật để thiết lập cookie
- Trích xuất sitekey từ trang đã tải
- Gửi sitekey và pageurl tới CaptchaAI
- Chèn token trả về vào đúng phiên trình duyệt đó
- Gửi form từ trình duyệt (giữ nguyên chuỗi cookie)
Bước 4 hay bị bỏ sót — chèn sai session khiến site báo lỗi dù token hợp lệ.
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import time
API_KEY = "YOUR_API_KEY"
# Step 1: Load page in real browser (establishes cookies)
driver = webdriver.Chrome()
driver.get("https://secure-site.com/login")
# Step 2: Extract sitekey
widget = driver.find_element(By.CSS_SELECTOR, "[data-sitekey]")
sitekey = widget.get_attribute("data-sitekey")
# Step 3: Solve via CaptchaAI
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": driver.current_url,
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
token = result["request"]
break
# Step 4: Inject token into browser session (same cookies)
driver.execute_script(
f'document.getElementById("g-recaptcha-response").value = "{token}";'
)
# Step 5: Submit form from same browser session
driver.find_element(By.CSS_SELECTOR, "form").submit()
Câu hỏi thường gặp
Tôi có cần gửi cookie trình duyệt cho CaptchaAI không?
Không. CaptchaAI tạo token trong môi trường tối ưu riêng và không cần cookie của bạn — chỉ cần sitekey và pageurl. Token trả về gửi được từ bất kỳ client nào, kể cả khi client đó chưa từng mở trang đích.
Cookie _GRECAPTCHA và rc:: sống được bao lâu?
Thời gian sống khác nhau theo loại:
_GRECAPTCHA: 6 thángrc::(theo phiên): hết hạn khi đóng trình duyệtSID/HSID: 2 năm, nhưng Google có thể vô hiệu hóa bất kỳ lúc nào
Với automation dài hạn, lưu cookie xuống đĩa và làm mới định kỳ bằng cách ghé lại site đích.
Có thể dùng chung một bộ cookie cho nhiều thread chạy song song không?
Không nên. Với trình duyệt thật, mỗi thread trong gói CaptchaAI (ví dụ BASIC $15/tháng, 5 thread) nên có phiên cookie riêng — cùng một cookie rc:: chạy song song trên nhiều máy/IP là tín hiệu bất thường. Giải qua API không bị ảnh hưởng vì mỗi request độc lập với cookie trình duyệt.
reCAPTCHA v3 báo score thấp dù pipeline đã lưu cookie, nguyên nhân do đâu?
Cookie chỉ là một phần của điểm số. Nếu fingerprint, IP hoặc hành vi chuột/bàn phím vẫn giống bot dù cookie đã tồn tại, điểm vẫn thấp. Kiểm tra thêm user-agent và việc dùng chung một dải IP cho quá nhiều phiên trước khi kết luận do cookie.
reCAPTCHA Enterprise xử lý cookie có khác reCAPTCHA v2 không?
Có: Enterprise và v3 ưu tiên JavaScript bên thứ nhất thay vì cookie bên thứ ba như v2 kiểu cũ. Với automation qua API, điều này không đổi cách dùng CaptchaAI — vẫn gửi sitekey/pageurl và nhận token. Nhưng nếu tự chấm điểm qua trình duyệt thật, môi trường bên thứ nhất nhạy với dấu hiệu tự động hóa hơn.
Tóm tắt
reCAPTCHA dùng ba nhóm cookie để chấm điểm rủi ro, nhưng phần lớn automation qua API không cần đụng đến chúng. Ba điều cần nhớ:
- Giải qua API: không cần cookie, chỉ cần
sitekeyvàpageurl— CaptchaAI tạo token trong môi trường riêng của nó - Automation lái trình duyệt thật: phiên mới không cookie cho điểm thấp hơn, dễ gặp challenge (v2) hoặc score thấp (v3) hơn phiên đã có
_GRECAPTCHA/rc:: - Site kiểm tra chuỗi cookie phiên: tải trang thiết lập cookie, giải qua CaptchaAI, chèn token, rồi submit từ cùng phiên trình duyệt đó
Bài viết liên quan
- Giải callback của reCAPTCHA v2 qua API
- Xử lý reCAPTCHA v2 và Turnstile trên cùng một site
- Cơ chế callback của reCAPTCHA v2