Jika Ingin Melakukan Web Scraping Seperti Perusahaan Besar (2021)
(incolumitas.com)- 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 = 4000IP 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
curlpun 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
4000IP publik dapat digunakan secara bersamaan - Walau berupa IP pusat data bersama, itu cukup untuk mengumpulkan jutaan Google SERP per minggu
- Dengan memakai 16 region, dihitung bahwa sekitar
- 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
- Arsitektur berbasis Lambda dapat bekerja untuk target yang sampai tingkat tertentu mengizinkan scraping, seperti Google, Bing, dan Amazon, tetapi tidak cocok untuk situs yang menerapkan perlindungan kuat
- Vendor anti-bot seperti DataDome, Akamai, dan Imperva mencari fingerprint browser, ketidakcocokan konfigurasi, dan jejak yang berbeda dari browser yang dikendalikan manusia
- Contoh teknologi deteksi tersebar luas
- Metode deteksi bot sangat banyak, dan hampir semua arsitektur bot rentan terhadap deteksi sampai batas tertentu
- Membuat bot lebih sulit daripada mendeteksinya, dan tantangan yang lebih besar bagi vendor anti-bot lebih dekat ke menurunkan false positive daripada menangkap sebagian besar bot
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
deviceorientationdandevicemotionharus 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
Pendapat Hacker News
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
Pada akhirnya, mereka mencegah orang lain memakai taktik yang dulu mereka pakai untuk tumbuh
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
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 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
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
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
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
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
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
Saya sedang memikirkan cara menangani jika ditolak, dan mungkin satu perangkat Android murah bisa menutup celah itu