3 poin oleh kingtw 4 jam lalu | Belum ada komentar. | Bagikan ke WhatsApp

Ini adalah sistem pengumpulan data self-hosted yang mengumpulkan data menggunakan sesi browser nyata milik pengguna, sementara apa yang dikumpulkan dan bagaimana caranya diterbitkan secara dinamis oleh server saat runtime. Server mengendalikan klien (browser) dari jarak jauh dengan pola Command-Execute-Report (perintah-eksekusi-pelaporan).

Sistem ini menyelesaikan melalui desain tiga masalah yang selalu muncul setiap kali membuat crawler baru — beban/pemblokiran pada backend target, hambatan login, dan redeploy klien setiap kali logika pengumpulan berubah.

  • Zero-Footprint: Tidak mengirim permintaan langsung ke server target; browser pengguna yang sudah login yang melakukan pengumpulan sebagai gantinya → dapat mengakses area di balik login sama seperti manusia, serta menghindari beban backend dan pemblokiran.
  • Kontrol dinamis oleh server: Bookmarklet didaftarkan sekali lalu tetap permanen dan tidak berubah. Aturan pengumpulan (selektor·aksi·ekstraksi) diterbitkan server sebagai type command → saat logika berubah, redeploy klien menjadi 0. Dari satu sumber Pydantic, tipe TS dibuat otomatis.
  • Menyusun recipe dengan klik: Saat elemen diklik di WebUI, selektor dibuat otomatis, lalu urutan aksi (click·drag·scroll·swipe) → recipe extract disimpan. Evaluasi script dilarang (allowlist).
  • Pemuatan tanpa kehilangan data: write-ahead (commit sinkron lalu 202) + idempoten + pemulihan otomatis saat restart.
  • Kontrol agen MCP: Live pipe diekspos sebagai alat MCP (penjagaan host allowlist·rate-limit·op TTL). Namun, menghindari bot dan scraping massal bukanlah tujuan.
  • secure-by-default: Autentikasi admin aktif secara default (token otomatis ala Jupyter), batas eksekusi eval respons server (script)·beacon eksternal (beacon), tanpa fingerprinting.
  • Tanpa biaya·portabel: SQLite + antrean in-memory + satu FastAPI. 0 layanan berbayar eksternal. Reproducible lintas OS dengan uv. MIT.

Untuk pengumpulan di situs publik, diperlukan URL publik karena batasan Private Network Access pada browser; ini diatasi dengan menjalankan tunnel sementara cloudflared menggunakan ENABLE_TUNNEL=1 (hasil uji nyata: berhasil mengumpulkan dari situs berita sungguhan).

Belum ada komentar.

Belum ada komentar.