7 poin oleh GN⁺ 2024-04-28 | 1 komentar | Bagikan ke WhatsApp
  • Dengan AWS Lambda dan Headless Chrome saja, jutaan Google SERP per minggu bisa dikumpulkan, tetapi di hadapan situs yang dilindungi ketat, arsitektur bot berbasis cloud mudah mencapai batasnya
  • Dengan pemanggilan ulang Lambda dan pemanfaatan beberapa region, berdasarkan 16 region, sekitar 16 * 250 = 4000 IP publik dapat dipakai secara bersamaan, dan ini cukup untuk target yang perlindungannya longgar
  • Vendor anti-bot seperti DataDome, Akamai, dan Imperva melacak ketidakcocokan konfigurasi browser, jejak otomasi, dan informasi fingerprint; tantangan sebenarnya lebih dekat ke menurunkan false positive daripada deteksi itu sendiri
  • Sebagai arsitektur yang lebih sulit terdeteksi, diusulkan penggunaan perangkat Android nyata dan IP mobile alih-alih Docker atau server cloud; IP 4G/5G/LTE dibagikan oleh banyak pengguna normal di kota besar sehingga sulit diblokir
  • Farm perangkat nyata mengharuskan pembelian perangkat, penyewaan ruang per kota, pemeliharaan di lokasi, dan penerimaan risiko kegagalan hardware; emulator Android pun masih memiliki risiko deteksi emulasi

Arsitektur scraping skala besar yang dibuat dengan AWS Lambda

  • Saat dulu menjalankan layanan scraping, Google SERP dikumpulkan hingga jutaan per minggu, tetapi penyedia proxy seperti Brightdata, Packetstream, dan Oxylabs tidak digunakan
    • Dianggap sulit mempercayai pelanggan lain yang berbagi bandwidth proxy yang sama
    • Scraping non-DoS terhadap informasi publik dianggap tidak masalah, tetapi dibedakan tegas dari penipuan iklan, spam media sosial, SQL injection otomatis, XSS, dan serangan web sejenis
    • Biaya layanan proxy juga menjadi beban
  • Konfigurasi sebenarnya adalah fungsi yang memasukkan Headless Chrome ke AWS Lambda dan menjalankan browser selama 300 detik dengan puppeteer-extra serta chrome-aws-lambda
  • Karena Google tidak memblokir bot secara ketat untuk mesin pencarinya sendiri dan terutama menerapkan rate limit berdasarkan IP, untuk Google SERP saja mungkin curl pun sudah cukup
  • Di Lambda, setelah 3 pemanggilan fungsi didapatkan IP publik baru, dan jika 1000 fungsi dipanggil bersamaan, jumlahnya mencapai sekitar 250 IP publik
    • Dengan memakai 16 region, dihitung bahwa sekitar 4000 IP publik dapat digunakan secara bersamaan
    • Walau berupa IP pusat data bersama, itu cukup untuk mengumpulkan jutaan Google SERP per minggu
  • Google Cloud Platform juga dicoba, tetapi Google memblokir traffic dari infrastruktur cloud miliknya sendiri lebih ketat daripada traffic AWS
  • Pengalaman ini mengacu pada 2019 dan 2020, dan situasinya mungkin sudah berubah sejak itu

Mengapa bot cloud diblokir

Struktur ekonomi yang mudah terdeteksi

  • Developer bot yang ingin melakukan scraping skala besar sering memasukkan browser ke container Docker lalu mengorkestrasikannya dengan Docker Swarm atau Kubernetes
  • Bot semacam ini kerap di-host di penyedia cloud seperti Hetzner, AWS, dan DigitalOcean
  • Struktur ini sangat berbeda dari lingkungan pengguna manusia
    • Situasi pengguna normal menjelajahi Instagram di dalam container Docker pada VPS Hetzner tidak terasa alami
  • Dua aturan untuk scraping yang sukses disampaikan sebagai berikut
    • Aturan terpenting kedua: jangan berbohong tentang konfigurasi browser
    • Aturan terpenting: berbohonglah tentang konfigurasi browser hanya ketika tidak akan ketahuan

