Anda dapat mengintegrasikan AI CAPTCHA dalam dua langkah. Misalnya, tambahkan verifikasi Click-and-pass ke halaman logon di test.example.com/login.
Langkah 1: Konfigurasikan aturan CAPTCHA
Konfigurasikan informasi dasar, seperti URI yang akan diverifikasi dan jenis CAPTCHA.
Masuk ke Konsol ESA dan buka halaman konfigurasi AI CAPTCHA.
Pada halaman Configuration, klik Add Rule.

Pada halaman Add Rule, konfigurasikan parameter berikut:
Rule Name: Masukkan nama kustom, misalnya
login.API to Be Verified: Masukkan URI untuk integrasi CAPTCHA. Contohnya, masukkan
test.example.com/login.Methods for Verification: Pilih metode permintaan yang memerlukan verifikasi CAPTCHA, seperti
GETdanPOST.Type: Pilih Click-and-Pass.
Untuk informasi selengkapnya tentang jenis lainnya, lihat Jenis CAPTCHA dan Saran Pemilihan.

Langkah 2: Integrasikan kode frontend
Setelah menambahkan aturan validasi di Konsol, integrasikan kode inisialisasi CAPTCHA ke halaman web atau H5 yang memerlukan verifikasi. Hal ini menyelesaikan integrasi sisi klien.
Dapatkan informasi verifikasi identitas
ESA menggunakan Identity dan Scene ID untuk verifikasi identitas. Sebelum menambahkan kode frontend, dapatkan informasi berikut:
Identity: Nilai ini terletak di pojok kanan atas halaman Configuration.

Scene ID: ID ini terletak di kolom Scene ID untuk aturan yang sesuai pada halaman Configuration.

