7 puan yazan GN⁺ 2024-04-28 | 1 yorum | WhatsApp'ta paylaş
  • Yalnızca AWS Lambda ve Headless Chrome ile haftada milyonlarca Google SERP toplanabiliyordu, ancak güçlü şekilde korunan siteler karşısında bulut tabanlı bot mimarisi kolayca sınırlarına ulaşıyordu
  • Lambda'yı yeniden çağırma ve birden çok bölge kullanımıyla, 16 bölge temelinde yaklaşık 16 * 250 = 4000 genel IP aynı anda kullanılabiliyordu ve bu, gevşek hedefler için yeterliydi
  • DataDome, Akamai, Imperva gibi anti-bot şirketleri tarayıcı ayar tutarsızlıklarını, otomasyon izlerini ve parmak izi bilgilerini takip ediyor; asıl zor problem tespitin kendisinden çok yanlış pozitif oranını düşürmek olmaya yakındı
  • Daha az tespit edilen bir mimari olarak Docker veya bulut sunucuları yerine gerçek Android cihazları ve mobil IP'leri kullanma yaklaşımı öneriliyor; 4G/5G/LTE IP'leri büyük şehirlerde çok sayıda normal kullanıcı tarafından paylaşıldığı için engellenmeleri zor
  • Gerçek cihaz çiftlikleri; cihaz satın alma, şehirlere göre alan kiralama, yerinde bakım ve donanım arızaları gibi yükleri beraberinde getiriyor; Android emülatörlerinde de emülasyon tespiti riski sürüyor

AWS Lambda ile kurulan büyük ölçekli scraping mimarisi

  • Geçmişte scraping hizmeti işletirken haftada milyonlarca Google SERP toplamış olsa da, Brightdata, Packetstream, Oxylabs gibi proxy sağlayıcılarını kullanmamış
    • Aynı proxy bant genişliğini paylaşan diğer müşterilere güvenmenin zor olduğunu düşünüyormuş
    • Herkese açık bilgiler üzerinde DoS dışı scraping'i kabul edilebilir bulsa da, reklam dolandırıcılığı, sosyal medya spam'i, otomatik SQL injection, XSS gibi web saldırılarıyla arasına çizgi çekiyor
    • Proxy hizmetlerinin maliyeti de bir yük olmuş
  • Gerçek kurulum, AWS Lambda içine Headless Chrome koyup puppeteer-extra ve chrome-aws-lambda ile 300 saniye boyunca tarayıcı çalıştıran bir fonksiyondan oluşuyormuş
  • Google, kendi arama motoruna karşı bot engellemeyi çok sert uygulamıyor ve daha çok IP bazlı hız sınırlaması kullanıyor; bu yüzden yalnızca Google SERP için bakılırsa curl ile bile mümkün olabileceğini düşünüyor
  • Lambda'da fonksiyon 3 kez çağrıldıktan sonra yeni bir genel IP alındığını, 1000 fonksiyon eşzamanlı çağrıldığında yaklaşık 250 genel IP'ye ulaşıldığını söylüyor
    • 16 bölge kullanılırsa aynı anda yaklaşık 4000 genel IP kullanılabildiğini hesaplıyor
    • Bunlar paylaşımlı veri merkezi IP'leri olsa da, haftada milyonlarca Google SERP toplamak için yeterliymiş
  • Google Cloud Platform da denenmiş, ancak Google kendi bulut altyapısından gelen trafiği AWS trafiğinden daha sert engellemiş
  • Bu deneyimin 2019 ve 2020 dönemine ait olduğu, sonrasında durumun değişmiş olabileceği belirtiliyor

Bulut botları neden engelleniyor?

