Setelah menambahkan skenario verifikasi di Konsol, Anda perlu mengintegrasikan kode inisialisasi Captcha ke halaman web atau H5 yang memerlukan verifikasi. Topik ini menjelaskan cara melakukan integrasi sisi klien tersebut.
Prasyarat
Anda telah mengaktifkan Alibaba Cloud Captcha 2.0.
Anda telah membuat skenario verifikasi dengan Integration Method diatur ke Web/H5.
Diagram urutan arsitektur verifikasi V2
Verifikasi slider, puzzle, klik, dan pemulihan citra
Deskripsi diagram urutan:
Klien menginisialisasi Captcha lalu mengirim permintaan ke server Captcha untuk mendapatkan sumber daya, seperti citra dan pertanyaan.
Jika permintaan gagal, Anda dapat memeriksa pesan kesalahan yang diterima oleh klien untuk mengidentifikasi penyebabnya dan menyelesaikan masalah tersebut.
Pengguna menyelesaikan interaksi Captcha (seperti slider, puzzle, klik, atau pemulihan citra) dan interaksi bisnis (seperti login atau pendaftaran) di halaman web.
Setelah interaksi selesai, klien mengirim parameter Captcha dan parameter bisnis ke server bisnis.
Server bisnis memanggil API VerifyIntelligentCaptcha dan mengirim permintaan verifikasi ke server Captcha untuk analisis ancaman.
Server Captcha menentukan tingkat ancaman dan mengembalikan hasil verifikasi ke server bisnis.
Server bisnis memproses permintaan berdasarkan logika bisnisnya. Setelah pemrosesan selesai, server mengembalikan hasil verifikasi dan hasil pemrosesan bisnis ke klien.
Halaman klien menampilkan prompt dan memproses permintaan bisnis.
Jika verifikasi gagal, Captcha diperbarui, dan proses kembali ke Langkah 1.
Verifikasi tanpa interaksi
Deskripsi diagram urutan:
Klien menginisialisasi Captcha lalu mengirim permintaan ke server Captcha untuk mendapatkan sumber daya, seperti citra dan pertanyaan.
Jika permintaan gagal, Anda dapat memeriksa pesan kesalahan yang diterima oleh klien untuk mengidentifikasi penyebabnya dan menyelesaikan masalah tersebut.
Pengguna menyelesaikan interaksi bisnis, seperti login atau pendaftaran, di klien.
Setelah interaksi selesai, klien mengirim parameter verifikasi tanpa interaksi dan parameter bisnis ke server bisnis.
Server bisnis memanggil API VerifyIntelligentCaptcha dan mengirim permintaan verifikasi ke server Alibaba Cloud untuk analisis ancaman.
Server Alibaba Cloud menentukan tingkat ancaman dan mengembalikan hasil verifikasi ke server bisnis.
Server bisnis memproses permintaan berdasarkan logika bisnisnya.
Jika pengguna tidak berisiko, proses verifikasi berakhir.
Jika pengguna berisiko, otentikasi sekunder dipicu.
Pengguna menyelesaikan interaksi Captcha (seperti slider, puzzle, klik, atau pemulihan citra) dan interaksi bisnis (seperti login atau pendaftaran) di halaman web.
Setelah interaksi selesai, klien mengirim parameter Captcha dan parameter bisnis ke server bisnis.
Server bisnis memanggil API VerifyIntelligentCaptcha dan mengirim permintaan verifikasi ke server Alibaba Cloud untuk analisis ancaman.
Server Alibaba Cloud menentukan tingkat ancaman dan mengembalikan hasil verifikasi ke server bisnis.
Server bisnis memproses permintaan berdasarkan logika bisnisnya. Setelah pemrosesan selesai, server mengembalikan hasil verifikasi dan hasil pemrosesan bisnis ke klien.
Halaman klien menampilkan prompt dan memproses permintaan bisnis.
Jika verifikasi gagal, halaman klien menginisialisasi ulang Captcha, dan proses kembali ke Langkah i.
Integrasikan kode inisialisasi Captcha
Halaman web dan H5 mendukung mode pop-up dan tertanam. Bagian ini menggunakan skenario login sebagai contoh untuk menjelaskan cara mengintegrasikan kode Captcha ke dalam kode sumber klien.
Dalam kode sumber klien, siapkan elemen halaman untuk Captcha. Elemen ini adalah elemen DOM yang dirujuk oleh parameter element dan button, misalnya <div id="captcha-element"></div> pada contoh berikut. Disarankan agar Anda mengatur tinggi kontainer modul bisnis menjadi adaptif guna mencegah elemen Captcha melebihi tinggi kontainer jika tinggi Captcha berubah saat Anda mengganti jenis Captcha.
PentingSetelah integrasi, jika Anda mengubah konfigurasi skenario di Konsol—misalnya mode Captcha—Anda tidak perlu menyesuaikan parameter inisialisasi atau struktur halaman. Program akan memuat konfigurasi baru secara otomatis.
// Contoh kode klien asli const button = document.getElementById('button'); button.onclick = function () { // Meminta API backend... const result = await getWithParams('xx', { yourBizParam... // Parameter bisnis }); const { bizResult } = result; if (bizResult) { // Mengarahkan ke halaman yang sesuai. Dalam contoh ini, halamannya adalah https://www.aliyun.com/. window.location.href = 'https://www.aliyun.com/'; } } // Kode dalam body klien <div id="space-semantic"> <div id="embed-wrapper"> <h2>Pop-up</h2> <div class="embed-wrapper"> <div> <label>Nama pengguna:</label> <input id="username-embed" class="biz-input"> </div> <div> <label>Kata sandi:</label> <input id="password-embed" type="password" class="biz-input"> </div> <div id="captcha-element"></div> // Elemen halaman yang disediakan untuk Captcha, digunakan untuk mengonfigurasi parameter element dalam Fungsi inisialisasi <button id="button" class="login-btn">Login</button> </div> </div> </div>Integrasikan kode inisialisasi Captcha, yang mencakup variabel global dan skrip JS Captcha. Sebelum mengimpor skrip JS Alibaba Cloud Captcha, atau di awal tag head dalam file HTML, tambahkan skrip yang mendefinisikan variabel global bernama
AliyunCaptchaConfig. Variabel ini berisi parameter region dan prefix.PentingAnda harus mengimpor JS Captcha secara dinamis. Jika menggunakan metode lain untuk menghindari pemuatan dinamis—seperti menarik kode JS untuk deployment lokal—Captcha tidak dapat diperbarui sebagaimana mestinya, sehingga berpotensi membahayakan keamanan, menyebabkan pemblokiran palsu, atau menimbulkan masalah kompatibilitas.
Muat JS Captcha sedini mungkin untuk mengumpulkan informasi lingkungan dan perangkat yang lebih lengkap. Interval antara pemuatan JS Captcha dan pengiriman permintaan verifikasi harus lebih dari 2 detik.
Untuk mempercepat pemuatan sumber daya citra, inisialisasi Captcha sedini mungkin. Interval antara inisialisasi dan pengiriman permintaan verifikasi harus lebih dari 2 detik agar sumber daya terkait Captcha dimuat terlebih dahulu.
Jangan memanggil metode
initAliyunCaptchaberulang kali, kecuali dalam skenario tertentu seperti perubahan parameter inisialisasi.
Pop-up
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="data-spm" /> <!--1. Sebelum mengimpor skrip JS Alibaba Cloud Captcha atau di awal tag head dalam file HTML, tambahkan skrip yang menyimpan variabel global bernama AliyunCaptchaConfig yang berisi parameter region dan prefix.--> <script> window.AliyunCaptchaConfig = { // Wajib. Wilayah tempat instans Captcha berada. Nilai yang valid: cn (Daratan Tiongkok) dan sgp (Singapura). region: "cn", // Wajib. Kredensial identitas. Setelah Anda mengaktifkan Alibaba Cloud Captcha 2.0, Anda dapat memperoleh kredensial identitas di kartu Informasi Dasar Instans pada halaman Ikhtisar di Konsol. prefix: "xxxxxx", }; </script> <!--2. Integrasikan JS utama.--> <script type="text/javascript" src="https://o.alicdn.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js"> </script> </head> <body> <!--3. Buat tag <script> untuk memanggil fungsi inisialisasi Captcha initAliyunCaptcha.--> <script type="text/javascript"> var captcha; // Parameter untuk mode pop-up, tidak termasuk region dan prefix window.initAliyunCaptcha({ // ID skenario. Setelah Anda membuat skenario verifikasi di Langkah 2, Anda dapat memperoleh ID skenario dari daftar skenario verifikasi. SceneId: 'c9h3****', // Mode Captcha. popup menunjukkan bahwa Captcha dalam mode pop-up. Anda tidak perlu mengubah parameter ini. mode: 'popup', // Elemen yang disediakan di halaman untuk rendering Captcha. Ini harus sama dengan elemen halaman yang disediakan dalam kode asli. element: '#captcha-element', // Elemen yang memicu jendela pop-up Captcha. button menunjukkan bahwa fungsi captchaVerifyCallback dipicu setelah Anda mengklik tombol login. Anda dapat mengubah nilai element berdasarkan elemen yang Anda gunakan. button: '#button', // Fungsi callback untuk permintaan bisnis dengan verifikasi Captcha. Anda tidak perlu mengubah parameter ini. captchaVerifyCallback: captchaVerifyCallback, // Fungsi callback untuk hasil permintaan bisnis. Anda tidak perlu mengubah parameter ini. onBizResultCallback: onBizResultCallback, // Fungsi untuk mengikat instans Captcha. Anda tidak perlu mengubah parameter ini. getInstance: getInstance, // Gaya Captcha slider. Anda dapat menyesuaikan lebar dan tinggi dalam piksel (px). Lebar minimum adalah 320 px. slideStyle: { width: 360, height: 40, }, // Bahasa Captcha. Nilai yang valid: cn (Bahasa Tionghoa Sederhana), tw (Bahasa Tionghoa Tradisional), dan en (Bahasa Inggris). language: 'cn', }); function getInstance(instance) { captcha = instance } async function captchaVerifyCallback(captchaVerifyParam) { // 1. Kirim permintaan bisnis ke backend untuk mendapatkan hasil verifikasi Captcha dan hasil bisnis. const result = await xxxx('http://Alamat permintaan bisnis Anda', { // Parameter Captcha captchaVerifyParam: captchaVerifyParam, // Parameter bisnis yourBizParam... }); // 2. Susun parameter pengembalian standar. const verifyResult = { // Menentukan apakah verifikasi Captcha berhasil. Parameter ini bertipe boolean dan wajib. captchaResult: result.captchaVerifyResult, // Menentukan apakah verifikasi bisnis berhasil. Parameter ini bertipe boolean dan opsional. Jika tidak ada hasil verifikasi bisnis, Anda dapat mengosongkan bizResult. bizResult: Dapatkan hasil verifikasi bisnis Anda dari result, }; return verifyResult; } // Fungsi callback untuk hasil verifikasi permintaan bisnis function onBizResultCallback(bizResult) { if (bizResult === true) { // Jika verifikasi bisnis berhasil, Anda akan diarahkan ke halaman yang sesuai. Dalam contoh ini, halamannya adalah https://www.aliyun.com/. window.location.href = 'https://www.aliyun.com/'; } else { // Jika verifikasi bisnis gagal, pesan kegagalan dikembalikan. Dalam contoh ini, pesannya adalah "Verifikasi bisnis gagal!". alert('Verifikasi bisnis gagal!'); } } </script> </body> </html>Tersemat
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="data-spm" /> <!-- 1. Sebelum mengimpor skrip JS Alibaba Cloud Captcha atau di awal tag head dalam file HTML, tambahkan skrip yang menyimpan variabel global bernama AliyunCaptchaConfig yang berisi parameter region dan prefix. --> <script> window.AliyunCaptchaConfig = { // Wajib. Wilayah tempat instans Captcha berada. Nilai yang valid: cn (Daratan Tiongkok) dan sgp (Singapura). region: "cn", // Wajib. Kredensial identitas. Setelah Anda mengaktifkan Alibaba Cloud Captcha 2.0, Anda dapat memperoleh kredensial identitas di kartu Informasi Dasar Instans pada halaman Ikhtisar di Konsol. prefix: "xxxxxx", }; </script> <!-- 2. Integrasikan JS utama. --> <script type="text/javascript" src="https://o.alicdn.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js"> </script> </head> <body> <!-- 3. Buat tag <script> untuk memanggil fungsi inisialisasi Captcha initAliyunCaptcha. --> <script type="text/javascript"> var captcha; // Parameter untuk mode tertanam, tidak termasuk region dan prefix window.initAliyunCaptcha({ // ID skenario. Setelah Anda membuat skenario verifikasi di Langkah 1, Anda dapat memperoleh ID skenario dari daftar skenario verifikasi. SceneId: 'c9h3****', // Mode Captcha. embed menunjukkan bahwa Captcha dalam mode tertanam. Anda tidak perlu mengubah parameter ini. mode: 'embed', // Elemen yang disediakan di halaman untuk rendering Captcha. Ini harus sama dengan elemen halaman yang disediakan dalam kode asli. element: '#captcha-element', // Elemen yang memicu permintaan bisnis. button menunjukkan bahwa fungsi captchaVerifyCallback dipicu setelah Anda mengklik tombol login. Anda dapat mengubah nilai element berdasarkan elemen yang Anda gunakan. button: '#button', // Fungsi callback untuk permintaan bisnis dengan verifikasi Captcha. Anda tidak perlu mengubah parameter ini. captchaVerifyCallback: captchaVerifyCallback, // Fungsi callback untuk hasil permintaan bisnis. Anda tidak perlu mengubah parameter ini. onBizResultCallback: onBizResultCallback, // Fungsi untuk mengikat instans Captcha. Anda tidak perlu mengubah parameter ini. getInstance: getInstance, // Gaya Captcha slider. Anda dapat menyesuaikan lebar dan tinggi dalam piksel (px). Lebar minimum adalah 320 px. slideStyle: { width: 360, height: 40, }, // Bahasa Captcha. Nilai yang valid: cn (Bahasa Tionghoa Sederhana), tw (Bahasa Tionghoa Tradisional), dan en (Bahasa Inggris). language: 'cn', // Menentukan apakah langsung mengirim permintaan verifikasi (memanggil fungsi captchaVerifyCallback) setelah verifikasi selesai. immediate: false, }); // Fungsi untuk mengikat instans Captcha. Ini adalah ekspresi tetap dan tidak perlu diubah. function getInstance(instance) { captcha = instance; } // Fungsi callback untuk permintaan bisnis dengan verifikasi Captcha /** * @name captchaVerifyCallback * @function * Parameter permintaan: Parameter verifikasi yang dikembalikan oleh skrip Captcha. Anda tidak perlu memproses parameter ini. Anda dapat langsung meneruskannya ke server. * @params {string} captchaVerifyParam * Parameter pengembalian: Nama field tetap. captchaResult wajib. Jika tidak ada skenario verifikasi bisnis, bizResult opsional. * @returns {{captchaResult: boolean, bizResult?: boolean|undefined}} */ async function captchaVerifyCallback(captchaVerifyParam) { // 1. Kirim permintaan bisnis ke backend untuk mendapatkan hasil verifikasi Captcha dan hasil bisnis. const result = await xxxx('http://Alamat permintaan bisnis Anda', { // Parameter Captcha captchaVerifyParam: captchaVerifyParam, // Parameter bisnis yourBizParam... }); // 2. Susun parameter pengembalian standar. const verifyResult = { // Menentukan apakah verifikasi Captcha berhasil. Parameter ini bertipe boolean dan wajib. captchaResult: result.captchaVerifyResult, // Menentukan apakah verifikasi bisnis berhasil. Parameter ini bertipe boolean dan opsional. Jika tidak ada hasil verifikasi bisnis, Anda dapat mengosongkan bizResult. bizResult: Dapatkan hasil verifikasi bisnis Anda dari result, }; return verifyResult; } // Fungsi callback untuk hasil verifikasi permintaan bisnis function onBizResultCallback(bizResult) { if (bizResult === true) { // Jika verifikasi bisnis berhasil, Anda akan diarahkan ke halaman yang sesuai. Dalam contoh ini, halamannya adalah https://www.aliyun.com/. window.location.href = 'https://www.aliyun.com/'; } else { // Jika verifikasi bisnis gagal, pesan kegagalan dikembalikan. Dalam contoh ini, pesannya adalah "Verifikasi bisnis gagal!". alert('Verifikasi bisnis gagal!'); } } </script> </body> </html>Fungsi captchaVerifyCallback menggunakan sintaks ES6. Untuk menggunakan sintaks ES5, lihat contoh berikut. Panggil parameter kedua dari captchaVerifyCallback, yaitu fungsi callback, dan teruskan hasil verifikasi kepadanya:
/** * @name captchaVerifyCallback * @function * @param {String} captchaVerifyParam - Parameter verifikasi yang dikembalikan oleh skrip Captcha. Anda tidak perlu memproses parameter ini. Anda dapat langsung meneruskannya ke server. * @param {Function} callback - Fungsi callback yang digunakan untuk memproses hasil verifikasi. Kompatibel dengan sintaks ES5. */ function captchaVerifyCallback(captchaVerifyParam, callback) { // 1. Kirim permintaan bisnis ke backend untuk mendapatkan hasil verifikasi Captcha dan hasil bisnis. requestVerifyResult('http://Alamat permintaan bisnis Anda', { captchaVerifyParam: captchaVerifyParam, // Parameter Captcha yourBizParam... // Parameter bisnis }, function(result) { // 2. Susun parameter pengembalian standar. var verifyResult = { captchaResult: result.captchaVerifyResult, bizResult: result.bizResult, }; // Panggil fungsi callback dan teruskan hasil verifikasi. callback(verifyResult); }); }
Jika Anda memiliki pertanyaan selama integrasi, kirimkan Tiket.
Parameter
Parameter AliyunCaptchaConfig
Parameter | Tipe | Wajib | Nilai default | Deskripsi |
region | String | Ya | cn | Wilayah tempat instans Captcha berada. Nilai yang valid:
Penting
|
prefix | String | Ya | Tidak ada | Kredensial identitas Captcha. Anda dapat memperoleh nilai ini setelah Anda mengaktifkan Captcha 2.0. |
Parameter initAliyunCaptcha
Parameter | Tipe | Wajib | Nilai default | Deskripsi |
SceneId | String | Ya | Tidak ada | ID skenario Captcha. Anda dapat memperoleh nilai ini setelah membuat skenario verifikasi. |
mode | String | Ya | Tidak ada | Mode Captcha. Opsi:
|
element | String | Ya | captcha-element | Elemen yang disediakan di halaman untuk rendering Captcha. Ini harus sama dengan elemen halaman yang disediakan dalam kode sumber. |
button | String | Ya | Tidak ada | Elemen yang memicu jendela pop-up Captcha. Nilainya harus sama dengan nilai parameter button di body klien. |
captchaVerifyCallback | Fungsi | Ya | captchaVerifyCallback | Fungsi callback untuk permintaan bisnis dengan verifikasi Captcha. Untuk informasi selengkapnya, lihat captchaVerifyCallback. |
onBizResultCallback | Fungsi | Ya | onBizResultCallback | Fungsi callback untuk hasil permintaan bisnis, yang digunakan untuk mengatur logika pemrosesan hasil verifikasi. |
getInstance | Fungsi | Ya | getInstance | Fungsi untuk mengikat instans Captcha. Ekspresi tetapnya adalah: |
slideStyle | Objek | Tidak | { width: 360, height: 40 } | Gaya Captcha slider. Anda dapat menyesuaikan lebar dan tinggi dalam piksel (px). Penting
|
language | String | Tidak | cn | Jenis bahasa yang didukung oleh Captcha 2.0. |
immediate | Boolean | Tidak | false | Dalam mode tertanam, menentukan apakah langsung mengirim permintaan verifikasi (memanggil fungsi captchaVerifyCallback) setelah verifikasi selesai. |
timeout | Angka | Tidak | 5000 | Periode waktu habis untuk satu permintaan inisialisasi Captcha. Satuan: milidetik (ms). |
rem | Angka | Tidak | 1 | Menyesuaikan seluruh UI Captcha. Masukkan angka positif. Misalnya, 0,5 berarti mengurangi ukuran separuhnya, dan 2 berarti menggandakan ukuran. Catatan Parameter rem terutama digunakan untuk browser seluler. |
autoRefresh | Boolean | Tidak | true | Menentukan apakah Captcha otomatis diperbarui setelah verifikasi berhasil. Catatan Jika parameter ini diatur ke false, Anda harus memanggil metode instans secara manual untuk memperbarui Captcha. Untuk informasi selengkapnya, lihat P4 dalam FAQ. |
onError | Fungsi | Tidak | Tidak ada | Fungsi callback kesalahan untuk permintaan API inisialisasi Captcha yang gagal atau waktu habis. |
captchaLogoImg | String | Tidak | Tidak ada | Parameter untuk mengganti logo perusahaan di sebelah kanan tombol verifikasi klik. Nilainya dapat berupa URL citra atau data dalam format Base64. |
Parameter captchaVerifyCallback
Parameter permintaan
Parameter
Tipe
Wajib
Nilai default
Deskripsi
captchaVerifyParam
String
Ya
captchaVerifyParam
Parameter Captcha. Parameter verifikasi yang dikembalikan oleh skrip Captcha. Anda tidak perlu memproses parameter ini. Anda dapat langsung meneruskannya ke server.
Parameter pengembalian
Parameter
Tipe
Nilai default
Deskripsi
captchaResult
Boolean
Tidak ada
Menentukan apakah verifikasi Captcha berhasil.
bizResult
Boolean
Tidak ada
Menentukan apakah verifikasi bisnis berhasil. Jika tidak ada hasil verifikasi bisnis, nilai bizResult dapat dikosongkan.

