Browser stealth milik BrowserAct berhasil melewati pemeriksaan deteksi bot yang menandai mode headless default Playwright sebagai bot, meskipun kedua skrip menyelesaikan alur login yang sama. Perbedaan ini menunjukkan mengapa pendekatan berbasis agen bisa lebih aman saat Anda perlu berinteraksi dengan situs yang melindungi diri dari otomatisasi.

Mengapa pengujian ini penting

Alat otomatisasi mendukung pengujian, pengumpulan data, dan manajemen akun. Sebagian besar pengembang menggunakan framework berbasis selector seperti Playwright karena memungkinkan Anda menulis instruksi yang presisi—“klik tombol dengan CSS selector ini”—dan memverifikasi hasilnya dengan cepat. Namun, situs modern menyematkan skrip yang mendeteksi browser headless: string user-agent yang generik, properti webdriver, atau pola interaksi yang tidak menyerupai manusia. Ketika sinyal-sinyal tersebut muncul, situs akan memblokir permintaan atau menyajikan CAPTCHA, yang secara efektif melumpuhkan skrip tersebut.

Browser berbasis agen mencoba meniru pengguna manusia tanpa bergantung pada selector yang telah ditulis sebelumnya. Mereka memperlakukan sebuah halaman sebagai kumpulan elemen yang dapat ditindaklanjuti, memilih satu elemen berdasarkan posisinya dalam indeks internal alih-alih menggunakan jalur CSS. Pengujian ini membandingkan kedua pendekatan tersebut pada halaman login yang dirender dengan JavaScript dan sebuah situs yang sengaja melakukan pemeriksaan bot.

Eksperimen

Saya menulis dua skrip yang melakukan langkah-langkah yang sama: memuat halaman login, memasukkan kredensial, mengirimkan (submit), dan mencapai halaman inventaris. Satu skrip menggunakan Playwright dalam mode headless default; skrip lainnya menggunakan browser stealth milik BrowserAct, yang menyamarkan sidik jari (fingerprint) yang memicu deteksi bot.

Kedua skrip melakukan autentikasi terhadap situs sandbox, membuktikan bahwa alur login inti berfungsi terlepas dari alat yang digunakan. Perbedaan muncul saat skrip mengunjungi halaman deteksi bot khusus yang mengembalikan flag JSON isBot. Playwright melaporkan isBot: true, yang memicu lima pemeriksaan deteksi terpisah. BrowserAct mengembalikan isBot: false, yang menunjukkan bahwa halaman tersebut menganggapnya sebagai pengunjung manusia biasa.

Saya menelusuri perbedaan tersebut ke dua detail teknis. Konfigurasi default Playwright mengirimkan string user-agent yang generik dan membiarkan flag webdriver terekspos—keduanya mudah dideteksi oleh skrip deteksi. Mode stealth BrowserAct menulis ulang user-agent, menghapus properti webdriver, dan menyelaraskan sidik jarinya dengan browser desktop pada umumnya.

Perbedaan cara kerja kedua alat di balik layar

Aspek Playwright (default) BrowserAct (stealth)
Model interaksi Berbasis selector, deterministik Berbasis agen, berbasis indeks
Kebutuhan akan selector yang ditulis sebelumnya Wajib; skrip harus mengetahui struktur DOM yang tepat Tidak diperlukan; agen menemukan elemen yang dapat ditindaklanjuti saat runtime
Penanganan perubahan tata letak Rusak jika selector bergeser Tetap berjalan selama posisi elemen tetap berada dalam daftar indeks
Paparan terhadap pemeriksaan bot User-agent dan webdriver dibiarkan apa adanya Sidik jari (fingerprint) sengaja disamarkan
Kasus penggunaan umum Situs internal, UI yang stabil, siklus pengujian cepat Situs publik dengan langkah anti-otomatisasi, halaman yang terus berubah

Tabel tersebut merangkum pertukaran (trade-offs) praktisnya. Playwright unggul saat Anda mengontrol situs tersebut dan dapat menjamin pengenal elemen yang stabil. Browser berbasis agen unggul saat Anda tidak dapat memprediksi struktur halaman atau saat situs tersebut secara aktif mencoba memblokir skrip.

Siapa yang diuntungkan dan siapa yang berisiko

Pengembang yang membangun rangkaian pengujian regresi untuk aplikasi mereka sendiri dapat menjaga biaya tetap rendah dan kecepatan pengujian tetap tinggi dengan tetap menggunakan Playwright. Sifatnya yang deterministik mengarahkan kegagalan langsung ke regresi kode, dan ketiadaan lapisan stealth tambahan mengurangi kompleksitas.

Sebaliknya, tim yang melakukan scraping data, mengotomatiskan pembuatan akun, atau memantau situs kompetitor sering kali menemui hambatan karena halaman target sering berubah atau menyematkan deteksi bot yang agresif. Dalam skenario tersebut, browser berbasis agen menghindari jalan buntu "Anda adalah bot" secara langsung dan terus melanjutkan ke data yang mereka butuhkan.

Biaya tersembunyi dari "berhasil dijalankan"

Saya memperingatkan bahwa kode keluar (exit code) yang sukses tidak menjamin otomatisasi berperilaku sesuai keinginan. Dalam pengujian Playwright, skrip selesai tanpa memunculkan error, namun halaman tersebut tetap menganggap permintaan tersebut sebagai bot. Hasilnya adalah kegagalan tersembunyi: langkah-langkah hilir (downstream) yang mengandalkan konten khusus manusia tidak pernah menerima data yang diharapkan.

Untuk mendeteksi kegagalan senyap seperti itu, periksa bukti halaman setelah setiap eksekusi: posisi gulir, tinggi dokumen, dan panggilan jaringan. Jika DOM terlihat berbeda dari apa yang dilihat manusia, atau jika lalu lintas jaringan menyertakan pengalihan tak terduga ke tantangan verifikasi, kemungkinan besar otomatisasi tersebut gagal mencapai tujuannya.

Intinya

Jika Anda pemilik situs tersebut dan dapat membuat skrip menggunakan selektor yang stabil, Playwright tetap menjadi pilihan pragmatis—cepat, murah, dan mudah diintegrasikan ke dalam pipeline CI. Saat Anda menghadapi tata letak yang tidak diketahui, pertahanan anti-otomatisasi yang agresif, atau perubahan UI yang sering terjadi, browser agen seperti BrowserAct menawarkan jalur yang lebih tangguh. Jangan percaya begitu saja pada eksekusi yang berhasil; verifikasi bahwa halaman berperilaku sebagaimana layaknya manusia, dan pilihlah alat yang sesuai dengan profil risiko situs target Anda.