# ค้นหาพารามิเตอร์ของ reCAPTCHA

> วิธีค้นหา websiteKey (sitekey), websiteURL, pageAction ของ v3 และฟังก์ชัน callback ของ reCAPTCHA จากแผง Network, Sources และ Console ในเครื่องมือสำหรับนักพัฒนา พร้อมสคริปต์ค้นหาอัตโนมัติ

Source: https://docs.yescaptcha.com/th/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/

การสร้างงาน reCAPTCHA ต้องใช้ `websiteURL` (ที่อยู่ของหน้าเว็บที่มี CAPTCHA) และ `websiteKey` (คีย์ของเว็บไซต์) ส่วน v3 ต้องใช้ `pageAction` ด้วย หากจำลองการส่งข้อมูลด้วยเครื่องมืออย่าง Selenium คุณต้องทราบฟังก์ชัน callback ด้วย ทั้งหมดนี้หาได้จากเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ (F12)

## วิธีที่เร็วที่สุด: สคริปต์ค้นหาอัตโนมัติ

เปิดหน้าเว็บที่มี CAPTCHA แล้วกด F12 เพื่อเปิดแผง Console จากนั้นวางและรันสคริปต์นี้:

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();
```

ในผลลัพธ์ `sitekey` คือ `websiteKey`, `pageurl` คือ `websiteURL`, `version` บอกว่าเป็น v2 หรือ v3 ส่วน `function` และ `callback` คือฟังก์ชัน 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"
  }
]
```

หากได้อาร์เรย์ว่าง แสดงว่าหน้าเว็บยังไม่ได้โหลด reCAPTCHA ให้รันอีกครั้งหลังจาก CAPTCHA ปรากฏแล้ว

## websiteKey และ websiteURL

ในแผง Network ให้ค้นหา `anchor` แล้วหาคำขอที่มีลักษณะดังนี้:

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

-   ค่าที่อยู่หลัง `k=` คือ `websiteKey`
-   `websiteURL` ให้ใส่ที่อยู่เต็มของหน้าเว็บที่มี CAPTCHA (โดยทั่วไปคือ `Referer` ของคำขอนี้)

นอกจากนี้ยังค้นหา `data-sitekey` ในซอร์สโค้ดของหน้าเว็บได้

## pageAction (v3)

`pageAction` คือ `action` ที่หน้าเว็บส่งเมื่อเรียก `grecaptcha.execute(คีย์ของเว็บไซต์, {action: '...'})` และต้องตรงกับของหน้าเว็บ

**วิธีที่ 1: ค้นหาในซอร์สโค้ด** ในแผง Sources ของเครื่องมือสำหรับนักพัฒนา คลิกขวาแล้วเลือก “Search in all files” สำหรับ v3 ทั่วไปให้ค้นหา `.execute(` ส่วน v3 เวอร์ชัน Enterprise ให้ค้นหา `.enterprise.execute` แล้วดู `action` ที่ตามมา:

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

ในตัวอย่างนี้ `pageAction` คือ `login`

**วิธีที่ 2: breakpoint** เมื่อโค้ดถูก obfuscate จนค้นหาไม่เจอ ให้รัน `debug(grecaptcha.execute)` ใน Console (เวอร์ชัน Enterprise ใช้ `debug(grecaptcha.enterprise.execute)`) แล้วทำสิ่งที่ทำให้เกิดการตรวจสอบบนหน้าเว็บ เช่น คลิกเข้าสู่ระบบ เมื่อโปรแกรมดีบักหยุดทำงาน ให้ดูค่าของ `action` ในส่วน Scope ทางด้านขวา

เว็บไซต์อาจใช้ `action` ต่างกันในแต่ละขั้นตอน (เช่น ตอนสมัครสมาชิกใช้ `signup/submit_email` ก่อน แล้วจึงใช้ `signup/success`) ให้ใช้ค่าของขั้นตอนที่คุณต้องการผ่าน กด F8 เพื่อทำงานต่อ จะเห็น `action` ถัดไป

## ฟังก์ชัน callback

เมื่อใช้เครื่องมืออย่าง Selenium ใส่ token ในเบราว์เซอร์ หลังใส่เสร็จต้องเรียกฟังก์ชัน callback ของหน้าเว็บ เพื่อแจ้งให้หน้าเว็บทราบว่าการตรวจสอบเสร็จสิ้นแล้ว:

-   ค้นหา `data-callback` ในแผง Elements ค่าของมันคือชื่อฟังก์ชัน callback เช่น `data-callback="onSuccess"`
-   หรือค้นหา `grecaptcha.render` แล้วดู `callback` ในพารามิเตอร์
-   หรือดู `___grecaptcha_cfg.clients` ใน Console หรือใช้สคริปต์ค้นหาอัตโนมัติข้างต้น

วิธีเรียก:

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

บางหน้าเว็บไม่มีฟังก์ชัน callback ให้ใส่ token ลงในกล่องข้อความ `g-recaptcha-response` แล้วส่งฟอร์มได้เลย ดูขั้นตอนทั้งหมดที่ [ใช้ token ผ่าน reCAPTCHA](https://docs.yescaptcha.com/th/guides/submit-recaptcha-token.md)
