CAPSOLVER
Blog
Cara menemukan fungsi callback reCaptcha

Cara menemukan fungsi callback reCAPTCHA

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

23-Sep-2025

Cara menemukan fungsi callback dari setiap versi reCaptcha

⚠️ Setiap situs web berbeda, jika tidak satu pun dari metode berikut yang dapat menyelesaikan masalah.
Harap lakukan riset lebih lanjut sendiri.

Setelah mendapatkan nilai gRecaptchaResponse yang berhasil dikenali melalui API, jika Anda menggunakan perangkat lunak simulasi, seperti selenium, Anda perlu menjalankan fungsi callback untuk memberi tahu halaman web bahwa kita telah berhasil mengenali, jadi mari kita pelajari cara menemukan fungsi ini:

Catatan: Dalam beberapa kasus, memang tidak ada fungsi callback. Dalam hal ini, Anda dapat langsung menetapkan nilai ke kontainer g-recaptcha-response dan mengirimkan formulir.

Metode 1: Cari melalui elemen konsol

Buka halaman yang ditampilkan, tekan F12 untuk masuk ke konsol, tekan Ctrl+F di Elemen untuk mencari, kata kunci pencarian: data-callback

Seperti yang Anda lihat, fungsi callback kita di sini adalah onSuccess, dan kemudian kita hanya perlu menjalankan fungsi ini di selenium

Jika Anda tidak dapat menemukannya, mungkin ada kesalahan atau keadaan lain, Anda dapat mencoba metode lain

python Copy
driver.execute_script(f'onSuccess("{gRecaptchaResponse}")')

Metode 2: Berlaku untuk seri recaptcha-v3

Mirip dengan metode 1, cari kata kunci: grecaptcha.render

Temukan kode serupa, di mana callback adalah fungsi callback

js Copy
grecaptcha.render('example', {
  'sitekey': 'someSitekey',
  'callback': myCallbackFunction,
  'theme': 'dark'
});

Metode 3: Cari melalui konsol

Tekan F12 untuk masuk ke konsol, masukkan ___grecaptcha_cfg.clients, jika ada kesalahan yang dilaporkan, halaman web belum memuat reCaptcha

Biasanya ada banyak node, kita perlu memperhatikan perbedaannya, di sini onSuccess adalah fungsi callback yang kita cari

Metode 4: Cari dengan fungsi pencarian otomatis

Jika sulit untuk menjalankan metode di atas, Anda dapat mencoba mencari dengan mendefinisikan fungsi pencarian otomatis
Tekan F12 untuk masuk ke konsol, dan masukkan fungsi yang didefinisikan otomatis berikut findRecaptchaClients()

js Copy
function findRecaptchaClients() {
// eslint-disable-next-line camelcase
  if (typeof (___grecaptcha_cfg) !== 'undefined') {
// eslint-disable-next-line camelcase, no-undef
    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 (typeof toplevel === 'object' && 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
    })

  }
  return []
}

findRecaptchaClients && findRecaptchaClients()

Kemudian jalankan fungsi ini findRecaptchaClients() di konsol untuk menemukan fungsi yang sesuai

js Copy
[
  {
    "id": "0",
    "version": "V2",
    "sitekey": "site key-",
    "function": "onSuccess",
    "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
    "pageurl": "site url"
  }
]

Bagaimana cara memanggil fungsi anonim reCaptcha?

Catatan: Terkadang fungsi callback yang ditemukan adalah nama fungsi, seperti onSuccess yang disebutkan di atas, langsung onSuccess(gRecaptchaResponse) saat memanggil, tetapi terkadang ditemukan sebagai fungsi anonim, yang berarti bahwa tidak ada nama fungsi, seperti berikut:

Untuk fungsi anonim semacam ini, kita hanya perlu menjalankannya sesuai dengan jalur lengkap yang baru saja kita temukan, dan efeknya sama, misalnya:

js Copy
___grecaptcha_cfg.clients.xxxxxxxxx.xxxxx.xxxxx.callback(gRecaptchaResponse)

Mari kita berikan contoh, ambil situs web ini sebagai contoh, masukkan ___grecaptcha_cfg.clients untuk memperluas pencarian, Anda dapat melihat fungsi callback di sini promise-callback adalah fungsi anonim f(token)

Kita dapat mengklik kanan dan klik Salin jalur properti untuk menyalin jalur node ini

js Copy
[100000].l.l["promise-callback"]("gRecaptchaResponse")

Tambahkan ___grecaptcha_cfg.clients yang baru saja dimasukkan, dan Anda dapat memperoleh jalur lengkap fungsi ini

js Copy
___grecaptcha_cfg.clients[100000].l.l["promise-callback"]

Akhirnya, sama dengan metode eksekusi yang disebutkan di atas, jalankan saja sebagai fungsi normal

js Copy
___grecaptcha_cfg.clients[100000].l.l["promise-callback"](gRecaptchaResponse)

Tim Capsolver 💜

Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.

Lebih lanjut