Hướng Dẫn API

Cách giải quyết reCAPTCHA vô hình bằng API

ReCAPTCHA vô hình kích hoạt khi người dùng nhấp vào nút hoặc gửi biểu mẫu - không có hộp kiểm. Thử thách diễn ra ở chế độ nền và trang chỉ tiếp tục khi mã thông báo được xác minh. Giải quyết vấn đề thông qua CaptchaAI tương tự như v2 tiêu chuẩn, với một bổ sung quan trọng: bạn phải chuyển invisible=1 trong yêu cầu API của mình.

Sự khác biệt lớn nhất trong quá trình tích hợp là cách bạn đưa mã thông báo. Hầu hết các triển khai vô hình đều sử dụng chức năng gọi lại thay vì trường g-recaptcha-response ẩn. Bạn cần tìm và gọi lại cuộc gọi đó.

Không chắc nó là vô hình hay tiêu chuẩn v2? ĐọcGiải thích về reCAPTCHA v2 và Vô hìnhđể biết các mẹo phát hiện.


Những gì bạn cần

Yêu cầu Chi tiết
Khóa API CaptchaAI captchaai.com/api.php
Mã khóa trang web Từ data-sitekey trên tiện ích hoặc nút
URL trang URL đầy đủ nơi CAPTCHA vô hình chạy
Công cụ trình duyệt Selenium/Puppeteer để thực hiện cuộc gọi lại

Bước 1: Phát hiện reCAPTCHA vô hình

Hãy tìm những mẫu này trong trang HTML:

<!-- Option 1: div with data-size="invisible" -->
<div class="g-recaptcha" data-sitekey="6LdKlZEU..." data-size="invisible" data-callback="onSubmit"></div>

<!-- Option 2: button with data-sitekey (invisible by default) -->
<button data-sitekey="6LdKlZEU..." data-callback="onSubmit">Submit</button>

<!-- Option 3: programmatic execution -->
<script>
  grecaptcha.execute('6LdKlZEU...', {action: 'submit'});
</script>

Nếu bạn thấy data-size="invisible", một nút có data-sitekey hoặc grecaptcha.execute() không có vùng chứa thì đó là reCAPTCHA vô hình.

Bước 2: Gửi tới CaptchaAI

import requests

response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "6LdKlZEUAAAAAPoxm...",
    "pageurl": "https://example.com/signup",
    "invisible": 1,
    "json": 1
})

task_id = response.json()["request"]
const params = new URLSearchParams({
  key: "YOUR_API_KEY", method: "userrecaptcha",
  googlekey: "6LdKlZEUAAAAAPoxm...",
  pageurl: "https://example.com/signup",
  invisible: 1, json: 1,
});
const res = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const { request: taskId } = await res.json();

Bước 3: Thăm dò kết quả

import time

for _ in range(40):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY", "action": "get", "id": task_id, "json": 1
    }).json()
    if result.get("status") == 1:
        token = result["request"]
        break
    if result.get("request") != "CAPCHA_NOT_READY":
        raise RuntimeError(f"Error: {result['request']}")

Bước 4: Đưa mã thông báo qua lệnh gọi lại

Đây là bước quan trọng. ReCAPTCHA vô hình yêu cầu hàm gọi lại, không chỉ là giá trị trường ẩn:

# Selenium example
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com/signup")

# Find the callback name
callback = driver.execute_script("""
    var el = document.querySelector('[data-callback]');
    if (el) return el.getAttribute('data-callback');
    var btn = document.querySelector('[data-sitekey]');
    if (btn) return btn.getAttribute('data-callback');
    return null;
""")

# Execute the callback with the token
if callback:
    driver.execute_script(f"window['{callback}']('{token}');")
else:
    # Fallback: fill hidden field and submit
    driver.execute_script(f"""
        document.getElementById('g-recaptcha-response').innerHTML = '{token}';
        document.querySelector('form').submit();
    """)
// Puppeteer example
await page.evaluate((token) => {
  const el = document.querySelector('[data-callback]') || document.querySelector('[data-sitekey]');
  const callbackName = el?.getAttribute('data-callback');

  if (callbackName && window[callbackName]) {
    window[callbackName](token);
  } else {
    document.getElementById('g-recaptcha-response').innerHTML = token;
    document.querySelector('form').submit();
  }
}, token);

Hoàn thiện chức năng làm việc

import requests
import time

def solve_invisible_recaptcha(api_key, sitekey, page_url):
    submit = requests.get("https://ocr.captchaai.com/in.php", params={
        "key": api_key, "method": "userrecaptcha", "googlekey": sitekey,
        "pageurl": page_url, "invisible": 1, "json": 1
    }).json()

    if submit.get("status") != 1:
        raise RuntimeError(f"Submit error: {submit.get('request')}")

    task_id = submit["request"]

    for _ in range(40):
        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:
            return result["request"]
        if result.get("request") != "CAPCHA_NOT_READY":
            raise RuntimeError(f"Solve error: {result.get('request')}")

    raise TimeoutError("Timed out")

token = solve_invisible_recaptcha("YOUR_API_KEY", "6LdKlZEU...", "https://example.com/signup")

Ví dụ đầy đủ có thể chạy được

Bạn cần một dự án hoạt động hoàn chỉnh với thiết lập môi trường, bỏ phiếu, thử lại và xử lý lỗi?

Xem ví dụ có thể chạy đầy đủ trên GitHub →


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

Làm cách nào để biết reCAPTCHA có ẩn hay không?

Tìm data-size="invisible" trên div tiện ích hoặc nút có data-sitekey. Nếu không có hộp kiểm hiển thị thì có khả năng nó sẽ ẩn.

Tôi có cần vô hình=1 cho reCAPTCHA vô hình không?

Vâng. Nếu không có nó, CaptchaAI coi nhiệm vụ là v2 tiêu chuẩn và mã thông báo có thể bị từ chối.

Nếu tôi không thể tìm thấy chức năng gọi lại thì sao?

Hãy thử điền vào trường ẩn g-recaptcha-response và gửi biểu mẫu. Một số triển khai vô hình quay trở lại phương pháp này. Nếu không thành công, hãy tìm kiếm trang JavaScript để tìm các hàm xử lý phản hồi reCAPTCHA.

ReCAPTCHA vô hình có thể là Doanh nghiệp không?

Vâng. Thêm cả invisible=1enterprise=1 vào yêu cầu của bạn.

Tại sao trang không phản hồi sau khi thực hiện lệnh gọi lại?

Tên gọi lại có thể sai hoặc trang có thể cần các trường biểu mẫu bổ sung. Xác minh tên gọi lại chính xác và đảm bảo tất cả các trường biểu mẫu bắt buộc đều được điền trước khi lệnh gọi lại kích hoạt.


Bắt đầu giải reCAPTCHA vô hình

Nhận khóa API của bạn tạicaptchaai.com/api.php. Thêm invisible=1 vào mã giải v2 của bạn và sử dụng mẫu chèn lệnh gọi lại ở trên.


Hướng dẫn liên quan

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