Phân Tích Kỹ Thuật

Cách reCAPTCHA phát hiện tự động hóa và cách hoạt động của bộ giải API

reCAPTCHA sử dụng hệ thống phát hiện nhiều lớp vượt xa hộp kiểm hiển thị hoặc thử thách hình ảnh. Nó chạy một công cụ phân tích hành vi và dấu vân tay phức tạp nhằm xác định các công cụ tự động trước khi người dùng tương tác với CAPTCHA. Hướng dẫn này trình bày chi tiết mọi phương pháp phát hiện mà reCAPTCHA sử dụng và giải thích cách các bộ giải dựa trên API như CaptchaAI xử lý tất cả các phương pháp đó.


Lớp phát hiện 1: Thăm dò môi trường JavaScript

reCAPTCHA thực thi các thăm dò JavaScript để phát hiện các trình duyệt không có giao diện người dùng và các khung tự động hóa.

phát hiện thuộc tính WebDriver chuẩn

Chỉ báo tự động hóa chính:

// Selenium/Puppeteer set this automatically

// Real browser

Khi thuộc tính WebDriver chuẩntrue, reCAPTCHA ngay lập tức gắn cờ phiên là tự động, thường dẫn đến điểm 0,1 hoặc thấp hơn.

Thiếu API trình duyệt

reCAPTCHA thăm dò các API mà trình duyệt không có giao diện người dùng bỏ qua hoặc triển khai theo cách khác:

// Probes reCAPTCHA performs (simplified)
const checks = {
    // Chrome-specific object
    hasChrome: !!window.chrome,
    hasChromeRuntime: !!(window.chrome && window.chrome.runtime),

    // Plugin and MIME type arrays
    pluginCount: navigator.plugins.length,
    mimeTypeCount: navigator.mimeTypes.length,

    // Notification permission
    notificationPermission: Notification.permission,

    // Speech synthesis voices
    speechVoices: window.speechSynthesis.getVoices().length,

    // Performance observer
    hasPerformanceObserver: typeof PerformanceObserver !== "undefined",
};
thăm dò Dự kiến (Chrome thực) Chrome headless Phát hiện
window.chrome Đối tượng không xác định hoặc tối thiểu Tự động hóa
navigator.plugins 2-5 plugin Mảng trống Tự động hóa
navigator.permissions Đối tượng có truy vấn() Có thể ném hoặc mất tích Tự động hóa
Notification.permission "mặc định" Có thể ném Tự động hóa
window.speechSynthesis Đối tượng có giọng nói Trống hoặc thiếu Tự động hóa

Giả mạo chuỗi nguyên mẫu

Các công cụ tự động hóa tinh vi ghi đè API trình duyệt để ẩn sự hiện diện của chúng. kiểm tra reCAPTCHA để phát hiện giả mạo:

// reCAPTCHA may check if native functions were modified
const nativeToString = Function.prototype.toString;
const pluginsToString = navigator.plugins.toString();

// Overridden functions have different toString output:
// Native: "function get plugins() { [native code] }"
// Overridden: "function () { return [...fakePlugins] }"

Lớp phát hiện 2: Dấu vân tay Canvas và WebGL

Vân tay vải

reCAPTCHA hiển thị các phần tử ẩn trên canvas và đọc lại dữ liệu pixel. Kết quả thay đổi tùy theo hệ điều hành, GPU, công cụ hiển thị phông chữ và cài đặt khử răng cưa:

// Simplified đặc trưng canvas
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
ctx.textBaseline = "alphabetic";
ctx.font = "14px Arial";
ctx.fillStyle = "#f60";
ctx.fillRect(125, 1, 62, 20);
ctx.fillStyle = "#069";
ctx.fillText("CaptchaTest,!", 2, 15);

const fingerprint = canvas.toDataURL();
// Unique per browser/OS/GPU combination

Tín hiệu phát hiện:

  • Đã phát hiện thấy cùng một dấu vân tay trên các OS/browsers → giả mạo được báo cáo khác nhau
  • Hoạt động canvas trả về dữ liệu đồng nhất/blank → Môi trường headless
  • Dấu vân tay khớp với mẫu Chrome headless đã biết → Tự động hóa được gắn cờ

Dấu vân tay WebGL

const gl = document.createElement("canvas").getContext("webgl");
const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");

const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);

// Real browser: "ANGLE (NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0)"
// Headless Chrome: "Google Inc. (Google SwiftShader)" ← Strong bot signal

SwiftShader là trình kết xuất GPU phần mềm của Google được sử dụng khi không có sẵn GPU phần cứng — một chỉ báo môi trường headless rõ ràng.


Lớp phát hiện 3: Phân tích hành vi

Đây là lớp phát hiện mạnh nhất của reCAPTCHA. Nó giám sát hành vi của người dùng từ khi tải trang cho đến việc gửi biểu mẫu.

