Web’i büyük ölçekte scrape etmek
(incolumitas.com)-
Eğer milyonlarca Google araması çalıştıran bir hizmet kuracaksanız, engellenmeyecek bir alternatife ihtiyacınız olur
-
En kolay yol ücretli proxy kullanmaktır ama oldukça pahalıdır
→ Bu yüzden yazarın denediklerini ayrıntılı biçimde anlattığı ilginç bir yazı
- Başlangıçta AWS Lambda + Puppeteer kullanılmış
→ AWS dünya genelinde 16 bölge sunuyor ve Lambda’yı 3 kez çalıştırınca yeni bir IP atanıyor
→ Aynı anda 1000 Lambda çalıştırılırsa yaklaşık 250 public IP kullanılmış oluyor
→ 16 bölge * 250 = 4000 IP adresi; bu da haftalık milyon seviyesinde Google araması yapmak için yeterli
→ GCP’de de denenmiş ama ilginç olan, Google’ın kendi bulut IP’lerini AWS’ye kıyasla daha agresif biçimde engellemesi
→ Bu, 2019~2020 arasındaki bir deneyim; şimdi değişmiş olabilir
- Bu yöntem Google/Bing/Amazon gibi siteleri scrape etmekte kullanılabilir ama sınırları var
→ DataDome, Akamai, Imperva gibi anti-bot şirketleri kullanılıyorsa uygulanamaz
→ Tarayıcı fingerprinting’in çok çeşitli yöntemleriyle bunun bot olup olmadığını tespit ediyorlar
→ Google Picasso, Font/TLS/WebGL fingerprinting..
→ Aslında büyük ölçekli scraping hizmetlerinin çoğu cloud + Docker container kullandığı için tespit edilmeleri kolay
- Tespit edilmesi zor ve ölçeklenebilir bir scraping altyapısı
→ Başarılı scraping için iki kural
-
Tarayıcı ayarları hakkında yalan söylememek
-
En önemlisi, tarayıcı ayarları hakkında yalnızca "kimsenin fark etmeyeceği durumlarda" yalan söylemek
→ Bunun için en iyi sonucun doğrudan "gerçek cihazlar kullanmak" olduğu sonucuna varılmış
⇨ Farklı üreticilerden 500 ucuz Android cihaz satın alıp uygun fiyatlı veri planlarına abone olmak
⇨ Bunları farklı şehirlere dağıtmak (antenlere yakın yerlere)
⇨ DeviceFarmer/stf gibi open source araçlarla cihazları aynı anda kontrol etmek
⇨ Android Go gibi hafif bir OS kurup her 5 dakikada bir uçak moduna alarak sürekli yeni IP adresleri edinmek
⇨ "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
→ Ancak 500 Android cihaz satın almak, kurulum için yer ayarlamak ve donanım bakımı yapmak gibi zahmetli yönleri var
- İyileştirme: Android’i emüle etmek
→ Android cihaz satın almak yerine Android-X8, Bluestacks, Android Studio Emulator vb. kullanılabilir mi?
→ Proxidize, 4G mobile proxy kurmayı mümkün kılıyor
→ Bir sunucuya 50 adet 4G dongle takmak
→ Her sunucuda 50~100 Android cihazı emüle etmek
→ Bu istasyonları 5 şehre kurmak
→ Güçlü komutlarla bu istasyonları yönetmek
12 yorum
Proxy'ler, scraping servisleri, anti-bot yazılımları vb. yukarıdaki yazıda iyi şekilde derlenmiştir.
Harika bir hack!
https://www.diffbot.com/products/crawl/
Tarama yapıp web sayfası scraping'i yapan bir hizmet de var. Scraping edilen veriler, gereksiz bilgiler hariç tutularak JSON olarak saklanıyor.
Ağzım açık kaldı...
Bu arada tamamen farklı bir konu ama..
Google aramayı API olarak sunup satan https://serpapi.com/ gibi yerler de var.
Ama burası Naver aramasını da API olarak sunup birlikte satıyor haha
https://serpapi.com/naver-search-api
Aylık 30 bin arama için $250 gibi şaşırtıcı? bir fiyat
Bu kadar pahalı olması şaşırtıcı mı? Pek kestiremiyorum.
Evet, oldukça pahalı. Yine de ücretli proxy kullanmaya kıyasla öyle.
API olduğu için engellenme endişesi olmadan kullanımı rahat.
Yerli koşullarda bakınca, belli ölçüde veri sunan 0 TL’lik MVNO tarifeleri akla geliyor ama...
Toplu abonelik yapmak zor olduğundan, bu da pek mümkün görünmüyor.
Google Fi örneğinde, tek bir hatta en fazla 4 ek data SIM’i mümkün olduğu için bu da bir yöntem olabilir gibi görünüyor
Daha önce naver'dan bir şeyleri scrape ederken
AWS Lambda'da olmuyor ama GCP Functions'ta oluyordu diye hatırlıyorum,
IP aralığı açık olduğu için böyledir diye düşünmüştüm ama öyle değilmiş galiba.
Zaten 1. yöntemle yapıyordum; diğer yöntemler neler var diye baktım ama... aklıma bile gelmemişti.
Aslında 1 numaradaki Lambda+Puppeteer da o şekilde yapılırsa fena olmayabilir,
ama sondaki Proxidize yöntemiyle karşılaştırıldığında muhtemelen scraping ölçeğine göre maliyet farkı olacaktır.
Daha büyük hacim gerektiğinde Proxidize daha istikrarlı olur gibi, ama basitçe yapmak için 1 numara da kötü görünmüyor.
Sonda tanıtılan https://proxidize.com/ ilginçmiş.
Kendi 4G mobil proxy'nizi oluşturup yönetmenizi sağlayan bir donanım+yazılım çözümü.
5 dongle'lı sürüm $399'mış. Kullanıcıların ülke listesinde Kore'yi de gördüğüme göre kullanmak mümkün gibi?
CGNAT kadar olmasa da, yazılım proxy havuzunu tamamen yöneten Scrapoxy gibi çözümler de var.