Tambahkan skrip
Pada kode frontend tempat Anda ingin menambahkan CAPTCHA, misalnya login.html, tambahkan tiga segmen skrip berikut:
Tambahkan variabel global
AliyunCAPTCHAConfig: Tambahkan skrip yang mendefinisikan variabel globalAliyunCAPTCHAConfig, yang berisi parameterregiondanprefix. Tempatkan skrip ini sebelum menyertakan skrip JS CAPTCHA atau di bagian atas tag HTMLhead. Untuk informasi selengkapnya tentang parameter, lihat dokumen referensi.<script> window.AliyunCaptchaConfig = { region: "cn", // Wajib diisi. Menentukan wilayah tempat contoh Captcha diterapkan. Wilayah yang didukung meliputi Tiongkok daratan (cn) dan Singapura (sgp). prefix: "<span class="var-span" contenteditable="true" data-var="IDENTITY">IDENTITY"</span>, // Wajib diisi. Token identitas. Ganti IDENTITY dengan token identitas yang Anda peroleh pada langkah sebelumnya, misalnya esa-q2*****cqb. }; </script>Impor CAPTCHA JS secara dinamis: Setelah skrip variabel
AliyunCAPTCHAConfig, tambahkan skrip JS untuk mengimpor CAPTCHA secara dinamis. Hal ini memungkinkan Anda memanggil CAPTCHA untuk verifikasi saat layanan Anda memerlukannya.CatatanAnda harus mengimpor CAPTCHA JS secara dinamis. Jika Anda menggunakan metode lain untuk menghindari pemuatan dinamis, seperti menarik kode JS untuk penerapan lokal, CAPTCHA tidak dapat diperbarui. Hal ini mengompromikan keamanan dan dapat menyebabkan pemblokiran salah atau masalah kompatibilitas.
<script type="text/javascript" src="https://o.alicdn.com/CAPTCHA-frontend/aliyunCAPTCHA/AliyunCAPTCHA.js" ></script>Tambahkan metode inisialisasi CAPTCHA: Panggil metode inisialisasi
initAliyunCAPTCHAuntuk menginisialisasi CAPTCHA. Untuk informasi selengkapnya, lihat parameter initAliyunCAPTCHA.CatatanJangan memanggil fungsi inisialisasi
initAliyunCAPTCHAberulang kali, kecuali dalam skenario yang diperlukan, seperti ketika parameter inisialisasi berubah. Jika inisialisasi gagal, lihat kesalahan inisialisasi sisi klien untuk troubleshooting.<script type="text/javascript"> var CAPTCHA; window.initAliyunCAPTCHA({...}); </script>
Kode Contoh
Gunakan kode contoh berikut sebagai referensi untuk menambahkan CAPTCHA ke kode frontend Anda.
Muat CAPTCHA JS sedini mungkin. Hal ini memungkinkan skrip mengumpulkan informasi lingkungan dan perangkat yang lebih lengkap. Interval antara pemuatan CAPTCHA JS dan permintaan verifikasi harus lebih dari 2 detik.
Untuk memastikan resource gambar dimuat lebih cepat, inisialisasi CAPTCHA sedini mungkin. Interval antara inisialisasi dan permintaan verifikasi harus lebih dari 2 detik. Hal ini memungkinkan resource CAPTCHA terkait dimuat terlebih dahulu, sehingga mempercepat pemuatan gambar.
Dalam kode sumber klien, buat elemen placeholder untuk CAPTCHA. Ini adalah elemen Model Objek Dokumen (DOM) yang ditentukan oleh parameter
elementdanbutton, seperti<div id="CAPTCHA-element"></div>pada contoh berikut.
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="data-spm" />
<!--1. Sebelum skrip yang mengimpor JS Alibaba Cloud CAPTCHA, atau di awal tag head HTML, tambahkan skrip. Skrip ini menyimpan variabel global bernama AliyunCAPTCHAConfig yang berisi parameter region dan prefix.-->
<script>
window.AliyunCAPTCHAConfig = {
region: "cn",
prefix: "{{IDENTITY}}",
};
</script>
<!--2. Integrasikan JS utama.-->
<script
type="text/javascript"
src="https://o.alicdn.com/CAPTCHA-frontend/aliyunCAPTCHA/AliyunCAPTCHA.js"
></script>
</head>
<body>
<div id="CAPTCHA-element"></div>
<!--Elemen placeholder untuk CAPTCHA. Digunakan untuk mengonfigurasi parameter element pada fungsi inisialisasi.-->
<button id="button" class="btn">Log on</button>
<!--Dalam mode pop-up, ini adalah elemen yang memicu jendela pop-up CAPTCHA.-->
<!--3. Buat tag <script> baru untuk memanggil fungsi inisialisasi CAPTCHA initAliyunCAPTCHA.-->
<script type="text/javascript">
var CAPTCHA;
window.initAliyunCAPTCHA({
SceneId: "{{SCENE_ID}}", // Scene ID. Setelah membuat skenario verifikasi di Langkah 2, Anda dapat memperoleh scene ID dari daftar skenario CAPTCHA.
mode: "popup", // Mode CAPTCHA. popup menunjukkan mode pop-up. embed menunjukkan mode embedded. Anda tidak perlu mengubah ini.
// Elemen placeholder pada halaman untuk rendering CAPTCHA. Harus konsisten dengan elemen placeholder pada kode asli.
element: "#CAPTCHA-element",
button: "#button", // ID elemen yang memicu jendela pop-up CAPTCHA atau verifikasi tanpa-CAPTCHA.
// Fungsi callback untuk verifikasi CAPTCHA yang berhasil.
success: function (CAPTCHAVerifyParam) {
// Parameter input adalah CAPTCHAVerifyParam untuk verifikasi signature.
// 1. Kirim permintaan layanan ke backend (yaitu ESA) untuk melakukan verifikasi signature pada CAPTCHAVerifyParam.
// 2. Proses layanan berdasarkan hasil verifikasi.
// 3. Jika layanan memerlukan verifikasi ulang, panggil fungsi inisialisasi initAliyunCAPTCHA untuk menginisialisasi ulang CAPTCHA.
console.log('SUCCESS'); // Cetak SUCCESS ke konsol.
},
// Fungsi callback untuk verifikasi CAPTCHA yang gagal.
fail: function (result) {
// Parameter input berisi informasi kegagalan.
// Dalam periode validitas normal, tidak diperlukan tindakan apa pun. CAPTCHA akan otomatis refresh untuk verifikasi ulang.
console.error(result);
},
// Fungsi callback untuk melampirkan instans CAPTCHA. Callback ini dipanggil setelah CAPTCHA berhasil diinisialisasi.
getInstance: function (instance) {
CAPTCHA = instance;
},
// Menentukan nama domain layanan untuk ESA. Anda tidak perlu mengubah ini.
server: ['CAPTCHA-esa-open.aliyuncs.com', 'CAPTCHA-esa-open-b.aliyuncs.com'],
// Gaya kotak pemicu untuk jenis verifikasi Slider dan Click-and-pass. Anda dapat menyesuaikan lebar dan tinggi dalam satuan px.
slideStyle: {
width: 360,
height: 40,
},
// ...Untuk parameter lainnya, lihat deskripsi parameter initAliyunCAPTCHA.
});
</script>
</body>
</html>Saat Anda memanggil callback success: function (CAPTCHAVerifyParam), klien mengirim permintaan ke ESA yang mencakup parameter verifikasi signature CAPTCHAVerifyParam. Anda dapat menempatkan CAPTCHAVerifyParam dalam parameter permintaan atau header permintaan. Untuk informasi selengkapnya, lihat contoh berikut:
Parameter verifikasi signature sebagai parameter URI
async function CAPTCHAVerifyCallback(CAPTCHAVerifyParam) {
// 1. Kirim permintaan layanan ke ESA untuk memperoleh hasil verifikasi CAPTCHA dan hasil bisnis.
const result = await fetch('${URI verifikasi bisnis (URI yang dikonfigurasi untuk CAPTCHA di Konsol ESA)}?CAPTCHA_verify_param=' + CAPTCHAVerifyParam, {
method: 'POST',
headers: { 'Content-Type': 'application/json'},
body: JSON.stringify({
// Parameter bisnis kustom
//BizParam:
}),
credentials: 'include'
});
const verify_code = result.headers.get('X-CAPTCHA-Verify-Code')
if (verify_code === 'T001') {
alert('Verifikasi CAPTCHA berhasil!');
} else {
alert('Verifikasi CAPTCHA gagal: ', verify_code)
}
CAPTCHA.refresh()
const data = await result.json()
return data
}Parameter verifikasi signature sebagai nilai Header
async function CAPTCHAVerifyCallback(CAPTCHAVerifyParam) {
// 1. Kirim permintaan layanan ke ESA untuk memperoleh hasil verifikasi CAPTCHA dan hasil bisnis.
const result = await fetch('${URI verifikasi bisnis (URI yang dikonfigurasi untuk CAPTCHA di Konsol ESA)}', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'CAPTCHA-verify-param': CAPTCHAVerifyParam},
body: JSON.stringify({
BizParam: document.getElementById('biz_result').value
}),
credentials: 'include'
});
const verify_code = result.headers.get('X-CAPTCHA-Verify-Code')
if (verify_code === 'T001') {
alert('Verifikasi CAPTCHA berhasil!');
} else {
alert('Verifikasi CAPTCHA gagal: ', verify_code)
}
CAPTCHA.refresh()
const data = await result.json()
return data
}Setelah verifikasi signature di sisi server, ESA mengembalikan kode alasan x-CAPTCHA-verify-code dalam header respons. Klien Anda dapat memproses permintaan berdasarkan apakah verifikasi berhasil atau gagal:
Kode Alasan | Penyebab |
T001 | Verifikasi berhasil. |
F003 | Gagal mengurai |
F005 | Scene ID ( |
F017 | Konten |
F018 | Data verifikasi signature digunakan kembali. |
F019 | Verifikasi signature timeout (berlaku selama 90 detik) atau dilakukan sebelum verifikasi dimulai. |
F020 | Tiket verifikasi signature tidak sesuai dengan Scene ID atau pengguna. |
F021 |
|
Referensi
AliyunCAPTCHAConfig Deskripsi Parameter
Parameter | Type | Wajib | Bawaan | Deskripsi |
region | String |
| Wilayah tempat instans CAPTCHA berada. Nilai yang valid:
Produk CAPTCHA memiliki lapisan kontrol di Tiongkok daratan (Tiongkok (Shanghai)) dan Singapura. Berdasarkan parameter panggilan yang Anda konfigurasi, data perilaku, data perangkat, dan data lain yang dikumpulkan oleh klien dikirim ke pusat yang sesuai untuk diproses. Hal ini terutama untuk otentikasi keamanan. | |
prefix | String | Tidak ada | Identitas CAPTCHA. |
initAliyunCAPTCHA Deskripsi Parameter
Parameter | Tipe | Wajib | Bawaan | Deskripsi |
SceneId | String | Tidak ada | Scene ID CAPTCHA. | |
mode | String | Tidak ada | Mode CAPTCHA. Opsi:
| |
element | String | Tidak ada | Elemen placeholder pada halaman untuk rendering CAPTCHA. Harus konsisten dengan elemen placeholder pada kode sumber. | |
button | String | Tidak ada | Elemen yang memicu jendela pop-up CAPTCHA atau verifikasi tanpa-CAPTCHA. Saat diklik, elemen ini menampilkan CAPTCHA atau memicu verifikasi tanpa-CAPTCHA. Nilainya harus sama dengan nilai parameter | |
success | Function | Tidak ada | Fungsi callback untuk verifikasi CAPTCHA yang berhasil. Fungsi ini mengekspos parameter verifikasi. Dalam fungsi callback ini, klien dapat memperoleh | |
fail | Function | Tidak ada | Fungsi callback untuk verifikasi CAPTCHA yang gagal. Fungsi ini mengekspos kode kesalahan kegagalan. | |
getInstance | Function |
| Fungsi callback untuk melampirkan instans CAPTCHA. Callback ini dipanggil setelah CAPTCHA berhasil diinisialisasi. Harus ditulis sebagai berikut: | |
slideStyle | Object |
| Gaya kotak pemicu untuk jenis verifikasi Slider dan Click-and-pass. Anda dapat menyesuaikan lebar dan tinggi dalam satuan px. Parameter ini kompatibel dengan nama parameter historis. Catatan:
| |
language | String |
| Bahasa yang didukung oleh CAPTCHA:
| |
timeout | Number |
| Periode timeout untuk satu permintaan inisialisasi CAPTCHA, dalam milidetik. | |
rem | Number |
| Skala seluruh UI CAPTCHA. Masukkan angka positif. Misalnya, rem parameter terutama ditujukan untuk browser seluler. | |
onError | Function | Tidak ada | Fungsi callback kesalahan untuk permintaan inisialisasi CAPTCHA yang gagal atau timeout serta pemuatan resource. Harus ditulis sebagai berikut: | |
onClose | Function | Tidak ada | Fungsi callback yang dipicu saat jendela pop-up CAPTCHA ditutup. | |
showErrorTip | Boolean | true | Menentukan apakah akan menampilkan tip kesalahan untuk pengecualian akses saat kualitas jaringan buruk. | |
delayBeforeSuccess | Boolean | true | Menentukan apakah akan menunda pemicuan fungsi callback |
Catatan tentang Pemanggilan CAPTCHA dalam Mode Tanpa-CAPTCHA
Anda dapat memanggil metode yang sesuai untuk instans CAPTCHA. Metode berikut tidak didukung untuk verifikasi awal dalam mode penyamaran.
Nama Metode | Deskripsi | Contoh | Skenario |
show | Menampilkan elemen CAPTCHA dan mask. |
| Gunakan ini saat Anda memerlukan jendela pop-up CAPTCHA muncul secara otomatis tanpa klik tombol. |
hide | Menyembunyikan atau menutup elemen CAPTCHA dan mask. |
| Gunakan ini saat Anda memerlukan jendela pop-up CAPTCHA ditutup secara otomatis tanpa klik tombol. |