Phân tích chuyển động của chuột

reCAPTCHA records:
  ├─ Mouse coordinates at ~60fps intervals
  ├─ Velocity and acceleration at each point
  ├─ Trajectories between clickable elements
  ├─ Hover patterns over links and buttons
  ├─ Micro-movements while "stationary"
  └─ Natural overshoot when targeting elements

Human pattern:

  - Curved paths with variable speed
  - Natural acceleration/deceleration (Fitts's Law)
  - Random micro-jitter during hovering
  - Occasional overshoot and correction

Bot pattern:

  - Zero mouse events (no mouse simulation)
  - Straight lines at constant speed
  - Perfect targeting (no overshoot)
  - Identical patterns across sessions

Phân tích bàn phím

reCAPTCHA records:
  ├─ Inter-key interval for each key pair
  ├─ Key hold duration (keydown to keyup)
  ├─ Error rate (backspace frequency)
  ├─ Typing rhythm consistency
  └─ Input method (keyboard vs paste vs JavaScript)

Human pattern:

  - Variable intervals (80-300ms typical)
  - Faster for common character pairs
  - Occasional errors and corrections
  - keydown → keypress → keyup sequence

Bot pattern:

  - Constant intervals or instant input
  - No keypress events (value set via JS)
  - Zero errors
  - All characters appear simultaneously

Trình tự thời gian và tương tác

reCAPTCHA records:
  ├─ Time from page load to first interaction
  ├─ Time from CAPTCHA rendering to click
  ├─ Scroll events and depths
  ├─ Focus/blur events on form fields
  └─ Tab between fields vs click between fields

Suspicious patterns:

  - First interaction < 1 second after page load
  - CAPTCHA clicked immediately after rendering
  - No scroll events before interacting with below-fold content
  - All form fields filled in <500ms

Lớp phát hiện 4: Phân tích mạng và IP

Cơ sở dữ liệu danh tiếng IP

Google duy trì thông tin IP sâu rộng:

  • Phạm vi trung tâm dữ liệu đã biết: AWS (52.x.x.x, 54.x.x.x), GCP, Azure, DigitalOcean, v.v.
  • Các nhà cung cấp proxy/VPN proxy đã biết: NordVPN, ExpressVPN, dịch vụ proxy thương mại
  • Các nút thoát Tor: Danh sách công khai, được cập nhật thường xuyên
  • Lịch sử lạm dụng: IP liên quan đến spam, thu thập dữ liệu hoặc tạo CAPTCHA
  • Mẫu địa lý: Gắn cờ thay đổi vị trí nhanh chóng Mẫu bước nhảy VPN

Dấu vân tay TLS

Mỗi máy khách HTTP tạo ra một dấu vân tay bắt tay TLS duy nhất (JA3/JA4):

Chrome 120:    JA3 = 771,4865-4866-4867-49195-49199-49196..
Python/requests: JA3 = 771,4866-4867-4865-49196-49200..
curl/libcurl:  JA3 = 771,49196-49200-159-52393-52392..

reCAPTCHA xác thực rằng dấu vân tay TLS khớp với Tác nhân người dùng đã khai báo. Tác nhân người dùng Chrome có dấu vân tay Python TLS được gắn cờ là tự động hóa.

Phân tích tiêu đề HTTP

Real Chrome headers:
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,...
  Accept-Language: en-US,en;q=0.9
  Accept-Encoding: gzip, deflate, br
  Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120"
  Sec-CH-UA-Platform: "Windows"
  Sec-Fetch-Dest: document
  Sec-Fetch-Mode: navigate

Automation headers (missing or different):

  - Missing Sec-CH-UA headers
  - Missing Accept-Language
  - Non-standard Accept header
  - Missing Sec-Fetch-* headers

Lớp phát hiện 5: Thông tin chéo phiên

reCAPTCHA theo dõi các mẫu trên nhiều phiên và trang web:

  • Tương quan vân tay phiên: Cùng một vân tay trình duyệt thực hiện yêu cầu nhanh chóng trên nhiều trang web
  • Phân tích mẫu giải: Câu trả lời đúng trong khoảng thời gian nhất quán (thời gian giải của con người có thể thay đổi)
  • Mối tương quan giữa phản hồi thử thách: Nhiều phiên giải quyết các thử thách giống nhau trong vòng vài giây
  • Dòng thời gian của cookie: Nhiều phiên mới từ cùng một IP mà không tồn tại cookie

Cách các bộ giải dựa trên API xử lý việc phát hiện

Các bộ giải dựa trên API như CaptchaAI bỏ qua hệ thống phát hiện của reCAPTCHA bằng cách hoạt động trong một môi trường hoàn toàn riêng biệt:

Your automation:
  Extracts sitekey + pageurl from target page
      ↓
  Sends to CaptchaAI API (HTTPS request to ocr.captchaai.com)
      ↓
CaptchaAI's solver environment:
  ├─ Real browser with genuine fingerprint (not headless)
  ├─ Human-like behavioral patterns
  ├─ Clean residential IP
  ├─ Valid cookies and session history
  ├─ Matching TLS/header fingerprints
  └─ Solves the challenge with human-like behavior
      ↓
  Returns valid g-recaptcha-response token
      ↓
Your automation:
  Submits token to target website
      ↓
Target website validates token with Google
  → Google sees a legitimate solve from a trusted environment
  → Token validated: success = true

Thông tin chi tiết quan trọng: Quá trình tự động hóa của bạn không bao giờ tương tác trực tiếp với reCAPTCHA. Bộ giải mã xử lý tất cả dấu vân tay, phân tích hành vi và hoàn thành thử thách trong môi trường được tối ưu hóa để vượt qua mọi lớp phát hiện. Mã của bạn chỉ cần gửi mã thông báo kết quả.

Ví dụ về Python

import requests
import time

API_KEY = "YOUR_API_KEY"

# Your automation only needs sitekey and pageurl
submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": "6LcR_RsTAAAAAN_r0GEkGBfq3L7KmU5JbPHJtwNp",
    "pageurl": "https://staging.example.com/qa-login",
    "json": 1,
})