Farm perangkat Android nyata

  • Karena sulit melakukan reverse engineering terhadap library fingerprinting anti-bot yang diobfuscate, diusulkan pendekatan menggunakan perangkat nyata untuk scraping
  • Arsitektur yang diasumsikan adalah membeli 500 perangkat Android murah dan mencampur perangkat dari sekitar 5 produsen demi keragaman fingerprint
    • Perangkat Android murah mulai dari 58 dolar per unit
    • Jika membeli 100 unit sekaligus, diperkirakan bisa mendapat diskon besar
  • Setiap perangkat dipasangi paket data murah dan dikendalikan dengan DeviceFarmer/stf
  • Gagasannya adalah menempatkan masing-masing 100 perangkat di 5 kota besar seperti London, Paris, Boston, Frankfurt, dan Los Angeles, lalu menyewa ruang penyimpanan murah yang dekat dengan antena seluler mobile
  • Pada perangkat dipasang Android Go yang ringan, komponen yang tidak diperlukan dihapus, lalu perangkat dihubungkan ke daya
  • Jika mode pesawat dinyalakan lalu dimatikan setiap 5 menit, perangkat bisa mendapatkan IP baru melalui 4G Carrier Grade NAT
  • Alamat IP mobile dibagikan oleh hingga ratusan ribu pengguna normal di kota besar, sehingga secara praktis sulit diblokir
    • Sebagai contoh, diperkirakan Instagram tidak akan memblokir 200 ribu orang di LA hanya karena sebagian pengguna spam
    • Mengutip dokumen Ofcom, jika alamat IPv4 dalam CGN diblokir, seluruh basis pelanggan dapat terdampak
  • Karena ruang alamat IPv6 terlalu luas, diperkirakan sebagian besar vendor anti-bot memberikan sedikit atau bahkan tidak memberikan reputasi IP pada alamat IPv6

Titik deteksi dan beban operasional arsitektur perangkat nyata

  • Jika perangkat nyata diletakkan di lantai sepanjang hari, kondisinya akan terus tanpa rotasi atau gerakan, sehingga event JavaScript deviceorientation dan devicemotion harus di-spoof pada level kernel
    • Website dapat mengakses data rotasi dan kecepatan Android tanpa meminta izin
  • Selain masalah ini, dianggap belum jelas bagaimana sistem deteksi bot dapat memblokir arsitektur tersebut
  • Beban operasionalnya tidak kecil
    • Harus membeli 500 perangkat Android
    • Harus menyewa ruang penyimpanan di kota-kota besar, dan itu memakan biaya
    • Diperlukan orang di 5 kota untuk memperbaiki masalah farm perangkat
    • Harus menangani hardware, dan masalah dapat terus muncul
  • Arsitektur seperti ini menjadi proyek besar, dan pemeliharaannya bisa menelan biaya ribuan dolar

Alternatif berupa emulator Android

  • Menggunakan emulator Android sebagai pengganti perangkat Android nyata dianggap lebih baik
  • Biaya bisa ditekan, tetapi vendor anti-bot dapat menemukan lingkungan emulasi
  • Ada beberapa metode deteksi yang memungkinkan
    • Red pill berbasis browser dapat mengungkap bahwa browser sedang berjalan di lingkungan emulasi
    • Port scan berbasis browser dapat mencari port yang hanya berjalan pada perangkat Android yang diemulasi atau layanan seperti adb
    • Google dapat menetapkan ID iklan untuk seluruh perangkat mobile, dan jika ID ini tidak ada atau selalu sama, itu bisa menjadi sinyal mencurigakan
    • Dengan Social Media Login Detection, status login akun Gmail atau YouTube dapat diperiksa, dan di Android, tidak adanya login akun Google bisa menjadi target kecurigaan
    • Selain itu, mungkin ada banyak teknik lain untuk mendeteksi perangkat Android yang diemulasi
  • Emulator Android kemungkinan besar tidak sempurna, dan ketidaksempurnaan itu dapat terungkap melalui JavaScript API yang sangat luas pada browser mobile
  • Meski begitu, pendekatan emulasi lebih disukai, dan diusulkan konfigurasi yang menghubungkan dongle 4G ke beberapa server kuat
  • proxidize.com menyediakan proxy mobile 4G, tetapi karena proxy itu sendiri dapat dideteksi, diinginkan penggunaan dongle 4G secara langsung dari emulator Android
  • Arsitektur final berbentuk stasiun scraping per wilayah
    • Menyiapkan 1 server scraping kuat yang terhubung dengan 50 dongle 4G di satu lokasi geografis
    • Menjalankan 50–100 perangkat Android yang diemulasi pada setiap server
    • Menempatkan stasiun seperti ini di 5 kota besar
    • Server command-and-control sederhana mengorkestrasikan 5 stasiun scraping tersebut