Tespit edilmesi kolay ekonomik mimari

  • Büyük ölçekli scraping yapmak isteyen bot geliştiricileri çoğu zaman tarayıcıyı Docker konteynerine koyup Docker Swarm veya Kubernetes ile orkestrasyon yapıyor
  • Bu botlar sıkça Hetzner, AWS, DigitalOcean gibi bulut sağlayıcılarında barındırılıyor
  • Bu mimari, insan kullanıcı ortamından ciddi biçimde farklı
    • Normal bir kullanıcının Hetzner VPS içindeki bir Docker konteynerinden Instagram'da gezinmesi doğal bir durum değil
  • Başarılı scraping için iki kural öneriliyor
    • İkinci en önemli kural: Tarayıcı ayarları hakkında yalan söylemeyin
    • En önemli kural: Yalnızca yakalanmayacağınız zaman tarayıcı ayarları hakkında yalan söyleyin

Gerçek Android cihaz çiftliği

  • Obfuscate edilmiş anti-bot parmak izi toplama kütüphanelerini tersine mühendislikle çözmek zor olduğu için, scraping için gerçek cihaz kullanma yaklaşımı öneriliyor
  • Varsayılan mimari; 500 ucuz Android cihaz satın alıp parmak izi çeşitliliği için bunları yaklaşık 5 üretici arasında karıştırmak
    • Ucuz Android cihazlar cihaz başına 58 dolardan başlıyor
    • Bir seferde 100 adet alınırsa büyük indirim alınabileceği düşünülüyor
  • Her cihaza ucuz bir veri tarifesi bağlanıyor ve DeviceFarmer/stf ile kontrol ediliyor
  • London, Paris, Boston, Frankfurt, Los Angeles gibi 5 büyük şehirde her birine 100 cihaz yerleştirip, mobil baz istasyonlarına yakın ucuz depolama alanı kiralama fikri anlatılıyor
  • Cihazlara hafif Android Go kuruluyor, gereksiz unsurlar çıkarılıyor ve cihazlar sürekli elektriğe bağlı tutuluyor
  • Her 5 dakikada bir uçak modunu açıp kapatarak 4G Carrier Grade NAT üzerinden yeni IP alınabiliyor
  • Mobil IP adresleri büyük şehirlerde yüz binlerce normal kullanıcı tarafından paylaşıldığı için fiilen engellenmeleri zor
    • Örnek olarak, Instagram'ın birkaç spam kullanıcısı yüzünden LA'deki 200 bin kişiyi engellemeyeceği savunuluyor
    • CGN altında bir IPv4 adresi engellenirse bunun tüm abone tabanını etkileyebileceğine dair Ofcom belgesine atıf yapılıyor
  • IPv6 adres alanı çok geniş olduğu için, çoğu anti-bot şirketinin IPv6 adreslerine çok az veya hiç IP itibarı vermediği düşünülüyor

Gerçek cihaz mimarisinin tespit noktaları ve operasyon yükü

  • Gerçek cihazlar gün boyu yerde sabit durursa dönme veya hareket olmaması dikkat çekebileceği için, deviceorientation ve devicemotion JavaScript event'lerinin kernel seviyesinde spoof edilmesi gerekiyor
    • Web siteleri Android'in dönüş ve ivme verilerine izin istemeden erişebiliyor
  • Bu sorun dışında, söz konusu mimarinin bot tespit sistemleri tarafından nasıl engellenebileceği net görünmüyor
  • Operasyon yükü küçük değil
    • 500 Android cihaz satın almak gerekiyor
    • Büyük şehirlerde depolama alanı kiralamak gerekiyor ve bu maliyetli
    • 5 şehirde cihaz çiftliği sorunlarını çözebilecek insanlara ihtiyaç var
    • Donanımla uğraşmak gerekiyor ve sürekli sorun çıkabiliyor
  • Bu tür bir yapı büyük bir projeye dönüşüyor ve bakımının binlerce dolara mal olabileceği düşünülüyor