task_id = submit.json()["request"]

# Poll for token
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"]
        # Submit this token to the target site's form
        print("Token received — submit to target form")
        break

Ví dụ về Node.js

const axios = require("axios");

async function solveRecaptcha(sitekey, pageurl) {
    const API_KEY = "YOUR_API_KEY";

    const { data: submit } = await axios.post(
        "https://ocr.captchaai.com/in.php",
        new URLSearchParams({
            key: API_KEY,
            method: "userrecaptcha",
            googlekey: sitekey,
            pageurl: pageurl,
            json: 1,
        })
    );

    const taskId = submit.request;

    for (let i = 0; i < 60; i++) {
        await new Promise(r => setTimeout(r, 5000));
        const { data: result } = await axios.get(
            "https://ocr.captchaai.com/res.php",
            { params: { key: API_KEY, action: "get", id: taskId, json: 1 } }
        );

        if (result.status === 1) return result.request;
    }

    throw new Error("Timeout");
}

Câu hỏi thường gặp

ReCAPTCHA có thể phát hiện ra rằng bộ giải API đã được sử dụng không?

reCAPTCHA xác thực mã thông báo dựa trên hồ sơ của chính nó. Nếu môi trường của người giải tạo ra một giải pháp hợp pháp có hành vi giống con người thì mã thông báo sẽ hợp lệ. Google nhận thấy giải pháp bình thường của con người chứ không phải dịch vụ của bên thứ ba. Bản thân mã thông báo không mang thông tin về cách nó được tạo.

Việc sử dụng Selenium có luôn kích hoạt tính năng phát hiện reCAPTCHA không?

Selenium mặc định với ChromeDriver mặc định được phát hiện ngay lập tức do `

ReCAPTCHA cập nhật các phương pháp phát hiện nhanh như thế nào?

Google liên tục cập nhật phương pháp chẩn đoán phát hiện của reCAPTCHA. Các cập nhật lớn diễn ra vài tháng một lần. Các phương pháp phát hiện trình duyệt headless mới thường được triển khai trong vòng vài tuần kể từ khi phát hành công cụ tự động hóa mới. Các dịch vụ giải mã API như CaptchaAI thích ứng với những thay đổi này ngay lập tức vì chúng duy trì môi trường giải quyết được tối ưu hóa của riêng mình.

ReCAPTCHA có chia sẻ dữ liệu phát hiện trên các trang web không?

Vâng. Phân tích rủi ro của reCAPTCHA kết hợp các tín hiệu giữa các trang web thông qua cookie _GRECAPTCHA và thông tin phía máy chủ của Google. Hành vi kém trên một trang web được bảo vệ bằng reCAPTCHA có thể làm giảm điểm số trên các trang web khác sử dụng cùng cấu hình trình duyệt.


Tóm tắt

reCAPTCHA phát hiện tự động hóa thông qua năm lớp: thăm dò môi trường JavaScript (phát hiện headless), lấy dấu vân tay canvas/WebGL, phân tích hành vi (chuột, bàn phím, cuộn), danh tiếng mạng/IP và trí thông minh giữa các phiên. Các bộ giải dựa trên API nhưCaptchaAIxử lý tất cả năm lớp bằng cách giải quyết các thử thách trong một môi trường riêng biệt, được tối ưu hóa và trả lại mã thông báo hợp lệ. Mã tự động hóa của bạn không bao giờ tương tác trực tiếp với reCAPTCHA, khiến hệ thống phát hiện không thể nhìn thấy nó.

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
  • Recaptcha Enterprise Assessment Api Deep Dive
Os comentários estão desativados para este artigo.