reCAPTCHA dựa vào cookie để theo dõi phiên, chấm điểm rủi ro và quản lý trạng thái thử thách. Cookie bị thiếu hoặc xử lý không chính xác sẽ gây ra lỗi giải quyết, điểm thấp và thử thách lặp lại. Hướng dẫn này bao gồm mọi cách sử dụng cookie reCAPTCHA, cách các phiên ảnh hưởng đến việc tính điểm và cách quản lý cookie thực tế để tự động hóa.
Bộ cookie reCAPTCHA và cách sử dụng
cookie dành riêng cho reCAPTCHA
| bánh quy | Tên miền | Mục đích | Trọn đời |
|---|---|---|---|
_GRECAPTCHA |
.google.com |
Trạng thái reCAPTCHA trên nhiều trang web | 6 tháng |
rc::a |
Trang web mục tiêu | Dữ liệu phân tích rủi ro (canvas, băm hành vi chuột) | Phiên |
rc::b |
Trang web mục tiêu | Dữ liệu phân tích rủi ro (tín hiệu hành vi) | Phiên |
rc::c |
Trang web mục tiêu | Dữ liệu phân tích rủi ro (thời gian) | Phiên |
rc::d-15# |
Trang web mục tiêu | Thử thách sự kiên trì của trạng thái | Phiên |
Cookie tài khoản Google (ảnh hưởng đến điểm số)
| bánh quy | Tên miền | Mục đích | Tác động đến điểm số |
|---|---|---|---|
SID |
.google.com |
ID phiên Google | +0,1 đến +0,3 |
HSID |
.google.com |
ID phiên chỉ HTTP | Một phần của phiên tin cậy |
SSID |
.google.com |
ID phiên an toàn | Một phần của phiên tin cậy |
NID |
.google.com |
Tùy chọn Google/session | +0,05 đến +0,1 |
1P_JAR |
.google.com |
Cá nhân hóa quảng cáo Google | Tín hiệu tin cậy nhỏ |
Cookie của bên thứ ba được reCAPTCHA sử dụng
| bánh quy | Tên miền | Mục đích |
|---|---|---|
CONSENT |
.google.com |
Trạng thái đồng ý cookie |
AEC |
.google.com |
Cookie quảng cáo được mã hóa |
SOCS |
.google.com |
Cài đặt đồng ý cookie |
Cookie ảnh hưởng như thế nào đến việc chấm điểm reCAPTCHA
Phiên mới (không 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)
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)
Quản lý cookie trong tự động hóa
Chiến lược 1: Lọ cookie liên tục
Duy trì cookie theo các yêu cầu để tạo dựng sự tin cậy trong phiên:
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 tiếp cookie trong Selenium
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 tiếp cookie trong Puppeteer
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();
})();
Yêu cầu phiên để giải quyết dựa trên API
Khi sử dụng CaptchaAI, bộ giải sẽ tạo mã thông báo trong môi trường riêng của nó. Trang web mục tiêu xác thực mã thông báo mà không kiểm tra cookie của trình duyệt của bạn. Tuy nhiên, một số triển khai bổ sung thêm xác nhận:
reCAPTCHA tiêu chuẩn (hầu hết các trang web)
Không cần chuyển tiếp cookie. CaptchaAI tạo mã thông báo hợp lệ chỉ sử dụ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,
})
Triển khai phụ thuộc vào cookie
Một số trang web có mức độ bảo mật cao xác thực rằng phiên gửi mã thông báo khớp với phiên đã tải tiện ích reCAPTCHA. Trong những trường hợp này:
- Tải trang trong trình duyệt thực để thiết lập cookie
- Trích xuất khóa trang web từ trang đã tải
- Gửi tới CaptchaAI bằng sitekey và pageurl
- Đưa mã thông báo được trả về vào cùng một phiên trình duyệt
- Gửi biểu mẫu từ trình duyệt (duy trì chuỗi cookie)
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()
Tác động chặn cookie của bên thứ ba
Ngừng sử dụng cookie bên thứ ba của Chrome
Chrome đang loại bỏ dần cookie của bên thứ ba. Điều này ảnh hưởng đến reCAPTCHA vì _GRECAPTCHA được đặt trên .google.com và đọc từ ngữ cảnh của bên thứ ba.
Phản hồi của Google:
- reCAPTCHA v3 và Enterprise sử dụng thực thi JavaScript của bên thứ nhất
- Cookie đang chuyển sang bộ lưu trữ
Partitioned(CHIPS) - Cookie
rc::đã là của bên thứ nhất (được đặt trên miền của trang đích)
Tác động đến tự động hóa:
- Tối thiểu. Việc giải quyết dựa trên API không bị ảnh hưởng vì CaptchaAI tạo mã thông báo phía máy chủ.
- Tự động hóa dựa trên trình duyệt có thể thấy những thay đổi nhỏ về điểm số khi Google điều chỉnh chiến lược cookie của mình.
Khắc phục sự cố về cookie
| vấn đề | nguyên nhân | Giải pháp |
|---|---|---|
| reCAPTCHA v2 luôn thể hiện sự thách thức về hình ảnh | Không có cookie phiên, độ tin cậy thấp | Cookie liên tục theo yêu cầu |
| Điểm reCAPTCHA v3 luôn < 0,3 | Phiên mới mỗi lần | Bảo quản lọ bánh quy |
| Mã thông báo hoạt động một lần rồi thử lại không thành công | Cookie phiên không khớp | Sử dụng cùng một phiên để tải và gửi trang |
| "Xác thực Cookie/session không thành công" | Chuỗi cookie kiểm tra trang web | Sử dụng tính năng chèn mã thông báo dựa trên trình duyệt |
| Tiện ích reCAPTCHA không tải | Cookie của bên thứ ba bị chặn | Cho phép cookie google.com |
Câu hỏi thường gặp
Tôi có cần chuyển cookie tới CaptchaAI không?
Không. CaptchaAI tạo mã thông báo trong môi trường được tối ưu hóa của riêng nó và không cần cookie trình duyệt của bạn. Bạn chỉ cần cung cấp sitekey và pageurl. Mã thông báo được tạo có giá trị để gửi từ bất kỳ khách hàng nào.
Cookie có hết hạn và yêu cầu làm mới không?
Vâng. _GRECAPTCHA tồn tại 6 tháng nhưng cookie phiên rc:: sẽ hết hạn khi trình duyệt đóng. Cookie tài khoản Google (SID, HSID) tồn tại 2 năm nhưng có thể bị Google vô hiệu hóa. Để tự động hóa, hãy lưu cookie vào đĩa và làm mới chúng định kỳ bằng cách truy cập trang đích.
Tôi có thể sử dụng cookie từ trình duyệt này sang trình duyệt khác không?
Có, với những hạn chế. Cookie có thể được xuất (dưới dạng JSON hoặc định dạng Netscape) và được nhập vào các yêu cầu, phiên Selenium hoặc Puppeteer. Tuy nhiên, dấu vân tay của trình duyệt sẽ khác nhau và reCAPTCHA có thể phát hiện được điều này. Cookie cung cấp phần thưởng tin cậy nhưng môi trường trình duyệt mới có thể bù đắp cho điều đó.
Tại sao việc xóa cookie khiến reCAPTCHA khó hơn?
Việc xóa cookie sẽ xóa cookie tin cậy _GRECAPTCHA và cookie lịch sử hành vi rc::. reCAPTCHA coi bạn như một khách truy cập hoàn toàn mới, chưa có lịch sử, bắt đầu điểm rủi ro ở mức cơ bản thấp hơn. Đây là lý do tại sao việc duyệt web ẩn danh/private thường gây ra nhiều thử thách CAPTCHA hơn.
Tóm tắt
reCAPTCHA sử dụng cookie để theo dõi phiên (cookie rc::), tin cậy giữa các trang web (_GRECAPTCHA) và liên kết tài khoản Google (SID, HSID). Các phiên mới không có cookie sẽ tạo ra điểm thấp hơn và thử thách khó hơn. Để giải quyết dựa trên API vớiCaptchaAI, không cần phải có cookie — trình giải mã sẽ tạo mã thông báo hợp lệ chỉ bằng cách sử dụng khóa trang và URL trang. Để triển khai phụ thuộc vào cookie, hãy sử dụng phương pháp dựa trên trình duyệt: tải trang (thiết lập cookie), giải quyết thông qua CaptchaAI, chèn mã thông báo và gửi từ cùng một phiên trình duyệt.
bài viết liên quan
- Cách giải quyết cuộc gọi lại Recaptcha V2 bằng Api
- Xử lý cửa quay Recaptcha V2 trên cùng một trang web
- Cơ chế gọi lại Recaptcha V2