Alternatif olarak Android emülatörü

  • Gerçek Android cihazlar yerine Android emülatörleri kullanmanın daha iyi olabileceği düşünülüyor
  • Maliyet azaltılabilir, ancak anti-bot şirketleri emülasyon ortamını tespit edebilir
  • Olası tespit yöntemleri çeşitli
    • Tarayıcı tabanlı red pill teknikleri, tarayıcının emülasyon ortamında çalıştığını ortaya çıkarabilir
    • tarayıcı tabanlı port taraması ile yalnızca emüle edilmiş Android cihazlarda çalışan portlar veya adb gibi servisler bulunabilir
    • Google, mobil cihaz genelinde reklam kimliği ayarlayabiliyor; bu kimliğin olmaması veya hep aynı olması şüphe işareti olabilir
    • Social Media Login Detection ile Gmail veya YouTube hesabı oturumu açık mı kontrol edilebilir; Android'de Google hesabıyla giriş yapılmamışsa bu şüpheli görülebilir
    • Bunun dışında da emüle edilmiş Android cihazları tespit etmeye yönelik çok sayıda teknik olabilir
  • Android emülatörlerinin kusursuz olmama ihtimali yüksek ve bu kusurlar mobil tarayıcının geniş JavaScript API yüzeyi üzerinden ortaya çıkabilir
  • Yine de emülasyon yaklaşımı tercih ediliyor; güçlü birkaç sunucuya 4G dongle bağlanan bir kurulum öneriliyor
  • proxidize.com 4G mobil proxy sağlıyor, ancak proxy'ler kendi başına tespit edilebilir olduğu için 4G dongle'ların Android emülatörlerinde doğrudan kullanılmasının istendiği belirtiliyor
  • Nihai mimari, bölgesel scraping istasyonları şeklinde tasarlanıyor
    • Tek bir coğrafi konumda, 50 adet 4G dongle bağlı güçlü bir scraping sunucusu kuruluyor
    • Her sunucuda 50 ila 100 emüle edilmiş Android cihaz çalıştırılıyor
    • Bu istasyonlardan 5 tanesi büyük şehirlere dağıtılıyor
    • Basit bir komuta ve kontrol sunucusu bu 5 scraping istasyonunu orkestre ediyor

