# Tìm tham số reCAPTCHA

> Cách tìm websiteKey (sitekey), websiteURL, pageAction của v3 và hàm callback của reCAPTCHA trong các tab Network, Sources và Console của công cụ dành cho nhà phát triển, kèm script tự động tìm.

Source: https://docs.yescaptcha.com/vi/guides/find-recaptcha-parameters/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/guides/find-recaptcha-parameters/

Để tạo tác vụ reCAPTCHA, bạn cần `websiteURL` (địa chỉ trang hiển thị captcha) và `websiteKey` (khóa của website); v3 cần thêm `pageAction`. Khi mô phỏng thao tác gửi bằng Selenium hoặc công cụ tương tự, bạn còn cần biết hàm callback. Tất cả đều có thể tìm thấy trong công cụ dành cho nhà phát triển của trình duyệt (F12).

## Cách nhanh nhất: script tự động tìm

Mở trang có captcha, nhấn F12 để mở Console, dán và chạy:

find-recaptcha-clients.js

```js
// Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients().
// Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function.
function findRecaptchaClients() {
  if (typeof ___grecaptcha_cfg === 'undefined') return [];
  return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
    const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
    const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object');
    objects.forEach(([toplevelKey, toplevel]) => {
      const found = Object.entries(toplevel).find(
        ([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value,
      );
      if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI;
      if (found) {
        const [sublevelKey, sublevel] = found;
        data.sitekey = sublevel.sitekey;
        const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
        const callback = sublevel[callbackKey];
        if (!callback) {
          data.callback = null;
          data.function = null;
        } else {
          data.function = callback;
          const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
          data.callback = `___grecaptcha_cfg.clients${keys}`;
        }
      }
    });
    return data;
  });
}

findRecaptchaClients();
```

Trong kết quả trả về, `sitekey` là `websiteKey`, `pageurl` là `websiteURL`, `version` cho biết là v2 hay v3, còn `function` và `callback` là hàm callback:

```json
[
  {
    "id": "0",
    "version": "V2",
    "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "function": "onSuccess",
    "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
    "pageurl": "https://www.google.com/recaptcha/api2/demo"
  }
]
```

Mảng rỗng nghĩa là trang chưa tải reCAPTCHA; hãy chạy lại sau khi captcha xuất hiện.

## websiteKey và websiteURL

Trong tab Network, tìm `anchor` và chọn request có dạng như sau:

```text
https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9&co=...&hl=en&size=normal
```

-   Giá trị sau `k=` chính là `websiteKey`.
-   `websiteURL` là địa chỉ đầy đủ của trang hiển thị captcha (thường chính là `Referer` của request này).

Bạn cũng có thể tìm `data-sitekey` trong mã nguồn trang.

## pageAction (v3)

`pageAction` là `action` mà trang truyền khi gọi `grecaptcha.execute(khóa website, {action: '...'})`, và phải khớp với trang.

**Cách 1: tìm trong mã nguồn.** Trong tab Sources của công cụ dành cho nhà phát triển, nhấp chuột phải và chọn “Search in all files”. Với v3 thường, tìm `.execute(`; với v3 Enterprise, tìm `.enterprise.execute`, rồi xem `action` phía sau:

```js
grecaptcha.ready(function () {
  grecaptcha.execute('6LdpS-gUAAAAAL3Qr2yP7rkrQjkKBVvEY_48JS5l', { action: 'login' }).then(function (token) {
    // ...
  });
});
```

Ở đây `pageAction` là `login`.

**Cách 2: đặt breakpoint.** Khi mã bị làm rối (obfuscate) và không tìm thấy, hãy chạy `debug(grecaptcha.execute)` trong Console (bản Enterprise dùng `debug(grecaptcha.enterprise.execute)`), rồi thực hiện thao tác trên trang có kích hoạt xác minh (ví dụ nhấp đăng nhập). Khi trình gỡ lỗi dừng lại, xem giá trị của `action` trong Scope ở bên phải.

Một website có thể dùng các `action` khác nhau ở những bước khác nhau (ví dụ khi đăng ký, trước là `signup/submit_email` rồi đến `signup/success`); hãy lấy giá trị của bước bạn cần vượt qua. Nhấn F8 để tiếp tục chạy, bạn sẽ thấy `action` tiếp theo.

## Hàm callback

Khi điền token vào trình duyệt bằng Selenium hoặc công cụ tương tự, sau khi điền xong bạn cần gọi hàm callback của trang để báo cho trang biết đã xác minh xong:

-   Tìm `data-callback` trong tab Elements; giá trị của nó là tên hàm callback, ví dụ `data-callback="onSuccess"`.
-   Hoặc tìm `grecaptcha.render` và xem `callback` trong các tham số.
-   Hoặc xem `___grecaptcha_cfg.clients` trong Console, hoặc dùng script tự động tìm ở trên.

Cách gọi:

```python
driver.execute_script("onSuccess(arguments[0])", g_recaptcha_response)
```

Một số trang không có hàm callback; chỉ cần điền token vào ô văn bản `g-recaptcha-response` rồi gửi biểu mẫu. Xem quy trình đầy đủ tại [Dùng token để hoàn thành reCAPTCHA](https://docs.yescaptcha.com/vi/guides/submit-recaptcha-token.md).