1 komentar

 
GN⁺ 2024-04-28
Pendapat Hacker News
  • Sebagai pengacara yang bekerja di bidang web scraping, saya selalu tersenyum ketika melihat thread seperti ini. Hampir semua perusahaan yang kini kita anggap sebagai monopoli di bidang teknologi, atau afiliasinya, memanfaatkan scraping dalam proses membesarkan bisnisnya, dan sekarang perusahaan-perusahaan yang sama melarang startup dan pesaing melakukan scraping data
    Dalam kebanyakan kasus, data itu juga sebenarnya bukan data “milik mereka” dalam arti yang dapat dikenali secara hukum. Karena itu, etika web scraping maupun isu hukum terkait tidak sesederhana itu. Tulisan yang saya buat tentang hal ini musim gugur lalu juga sempat menarik perhatian di sini: https://news.ycombinator.com/item?id=37264676
    • Facebook dan informasi identitas juga mirip. Kalau ingatan saya benar, pada masa awalnya Facebook tumbuh dengan memanfaatkan Google Contacts, tetapi mereka secara agresif menghalangi siapa pun yang mencoba menyimpan data social graph Facebook dalam jangka panjang dan menggunakannya di luar pagar mereka sendiri
      Pada akhirnya, mereka mencegah orang lain memakai taktik yang dulu mereka pakai untuk tumbuh
    • Etika web scraping justru terlihat sangat sederhana. Kurang lebih cukup dengan prinsip, “Anda boleh merespons HTTP request saya sesuka Anda, dan saya boleh menafsirkan respons itu sesuka saya”
      Sejak komunikasi manusia dimulai, bukankah percakapan memang selalu berjalan seperti ini? Sebaliknya, isu hukumnya terlihat seperti kain yang ditenun untuk melindungi pelaku bisnis lama dengan ancaman kekerasan negara; tidak terlalu baru, menyedihkan, tetapi mudah ditebak. Lebih luas lagi, upaya membungkus ini sebagai masalah kekayaan intelektual dan mengaitkannya dengan perlindungan seniman serta kreator juga terasa sangat janggal secara logika sampai membuat tidak nyaman
  • Dulu saya adalah web scraper profesional dan sampai sekarang masih terus mengikuti perkembangan industri ini. Sekarang, uang tidak lagi terutama datang dari web scraping itu sendiri, melainkan dari menjual layanan kepada para web scraper
    Ada banyak SaaS web scraping dan layanan terkait, serta puluhan penyedia residential proxy. Sebagian besar mekanisme anti-bot berevolusi begitu cepat sehingga, bahkan dalam peran software engineering tradisional, seseorang bisa mendapat penghasilan cukup bagus hanya dengan fokus pada teknik bypass anti-bot. Karena laju perubahan seperti ini, bekerja di perusahaan web scraping lebih stabil daripada menjadikan web scraping sebagai profesi mandiri. Scraper biasanya dibayar per proyek sehingga tidak stabil dalam jangka panjang; scraping tingkat lanjut membutuhkan investasi operasional seperti residential proxy dan sewa server; sementara pekerjaan murah bayarannya sangat rendah. Fakta bahwa Brightdata mengadakan konferensi web scraping saja sudah menunjukkan betapa menguntungkannya penjualan layanan scraping skala besar
    • Saya sudah lama berpikir bahwa residential proxy wajib untuk scraping atau mengoperasikan jaringan bot skala besar, tetapi karena belum pernah memakainya langsung, saya belum bisa memastikan bagaimana penggunaannya pada skala nyata
      Saya penasaran apakah perangkat IoT yang keamanannya lemah atau hardware konsumen yang terinfeksi malware lazim digunakan untuk tujuan seperti ini. Cara mendapatkan IP residensial dengan bekerja sama dengan ISP tampaknya tidak menguntungkan atau bahkan tidak mungkin, jadi untuk layanan residential proxy, rasanya hanya ada metode yang cukup tersembunyi
    • Jika ada konferensi yang paling dekat dengan scraping secara umum, saya ingin mendapat rekomendasi. Setahu saya hampir tidak ada konferensi khusus scraping atau komunitas yang kuat, jadi saya ingin belajar dan meningkatkan kemampuan
    • Saya sudah bertahun-tahun menulis scraper di Upwork, tetapi lelah dengan pekerjaan berbasis proyek dan ingin bekerja di SaaS scraping atau memulainya sendiri. Saya ingin mendengar saran
    • Awalnya saya tidak tahu bahwa ini semudah itu, jadi saya merilis kodenya sebagai open source. Saya menghindari GitHub karena tempat seperti Akamai sepertinya akan cepat mengirim DMCA, dan memanfaatkan perbedaan yurisdiksi dengan mengunggahnya ke Gitee, semacam GitHub versi China
      Saya tidak punya latar belakang di bidang ini, tetapi setelah mencocokkan hal-hal yang dibanggakan perusahaan-perusahaan itu, ternyata tidak sulit, dan saya juga punya tujuan praktis untuk mengotomatiskan taruhan olahraga. Pekerjaan utama saya sebenarnya juga cukup dekat dengan hal itu, dan ini membantu saya belajar pemrograman dengan cepat di usia akhir 20-an. Namun hampir seketika saya dibanjiri permintaan dari operator sneaker bot di China dan orang-orang yang memakai bahasa Inggris aneh yang tampaknya bukan penutur asli. Saya menurunkan kodenya bukan karena ancaman hukum, melainkan karena tidak ingin melakukan customer support atau bekerja di bawah orang lain; sebagian besar permintaannya bernada “kalau kamu bekerja, kita bagi hasil”, sehingga sulit dipercaya ada orang yang menerima tawaran seperti itu. Internet itu abadi, jadi mungkin masih ada sebagian kode yang meniru Cyberfed-Akamai 0.8~2.3 beredar di luar sana. Jika kode yang saya unggah dalam waktu 3 tahun setelah belajar pemrograman di pertengahan usia 20-an bisa berhasil, menurut saya perusahaan-perusahaan keamanan siber yang mematok harga mahal untuk produk semacam itu seharusnya malu. Saya bahkan tidak belajar matematika sejak kelas 2 SMA, dan karena ADHD saya tidak bisa menonton video atau membaca tulisan lama-lama, jadi yang saya lakukan hanya menyalin dari GitHub dan layanan serupa sampai akhirnya berjalan. Saya menduga ada banyak solusi ala minyak ular yang dijual di industri ini
    • Saya penasaran bagaimana Anda terus mengikuti perkembangan industri ini
  • Perasaan saya campur aduk soal masalah ini. Teknologi anti-bot makin menjadi titik nyeri besar dalam riset keamanan, dan karena bekerja di bidang ini, kami harus berhadapan dengan sistem seperti itu
    Pelaku ancaman memakai layanan seperti Cloudflare untuk memblokir akses ke payload berbahaya. Ini masalah besar bagi pelanggan yang ingin menemukan dan mendeteksi peniruan merek atau phishing kredensial, tetapi Cloudflare sama sekali tidak membantu dan tampaknya tidak peduli
    • Setuju. Ketika pelaku ancaman bisa membuat akun Cloudflare gratis dan menyembunyikan situs phishing di domain yang baru dibuat 2 jam lalu di balik perlindungan yang didukung perusahaan bernilai 20 miliar dolar, menghindari deteksi menjadi terlalu mudah
      Menariknya, hampir tidak pernah terlihat phishing di balik Akamai. Kami juga bekerja di bidang ini, jadi kami berkepentingan agar ancaman seperti ini tetap bisa dideteksi ke depannya
    • Pada akhirnya, sepertinya kita akan sampai pada suatu bentuk mekanisme pembayaran mikro untuk menyelesaikan masalah ini
  • Istilah “orang yang tidak bisa menyesuaikan diri” dan “orang normal” itu aneh. Alasan orang melakukan pekerjaan seperti ini adalah karena jauh lebih menarik dan menyenangkan daripada membuat situs web React korporat yang membosankan untuk ke-20 kalinya
    Ini menyenangkan karena harus memecahkan masalah dunia nyata dan menemukan cara baru untuk melakukan sesuatu. Pengembangan exploit juga sama. Orang-orang seperti ini bukan orang yang tidak bisa menyesuaikan diri, melainkan orang normal yang mengerjakan hal yang mereka minati. Cara berpikir “orang yang melakukan pekerjaan yang tidak saya sukai adalah orang yang tidak bisa menyesuaikan diri” justru benar-benar aneh
    • Seluruh paragraf itu adalah lelucon. Itulah alasan ada kedipan kecil di ujungnya
  • Teknologi anti-bot juga terlihat seperti ancaman keamanan sekaligus ancaman privasi. Karena kalau memakai mesin virtual, situs bisa memblokir akses, melakukan port scan, atau melakukan berbagai bentuk fingerprinting
    • Saya lebih suka pendekatan tantangan algoritmik yang meminta pengunjung baru memakai komputasi CPU
      Prosedurnya jelas, tidak ada risiko privasi atau trik aneh, dan bahkan jika gagal, kegagalannya terjadi dengan cara yang setidaknya bisa dilihat dan dilaporkan oleh manusia. Itu lebih baik daripada terlihat seperti gangguan yang tidak jelas
  • Saat itu juga sudah dibahas: Scrape like the big boys - https://news.ycombinator.com/item?id=29117022 - November 2021, 189 komentar
  • “Semua situs web bisa mengakses data rotasi dan kecepatan Android tanpa meminta izin”? Ini benar-benar tidak masuk akal
  • Menarik. Saya sedang membuat proyek yang membutuhkan scraping dengan frekuensi rendah
    Saya sedang memikirkan cara menangani jika ditolak, dan mungkin satu perangkat Android murah bisa menutup celah itu