1 yorum

 
GN⁺ 2024-04-28
Hacker News yorumları
  • Web scraping alanında çalışan bir avukat olarak böyle başlıkları görünce hep gülümsüyorum. Bugün teknoloji alanının tekel şirketleri olarak gördüğümüz neredeyse tüm şirketler ya da iştirakleri, işlerini büyütme sürecinde scraping kullandı; şimdi ise aynı şirketler startup’ların ve rakiplerin veri scraping yapmasını yasaklıyor.
    Üstelik o veriler çoğu durumda hukuken tanınabilir anlamda gerçekten “onların” verisi de değil. Bu yüzden web scraping etiği de, bununla ilgili hukuki meseleler de o kadar basit değil. Geçen sonbaharda bu konuda yazdığım yazı burada da ilgi görmüştü: https://news.ycombinator.com/item?id=37264676
    • Facebook ve kimlik bilgileri için de durum benzer. Yanlış hatırlamıyorsam Facebook ilk dönemlerinde Google kişilerini kullanarak büyüdü, ama biri Facebook sosyal grafik verilerini uzun süreli saklayıp kendi duvarlarının dışında kullanmaya kalkınca agresif biçimde engelliyor.
      Sonuçta kendilerinin büyümek için kullandığı yöntemi başkalarının kullanmasını engelliyorlar.
    • Web scraping etiği bana aksine gayet basit görünüyor. “Sen benim HTTP isteğime istediğin gibi yanıt verebilirsin, ben de o yanıtı istediğim gibi yorumlayabilirim” demek yeterli.
      İnsanlar iletişim kurmaya başladığından beri konuşmalar hep böyle değil miydi zaten? Buna karşılık hukuki meseleler, yerleşik işletmeleri devlet şiddeti tehdidiyle korumak için dokunmuş bir kumaş gibi görünüyor; pek yeni de değil, acıklı ama öngörülebilir türden. Daha geniş açıdan bakınca bunu fikri mülkiyet meselesi diye paketleyip sanatçı ve yaratıcıların korunmasına bağlama girişimi de mantıken çok zorlama ve insanın kaşlarını çattırıyor.
  • Eskiden profesyonel bir web scraper’dım ve hâlâ sektördeki gidişatı takip ediyorum. Bugün para web scraping’in kendisinden değil, web scraper’lara hizmet satarak kazanılıyor.
    Web scraping SaaS’leri ve ilgili hizmetler çok fazla; konut tipi proxy sağlayıcıları da onlarca. Çoğu bot önleme mekanizması o kadar hızlı evriliyor ki, geleneksel yazılım mühendisliği rolleri içinde bile sadece bot önleme sistemlerini aşma tekniklerine odaklanarak epey iyi gelir elde edilebiliyor. Bu değişim hızı yüzünden web scraping’i meslek edinmektense bir web scraping şirketinde çalışmak daha istikrarlı. Scraper’lar proje bazında para alıyor ve uzun vadede istikrarsızlar; ileri seviye scraping için konut tipi proxy ve sunucu kiralama gibi operasyonel yatırımlar gerekiyor; düşük bütçeli işler ise çok az ödüyor. Brightdata’nın web scraping konferansı düzenlemesi bile büyük ölçekli scraping hizmetleri satmanın ne kadar kârlı olduğunu gösteriyor.
    • Scraping ya da büyük ölçekli bot ağları işletmek için konut tipi proxylerin şart olduğunu uzun zamandır düşünüyordum, ama kendim hiç kullanmadığım için gerçek ölçekte nasıl kullanıldıklarını doğrulayamadım.
      Bu amaçla güvenliği zayıf IoT cihazlarının ya da kötü amaçlı yazılımla enfekte olmuş tüketici donanımlarının yaygın kullanılıp kullanılmadığını merak ediyorum. ISP’lerle iş birliği yaparak konut tipi IP elde etmenin kârlı ya da mümkün olacağını sanmıyorum; bu yüzden konut tipi proxy hizmeti denince geriye ancak epey gizli saklı yöntemler kalıyor gibi görünüyor.
    • Genel olarak scraping’e en yakın konferans hangisiyse öneri almak isterim. Bildiğim kadarıyla scraping’e özel konferanslar ya da güçlü topluluklar neredeyse yok; öğrenmek ve becerilerimi geliştirmek istiyorum.
    • Yıllardır Upwork’te scraper yazıyorum; proje bazlı işlerden yoruldum ve bir scraping SaaS’inde çalışmak ya da doğrudan kendim başlatmak istiyorum. Tavsiyeleri merak ediyorum.
    • Başta bunun bu kadar kolay olduğunu bilmediğim için kodu açık kaynak yayımladım. GitHub’dan kaçındım; Akamai gibi yerlerin hızlıca DMCA göndereceğini düşündüm ve yargı alanı farklarından yararlanarak Çin’in GitHub benzeri Gitee’sine koydum.
      Bu alanda geçmişim yoktu, ama şirketlerin övünerek anlattıkları şeyleri bir araya getirince zor olmadı; ayrıca spor bahislerini otomatikleştirmek gibi pratik bir amacım da vardı. Asıl işim de zaten buna yakındı ve yirmilerimin sonlarında programlamayı hızlı öğrenmeme yardımcı oldu. Ama neredeyse hemen Çinli sneaker bot operatörlerinden ve ana dili İngilizce değilmiş gibi tuhaf İngilizce kullanan kişilerden istek yağmaya başladı. Kodu hukuki tehditler yüzünden değil, müşteri desteği yapmak ya da başkasının altında çalışmak istemediğim için kaldırdım; isteklerin çoğu “sen çalış, kârı paylaşalım” tarzındaydı ve böyle teklifleri kimin kabul ettiğine inanmak zordu. İnternet sonsuza kadar sürer; bu yüzden Cyberfed-Akamai 0.8~2.3’ü taklit eden kodun bazı parçaları hâlâ ortalıkta dolaşıyor olabilir. Yirmilerimin ortasında programlamayı öğrenip üç yıl içinde yayımladığım kod işe yaradıysa, böyle ürünlere yüksek ücret alan siber güvenlik şirketleri utanmalı bence. Lise ikinci sınıftan sonra matematik de yapmadım; ADHD yüzünden ne videolara ne yazılara uzun süre odaklanabiliyorum, bu yüzden tek yaptığım GitHub benzeri servislerden kopyalayarak çalışana kadar öğrenmekti. Bu sektörde muhtemelen çok fazla yılan yağı türü çözüm satılıyor.
    • Sektördeki gidişatı nasıl takip ettiğini merak ediyorum.
  • Bu konu hakkında içim karışık. Bot önleme teknolojisi güvenlik araştırmalarında giderek daha büyük bir sancı noktası hâline geliyor; bu alanda çalıştığım için bu sistemlerle uğraşmak zorundayım.
    Tehdit aktörleri, kötü amaçlı payload’lara erişimi engellemek için Cloudflare gibi hizmetleri kullanıyor. Marka taklidi ya da kimlik bilgisi oltalamasını bulup tespit etmeye çalışan müşteriler için bu büyük bir sorun; Cloudflare ise hiç yardımcı olmuyor, sadece umursamıyor.
    • Katılıyorum. Tehdit aktörlerinin ücretsiz Cloudflare hesabı oluşturup, iki saat önce oluşturulmuş bir alan adındaki phishing sitesini 20 milyar dolarlık bir şirketin desteklediği koruma kalkanının arkasına saklayabilmesi, tespitten kaçmayı fazlasıyla kolaylaştırdı.
      Akamai arkasında neredeyse hiç phishing görmememiz ilginç. Biz de bu alanda çalıştığımız için bu tehditleri gelecekte de tespit edebilmemiz konusunda çıkarımız var.
    • Sonunda bu sorunu çözmek için bir tür mikro ödeme mekanizmasına varacağız gibi geliyor.
  • “Uyumsuzlar” ve “normal insanlar” ifadeleri tuhaf. İnsanların bu işleri yapmasının nedeni, yirminci kez sıkıcı bir kurumsal React web sitesi yapmaktan çok daha ilginç ve eğlenceli olması.
    Gerçek dünyadaki problemleri çözmek ve bir şeyi yapmanın yeni yollarını bulmak gerektiği için eğlenceli. Exploit geliştirme de aynı. Bu insanlar uyumsuz değil; tutkuyla bağlı oldukları işi yapan normal insanlar. “Benim hoşlanmadığım işi yapan kişi uyumsuzdur” zihniyeti asıl tamamen tuhaf olan şey.
    • O paragrafın tamamı şaka. Sonunda küçük bir göz kırpma olmasının nedeni bu.
  • Bot önleme teknolojisi hem güvenlik tehdidi hem de gizlilik tehdidi gibi görünüyor. Çünkü sanal makine kullanırsanız site erişiminizi engelliyor, port taraması yapıyor ya da çeşitli parmak izi alma yöntemleri uyguluyor.
    • Yeni ziyaretçilere CPU hesaplaması yaptıran algoritmik görev yaklaşımı daha iyi.
      Süreç açık; gizlilik riski ya da tuhaf hileler yok; başarısız olsa bile en azından insanların görüp bildirebileceği şekilde başarısız oluyor. Bilinmeyen bir arıza gibi görünmesinden daha iyi.
  • O zaman da tartışılmıştı: Scrape like the big boys - https://news.ycombinator.com/item?id=29117022 - Kasım 2021, 189 yorum
  • “Tüm web siteleri izin istemeden Android’in dönüş ve hız verilerine erişebiliyor” mu? Bu gerçekten saçma.
  • İlginç. Şu anda düşük frekanslı scraping gerektiren bir proje yapıyorum.
    Reddedilme durumlarını nasıl yöneteceğimi düşünüyordum; ucuz bir Android cihaz bu boşluğu doldurabilir gibi görünüyor.