PHP cURL çağrılarında queue mantığı (Scraping'ten korunma) hk.
Selamlar;
Yüzbinlerce sayfadan oluşan bir websitesinde, her bir haber sayfasının içerisinde cURL isteği yaptığım fonksiyon mevcut.
Örneğin: haber_detay.php olsun; burada cURL çağrım var ve sayfa içerisindeki datalar buradaki çağrı attığım API'den gelen response ile önemli bilgileri dolduruyorum.
Ancak sorun şu ki; bir süredir sitem scrape ediliyor. 2008'deki sayfalarda bile saniyede 100'lerce farklı IP ve User-Agent bilgisiyle dolaşım gerçekleşiyor.
Dolayısı ile, en önemli olan bugünkü ve dünkü paylaşımlar, cURL isteği atamadığım için dolmuyor (hedef API sitesi çok fazla requestten dolayı blockluyor).
Sonuç olarak merak ettiğim, böyle durumlarda neler yapabililiriz?
- Adama IP ban atamıyorum; saniyede 100 sayfa dolaşıyorsa 20-30 farklı IP adresi ile geliyor ve bu sürekli değişiyor.
Siteyi şimdilik korumak için, sadece 1 hafta içerisinde paylaşılmış haberlerde cURL atıyorum; ancak 1 haftadan önceki eski paylaşımlarda cURL atamadığım için sitemin hiçbir anlamı kalmadı.
PHP ile cURL atarken multi-thread, bir queue mantığı ve/veya :
- bu ay atılan paylaşımların önceliği 1 numara,
- geçen ay atılan paylaşımların 2 numara,
- 6 ay kadar süreye kadar olanlar 3 numara,
- 1 yıl ve daha eski paylaşımlar 4 numara önceliğe sahip olsun...
böylece; 1 saniye içerisinde 100 tane 4 numaralı öncelik ve 5 tane 1 numaralı öncelik varsa; önce 1 numaraların cURL'u çalışsın, sonra sırayla order edilsin.
gibi bir mantık olabilir mi? olursa nasıl olur?
veya daha sağlıklı bir yöntem önerirseniz sevinirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!