Web’i büyük ölçekte scrape etmek
(incolumitas.com)<p>- Eğer milyonlarca Google araması çalıştıran bir hizmet kuracaksanız, engellenmeyecek bir alternatife ihtiyacınız olur<br />
- En kolay yol ücretli proxy kullanmaktır ama oldukça pahalıdır <br />
→ Bu yüzden yazarın denediklerini ayrıntılı biçimde anlattığı ilginç bir yazı<br />
<br />
- Başlangıçta AWS Lambda + Puppeteer kullanılmış <br />
→ AWS dünya genelinde 16 bölge sunuyor ve Lambda’yı 3 kez çalıştırınca yeni bir IP atanıyor <br />
→ Aynı anda 1000 Lambda çalıştırılırsa yaklaşık 250 public IP kullanılmış oluyor<br />
→ 16 bölge * 250 = 4000 IP adresi; bu da haftalık milyon seviyesinde Google araması yapmak için yeterli <br />
→ GCP’de de denenmiş ama ilginç olan, Google’ın kendi bulut IP’lerini AWS’ye kıyasla daha agresif biçimde engellemesi<br />
→ Bu, 2019~2020 arasındaki bir deneyim; şimdi değişmiş olabilir <br />
<br />
- Bu yöntem Google/Bing/Amazon gibi siteleri scrape etmekte kullanılabilir ama sınırları var<br />
→ DataDome, Akamai, Imperva gibi anti-bot şirketleri kullanılıyorsa uygulanamaz <br />
→ Tarayıcı fingerprinting’in çok çeşitli yöntemleriyle bunun bot olup olmadığını tespit ediyorlar<br />
→ Google Picasso, Font/TLS/WebGL fingerprinting..<br />
→ Aslında büyük ölçekli scraping hizmetlerinin çoğu cloud + Docker container kullandığı için tespit edilmeleri kolay<br />
<br />
- Tespit edilmesi zor ve ölçeklenebilir bir scraping altyapısı <br />
→ Başarılı scraping için iki kural <br />
1. Tarayıcı ayarları hakkında yalan söylememek <br />
2. En önemlisi, tarayıcı ayarları hakkında yalnızca "kimsenin fark etmeyeceği durumlarda" yalan söylemek<br />
→ Bunun için en iyi sonucun doğrudan "gerçek cihazlar kullanmak" olduğu sonucuna varılmış<br />
⇨ Farklı üreticilerden 500 ucuz Android cihaz satın alıp uygun fiyatlı veri planlarına abone olmak<br />
⇨ Bunları farklı şehirlere dağıtmak (antenlere yakın yerlere)<br />
⇨ DeviceFarmer/stf gibi open source araçlarla cihazları aynı anda kontrol etmek <br />
⇨ Android Go gibi hafif bir OS kurup her 5 dakikada bir uçak moduna alarak sürekli yeni IP adresleri edinmek<br />
⇨ "4G carrier grade NAT": IPv4 adres tükenmesini önlemek için tasarlanmış bu yöntemde yüz binlerce kullanıcı aynı IP’yi paylaşabildiğinden engellemek pratikte imkânsızdır<br />
→ Ancak 500 Android cihaz satın almak, kurulum için yer ayarlamak ve donanım bakımı yapmak gibi zahmetli yönleri var <br />
<br />
- İyileştirme: Android’i emüle etmek <br />
→ Android cihaz satın almak yerine Android-X8, Bluestacks, Android Studio Emulator vb. kullanılabilir mi?<br />
→ Proxidize, 4G mobile proxy kurmayı mümkün kılıyor<br />
→ Bir sunucuya 50 adet 4G dongle takmak<br />
→ Her sunucuda 50~100 Android cihazı emüle etmek <br />
→ Bu istasyonları 5 şehre kurmak <br />
→ Güçlü komutlarla bu istasyonları yönetmek </p>
12 yorum