Melakukan web scraping dalam skala besar
(incolumitas.com)-
Jika membuat layanan yang menjalankan pencarian Google hingga jutaan kali, dibutuhkan alternatif agar tidak diblokir
-
Cara paling mudah adalah menggunakan proxy berbayar, tetapi biayanya cukup mahal
→ Karena itu, ini adalah tulisan menarik yang menjelaskan secara rinci berbagai hal yang sudah dicoba penulis
- Awalnya menggunakan AWS Lambda + Puppeteer
→ AWS menyediakan 16 region di seluruh dunia, dan setiap 3 kali Lambda dijalankan akan diberikan IP baru
→ Jika menjalankan 1000 Lambda secara bersamaan, akan memakai sekitar 250 IP publik
→ 16 region * 250 berarti 4000 alamat IP, dan sebanyak itu cukup untuk melakukan pencarian Google dalam skala jutaan per minggu
→ Sudah dicoba juga di GCP, dan lucunya Google memblokir IP cloud miliknya sendiri dengan lebih agresif (dibanding AWS)
→ Ini cerita sekitar 2019~2020 dan mungkin sekarang sudah berubah
- Metode ini bisa dipakai untuk scraping Google/Bing/Amazon dan lainnya, tetapi ada batasannya
→ Jika situs menggunakan perusahaan anti-bot seperti DataDome, Akamai, atau Imperva, maka cara ini tidak berlaku
→ Mereka mengidentifikasi bot lewat browser fingerprinting dengan cara yang sangat beragam
→ Google Picasso, Font/TLS/WebGL Fingerprinting..
→ Sebenarnya kebanyakan layanan scraping skala besar memakai cloud + container Docker, sehingga mudah diidentifikasi
- Infrastruktur scraping yang sulit dideteksi dan dapat diskalakan
→ Dua aturan untuk berhasil melakukan scraping
-
Jangan memalsukan pengaturan browser
-
Yang paling penting, palsukan pengaturan browser hanya jika "tidak ada yang akan menyadarinya"
→ Untuk itu, kesimpulannya adalah yang terbaik memang "menggunakan perangkat nyata"
⇨ Membeli 500 perangkat Android murah dari berbagai produsen, lalu berlangganan paket data murah
⇨ Menyebarkannya di beberapa kota (dekat antena)
⇨ Memanfaatkan open source seperti DeviceFarmer/stf untuk mengendalikan perangkat secara bersamaan
⇨ Memasang OS ringan seperti Android Go, lalu mengaktifkan mode pesawat setiap 5 menit agar terus mendapatkan alamat IP baru
⇨ "4G carrier grade NAT": NAT kelas operator 4G adalah cara yang dirancang untuk mencegah kehabisan alamat IPv4, sehingga satu IP dibagi oleh ratusan ribu pengguna dan praktis tidak mungkin diblokir
→ Ada banyak kerepotan seperti harus membeli 500 perangkat Android, menyiapkan lokasi instalasi, dan melakukan pemeliharaan hardware
- Peningkatan: mengemulasikan Android
→ Daripada membeli perangkat Android, bagaimana jika memakai Android-X8, Bluestacks, Android Studio Emulator, dan semacamnya?
→ Proxidize memungkinkan pembuatan proxy mobile 4G
→ Memasang 50 dongle 4G di satu server
→ Di tiap server, mengemulasikan 50~100 perangkat Android
→ Menempatkan stasiun ini di 5 kota
→ Mengelola stasiun-stasiun ini dengan perintah yang solid
12 komentar
Proxy, layanan scraping, software anti-bot, dan lain-lain dirangkum dengan baik dalam tulisan di atas.
Peretasan yang keren!
https://www.diffbot.com/products/crawl/
Ada juga layanan yang melakukan crawling lalu scraping halaman web. Data hasil scraping disimpan dalam format JSON dengan mengecualikan informasi yang tidak diperlukan.
Mulut sampai ternganga...
Ngomong-ngomong hal yang sama sekali berbeda..
Ada juga tempat seperti https://serpapi.com/ yang menjual Google Search dalam bentuk API..
Tapi di sini mereka juga menjual pencarian Naver dalam bentuk API, haha
https://serpapi.com/naver-search-api
Harga yang mencengangkan? yaitu $250 untuk 30 ribu pencarian per bulan
Apakah ini mengejutkan karena terlalu mahal? Saya kurang punya gambaran.
Ya, itu memang sangat mahal. Dibandingkan dengan hal-hal seperti menggunakan proxy berbayar.
Karena berupa API, ini memang nyaman karena tidak perlu khawatir diblokir.
Kalau mengacu pada kondisi dalam negeri, saya jadi teringat paket MVNO gratis 0 won yang setidaknya menyediakan sejumlah data...
Tapi karena sulit melakukan pendaftaran dalam jumlah besar, sepertinya ini juga akan sulit.
Untuk Google Fi, satu jalur mendukung hingga 4 kartu SIM data tambahan, jadi sepertinya ini juga bisa menjadi salah satu cara.
Dulu saat men-scrape sesuatu dari naver
di AWS lambda tidak bisa, tapi di GCP functions bisa,
saya ingat sempat berpikir itu karena rentang IP-nya terbuka, tapi sepertinya bukan begitu juga.
Saya sudah menggunakan cara nomor 1, jadi saya melihat metode lain yang ada apa saja.. ternyata ini benar-benar di luar dugaan saya.
Sebenarnya, Lambda+Puppeteer pada poin 1 juga sepertinya cukup oke jika memakai cara itu,
tetapi dibandingkan dengan metode Proxidize di bagian paling akhir, kemungkinan akan ada perbedaan biaya tergantung skala scraping-nya.
Semakin besar kebutuhan skalanya, Proxidize mungkin akan lebih stabil, tetapi untuk cara yang sederhana, opsi nomor 1 juga sepertinya tidak buruk.
https://proxidize.com/ yang diperkenalkan di bagian akhir menarik juga.
Ini adalah solusi hardware+software yang memungkinkan Anda membuat dan mengelola sendiri proxy mobile 4G.
Versi 5 dongle harganya $399. Melihat Korea juga ada di daftar negara pengguna, sepertinya bisa dipakai?
Meski bukan sampai CGNAT, ada juga solusi seperti Scrapoxy yang mengelola penuh software proxy pool.