Melakukan web scraping dalam skala besar
(incolumitas.com)<p>- Jika membuat layanan yang menjalankan pencarian Google hingga jutaan kali, dibutuhkan alternatif agar tidak diblokir<br />
- Cara paling mudah adalah menggunakan proxy berbayar, tetapi biayanya cukup mahal <br />
→ Karena itu, ini adalah tulisan menarik yang menjelaskan secara rinci berbagai hal yang sudah dicoba penulis<br />
<br />
- Awalnya menggunakan AWS Lambda + Puppeteer <br />
→ AWS menyediakan 16 region di seluruh dunia, dan setiap 3 kali Lambda dijalankan akan diberikan IP baru <br />
→ Jika menjalankan 1000 Lambda secara bersamaan, akan memakai sekitar 250 IP publik<br />
→ 16 region * 250 berarti 4000 alamat IP, dan sebanyak itu cukup untuk melakukan pencarian Google dalam skala jutaan per minggu <br />
→ Sudah dicoba juga di GCP, dan lucunya Google memblokir IP cloud miliknya sendiri dengan lebih agresif (dibanding AWS)<br />
→ Ini cerita sekitar 2019~2020 dan mungkin sekarang sudah berubah <br />
<br />
- Metode ini bisa dipakai untuk scraping Google/Bing/Amazon dan lainnya, tetapi ada batasannya<br />
→ Jika situs menggunakan perusahaan anti-bot seperti DataDome, Akamai, atau Imperva, maka cara ini tidak berlaku <br />
→ Mereka mengidentifikasi bot lewat browser fingerprinting dengan cara yang sangat beragam<br />
→ Google Picasso, Font/TLS/WebGL Fingerprinting..<br />
→ Sebenarnya kebanyakan layanan scraping skala besar memakai cloud + container Docker, sehingga mudah diidentifikasi<br />
<br />
- Infrastruktur scraping yang sulit dideteksi dan dapat diskalakan <br />
→ Dua aturan untuk berhasil melakukan scraping <br />
1. Jangan memalsukan pengaturan browser <br />
2. Yang paling penting, palsukan pengaturan browser hanya jika "tidak ada yang akan menyadarinya"<br />
→ Untuk itu, kesimpulannya adalah yang terbaik memang "menggunakan perangkat nyata"<br />
⇨ Membeli 500 perangkat Android murah dari berbagai produsen, lalu berlangganan paket data murah<br />
⇨ Menyebarkannya di beberapa kota (dekat antena)<br />
⇨ Memanfaatkan open source seperti DeviceFarmer/stf untuk mengendalikan perangkat secara bersamaan <br />
⇨ Memasang OS ringan seperti Android Go, lalu mengaktifkan mode pesawat setiap 5 menit agar terus mendapatkan alamat IP baru<br />
⇨ "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<br />
→ Ada banyak kerepotan seperti harus membeli 500 perangkat Android, menyiapkan lokasi instalasi, dan melakukan pemeliharaan hardware <br />
<br />
- Peningkatan: mengemulasikan Android <br />
→ Daripada membeli perangkat Android, bagaimana jika memakai Android-X8, Bluestacks, Android Studio Emulator, dan semacamnya?<br />
→ Proxidize memungkinkan pembuatan proxy mobile 4G<br />
→ Memasang 50 dongle 4G di satu server<br />
→ Di tiap server, mengemulasikan 50~100 perangkat Android <br />
→ Menempatkan stasiun ini di 5 kota <br />
→ Mengelola stasiun-stasiun ini dengan perintah yang solid </p>
12 komentar