Scraping Lewat Panel Preview: Sesi Adalah Kredensial
Sesi panel preview adalah kredensial scraping: token URL berotasi, klik gagal palsu, dan CDP sengaja mati.
Ringkasan
Sesi di panel itu ternyata kredensialnya, bukan sekadar alat bantu—fetch URL sama dari luar cuma dapat captcha interstitial terus. Token tiap halaman juga berotasi, jadi navigasi mesti digerakkan klik beneran, nggak bisa asal susun URL sendiri. Hasilnya? 4.828 perkara kepailitan sukses ditarik dari portal Jakarta Pusat, padahal awalnya sering gagal gara-gara gerbang anti-bot.
Sesi Panel Adalah Kredensial, Bukan Alat Bantu
Saya sedang menunggu hasil klik otomatis di panel preview workbench AI desktop, dan yang muncul malah satu baris error: The pointer input never reached the page. Detail pentingnya: klik itu tetap jalan, halaman tetap pindah. Kebetulan saat itu saya sedang menarik data perkara dari portal pengadilan Jakarta Pusat untuk proyek DemandScope. Captchanya sudah selesai saya kerjakan secara manual di dalam panel, tapi begitu saya fetch URL yang sama dari luar, yang balik hanya interstitial captcha sepanjang 769 byte.
Dugaan pertama saya: gerbang anti-bot itu cuma soal identitas dari luar. IP bersih, User-Agent wajar, speed klik manusiawi, beres. Artikel saya sebelumnya di blog ini memang bermula dari situ, stealth proxy yang mati di captcha yang mengukur browser. Tapi addendum kali ini menohok lebih dalam. Setelah membaca source code runtime yang terpasang, yaitu preview.ts dan use-preview-routing.ts beserta dua tool Python di sekitarnya, saya tahu karakter panelnya lebih unik dari sekadar captcha. Sesi di dalam panel adalah satu-satunya tiket. List dan detil perkara terikat sesi PHP, dan fetch robot ke URL yang sama tetap mengembalikan interstitial 769 byte tadi. Panel bukan alat bantu; panel adalah kredensialnya.
Token Berotasi: Navigasi Harus Digerakkan Klik
Karakter kedua yang bikin URL tidak bisa dipasang bola: pola path-nya /list_perkara/page/{N}/{token} dan token itu berotasi di tiap halaman. URL dalam yang saya susun sendiri malah dipantul balik ke halaman sebelumnya. Navigasi harus digerakkan klik, titik. Ditambah lagi, drive_preview sering melapor gagal padahal navigasinya sukses. Flag sukses dari tool otomasi bukan kebenaran; URL delta yang dikembalikan barulah fakta. Kalau saya pasang retry otomatis di atas flag itu, yang terjadi klik ganda dan halaman terlewati.
Model tabnya juga tidak seperti yang saya bayangkan. Tidak ada API berpindah tab. Semua aksi membaca atau menggerakkan halaman selalu menyasar tab yang aktif. Membuka sebuah URL memakai ulang tab browser yang terakhir dipakai; URL tidak punya identitas, tab adalah wadah yang dinavigasi. Artinya link chat yang saya kirim berfungsi sebagai remote control tab panel: buka URL yang sama, tab yang dimaksud maju ke depan, tanpa duplikat.
Tanpa CDP: Remote Debugging Sengaja Dibiarkan Mati
Lalu kenapa tidak pakai DevTools Protocol saja supaya hemat? Karena memang tidak tersedia. Aplikasi desktop ini tidak pernah mengaktifkan remote debugging; beberapa port yang saya duga adalah listener CDP ternyata bukan. Secara arsitektur memang begini: Google mendukung CDP untuk produk resminya sendiri dan penggunaan langsung pihak ketiga tidak didukung [1]. Di Electron, endpoint remote debugging hanya terbuka kalau developer sengaja menambahkan switch-nya sebelum aplikasi siap [2]. Port debug yang terbuka di profil yang bawa sesi ibarat memberi kunci penuh sesi itu; dibiarkan mati adalah keputusan yang benar.
Dua Gerbang Sekaligus dan Kebiasaan Kerjanya
Soal sesi, mekanisme web biasa yang bekerja dengan benar. ID sesi di cookie adalah cara server tahu bahwa dua request datang dari browser yang sama [3]. Captcha tipe checkbox akan meloloskan pengguna nyata begitu langsung atau mengeluarkan tantangan, sedangkan varian skor menghitung interaksi diam-diam tanpa input apa pun [4]. Kasus ini memperlihatkan: ada dua gerbang yang bekerja sekaligus dan berbeda sifat. Cookie sesi menempel pada browser, sementara token rotasi menempel pada alur navigasi. URL yang disimpan begitu saja rusak di dua lapis sekaligus; itu sebabnya hasil crawl tidak bisa diputar ulang dari daftar URL, hanya dari alur klik yang benar.
Hasil akhirnya: 4.828 perkara kepailitan dan PKPU dari portal Jakarta Pusat, 242 halaman kali 20 baris, segar per 06 Oktober 2026, tercatat di log proyek DemandScope. Di dalamnya ada Unilever lawan CV Cipta Usaha Nagari, ada Ascot Group lawan PT MNC Sky Vision Tbk. Bukan hasil keberuntungan; hasil dari tiga keputusan yang benar: pertahankan sesi di panel, gerakkan navigasi dengan klik, dan verifikasi lewat keadaan halaman bukan flag tool.
Kalau mau meniru pola ini, empat kebiasaan yang saya pegang. Jangan pernah retry otomatis di atas kegagalan klik yang terbukti kosmetik; periksa URL dan DOM-nya dulu. Cookie sesi mati bersama sesi browser, jadi pasang checkpoint di tengah crawl, jangan andalkan resume dari URL. Jauhkan debug port dari profil yang membawa sesi nyata. Dan ketika tantangan captcha mendadak membludak, berhenti dulu; gerbang yang mengukur browser tidak kalah oleh tool, dan tidak perlu dilawan.
## Sumber