Walmart, Amazon'dan sonra ABD'deki en büyük çevrimiçi mağaza ve verileri e-ticaret işiniz için kritik öneme sahip: rakip fiyat izleme, stok takibi, ürün analizi. Sorun şu ki, Walmart, botlara karşı en gelişmiş sistemlerden biri olan PerimeterX'i kullanıyor ve bu sistem, parselleyicilerden gelen isteklerin %90'ını ilk sayfada engelliyor.
Bu kılavuzda, Walmart'ı parsellemek için hangi proxy türlerinin gerçekten çalıştığını, IP adreslerinin döngüsünü nasıl ayarlayacağınızı, tarayıcı parmak izini nasıl aşacağınızı ve bir saatlik çalışma süresinde çökmeden veri toplama için kararlı bir sistem kurmayı inceleyeceğiz.
Neden Walmart parselleyicileri engelliyor: PerimeterX koruma mekanizmaları
Walmart, PerimeterX koruma sistemini (şimdi HUMAN Security olarak adlandırılıyor) kullanıyor — piyasadaki en agresif anti-bot sistemlerinden biri. Her isteği onlarca parametreye göre analiz eder ve şüpheli trafiği, parselleyiciniz HTML sayfa kodunu almadan önce engeller.
Walmart'ın koruma mekanizmaları:
1. IP itibar analizi
PerimeterX, her IP adresini bilinen proxy sunucuları, veri merkezleri ve VPN'ler veritabanında kontrol eder. Eğer IP'niz bu veritabanında varsa — engellenirsiniz veya CAPTCHA ile karşılaşırsınız. Walmart, özellikle popüler bulut sağlayıcılarından (AWS, Google Cloud, DigitalOcean) gelen IP'leri sert bir şekilde filtreler.
2. Davranış analizi
Sistem, kullanıcının sayfayla nasıl etkileşimde bulunduğunu izler: fare hareketleri, kaydırma hızı, tıklamalar. Selenium veya Puppeteer üzerinde çalışan parselleyiciler genellikle burada tespit edilir — sayfaları çok hızlı açarlar, doğal duraklamalar olmadan, fareyi hareket ettirmeden.
3. TLS ve HTTP parmak izi
PerimeterX, bağlantınızın TLS parmak izini (şifreleme sırası, uzantılar) ve HTTP istek başlıklarını analiz eder. Python'un standart kütüphaneleri (requests, urllib) benzersiz parmak izlerine sahiptir ve kolayca tanınır. User-Agent'ı değiştirmiş olsanız bile, sistem başlıklar ile gerçek tarayıcı arasındaki uyumsuzluğu görür.
4. JavaScript zorlukları
Şüpheli bir istekte PerimeterX, tarayıcıda kontroller gerçekleştiren JavaScript kodu gönderir: Canvas API erişilebilirliği, WebGL, ekran parametreleri, yüklü fontlar. Basit HTTP parselleyiciler (tarayıcı motoru olmadan) bu kontrolleri geçemez ve engellenir.
Engellendiğinde neler olur:
- HTTP 403 Forbidden — en sık karşılaşılan yanıt, IP'nizin veya parmak izinizin kara listede olduğunu gösterir
- CAPTCHA ile bir sayfaya yönlendirme — sistem emin değil, insan olduğunuzu kanıtlama şansı veriyor
- Boş bir sayfa veya hata ile JSON — sunucu hiç içerik sağlamıyor
- 15-60 dakika boyunca IP'nin geçici olarak yasaklanması — tek bir adresten agresif parselleme sırasında
Anahtar sonuç: Walmart'ı başarılı bir şekilde parsellemek için kapsamlı bir stratejiye ihtiyacınız var, burada proxy sadece bir unsurdur. Ayrıca doğru bir tarayıcı motoruna, insan davranışını taklit etmeye ve IP adreslerinin akıllıca döngüsüne ihtiyacınız olacak.
Walmart'ı parsellemek için hangi proxylere ihtiyaç var: türlerin karşılaştırması
Tüm proxylere Walmart'ın korumasını aşmak için eşit derecede etkili değildir. Dört ana türü ve parselleme görevine uygunluklarını inceleyelim.
| Proxy Türü | Walmart için Etkililik | Hız | Maliyet | Öneri |
|---|---|---|---|---|
| Konut Proxylere | ⭐⭐⭐⭐⭐ Harika — Gerçek kullanıcıların IP'leri, minimum engellemeler |
Orta (200-800 ms) |
Yüksek ($7-15/GB'den) |
Üretim için optimal |
| Mobil Proxylere | ⭐⭐⭐⭐⭐ Harika — yüksek güven puanı, nadir engellemeler |
Düşük (500-1500 ms) |
Çok yüksek ($50-100/ay IP başına) |
Zor durumlar için |
| Veri Merkezi Proxylere | ⭐⭐ Kötü — yüksek engelleme olasılığı (70-90%) |
Yüksek (50-150 ms) |
Düşük ($1-3/IP'den) |
Önerilmez |
| ISP Proxylere | ⭐⭐⭐⭐ İyi — statik konut IP'leri |
Yüksek (80-200 ms) |
Orta ($30-80/ay IP başına) |
Uzun vadeli görevler için |
Her tür hakkında daha fazla bilgi:
Konut Proxylere — Walmart için altın standart
Bunlar, gerçek ev internet sağlayıcılarının (Comcast, AT&T, Verizon ABD'de) IP adresleridir. Walmart, bunları normal alıcılar olarak görür, bu nedenle engelleme oranı minimumdur — doğru ayarlandığında %5-10 civarındadır. Ana avantajı — büyük adres havuzları (milyonlarca IP), bu da etkili bir döngü ayarlamanızı sağlar.
Ne zaman kullanılmalı: Binlerce ürünün fiyatını izlemek, günlük veri toplama, uzun vadeli projeler için. Walmart'ı parsellemek için konut proxylere en iyi seçimdir, etkinlik ve maliyet açısından optimaldir.
Mobil Proxylere — maksimum güvenilirlik
Mobil operatörlerin IP'leri (T-Mobile, Verizon Wireless) anti-bot sistemlerinde en yüksek güven puanına sahiptir. Sebep — bir IP, binlerce gerçek kullanıcı tarafından (operatör NAT'ı aracılığıyla) kullanılır, bu nedenle onu engellemek = binlerce alıcıyı engellemek demektir. Walmart, mobil IP'leri neredeyse hiç engellemez.
Ne zaman kullanılmalı: Eğer konut proxylere yeterli gelmiyorsa, özellikle korumalı bölümleri parsellemek gerekiyorsa (örneğin, belirli bölgeler için fiyatlar) veya bütçe izin veriyorsa. Mobil proxylere neredeyse %100 başarılı istek sağlar, ancak maliyetleri daha yüksektir.
Veri Merkezi Proxylere — Walmart için uygun değil
Veri merkezlerindeki sunucuların IP adresleri (AWS, OVH, Hetzner) PerimeterX tarafından anında tanınır. Eğer "temiz" IP'ler satın alsanız bile, daha önce parselleme için kullanılmamış olsalar bile, sistem yine de bunun bir veri merkezi olduğunu görür, ev sağlayıcısı değil. Engelleme oranı %70-90'dır.
Tek kullanım senaryosu: Küçük veri hacminde (10-50 sayfa) parselleyici test etmek. Üretim için kesinlikle uygun değildir.
ISP proxylere (statik konut) bir hibrittir: Ev sağlayıcılarının IP'leri, ancak veri merkezlerinde barındırılır ve size uzun süre (bir ay ve daha fazla) verilir. Normal konut proxylere göre daha hızlıdırlar, ancak daha pahalıdırlar ve sınırlı bir adres havuzuna sahiptirler. Aynı ürün kategorileri için uzun vadeli parselleme için stabil IP'lere ihtiyacınız varsa uygundur.
Konut vs veri merkezi proxylere: Görevleriniz için neyi seçmelisiniz
Zaten konut proxylere daha etkili olduğunu öğrendiğimiz için, her türün ne zaman mantıklı olabileceğini detaylı bir şekilde inceleyelim ve gerçek sahiplik maliyetini hesaplayalım.
Senaryo 1: Günlük 10,000 ürün izleme
Konut proxylere ile:
- Walmart ürün sayfasının ortalama boyutu: ~500 KB
- 10,000 ürün × 500 KB = günde 5 GB trafik
- Aylık trafik: 150 GB
- 10$/GB maliyetle: $1,500/ay
- Başarılı istek oranı: %90-95
- Tekrarlar dikkate alındığında gerçek maliyet: ~$1,650/ay
Veri merkezi proxylere ile (teorik olarak):
- 100 IP maliyeti: ~$200/ay
- Başarılı istek oranı: %10-30 (geri kalan engellemeler)
- Her ürün için 3-10 deneme yapmanız gerekecek
- Gerçek trafik: 15-50 GB (tekrarlardan dolayı)
- Sonuç: Görev gerçekleştirilemez — IP hızla yasaklanır, her adımda CAPTCHA ile karşılaşılır
Senaryo 2: 500 ürün için tek seferlik veri toplama
Eğer bir kez piyasa analizi veya araştırma için veri toplamanız gerekiyorsa, kombinasyon yaklaşımını deneyebilirsiniz:
- Ürün URL'lerini (kategori sayfaları) ilk toplama için veri merkezi proxylere kullanın
- Ürünler hakkında detaylı bilgi almak için konut proxylere geçin
- Maliyet: ~$50-100 tek seferlik görev için
- Tamamlanma süresi: 2-4 saat, veri merkezleri ile 10-20 saat yerine
Anahtar seçim faktörleri:
| Kriter | Konut | Veri Merkezleri |
|---|---|---|
| Veri Hacmi | Herhangi — 100'den milyonlarca sayfaya kadar | Sadece küçük hacimler (1000 sayfaya kadar) |
| Düzenlilik | Günlük/haftalık parselleme | Sadece tek seferlik görevler |
| Tamamlanma Hızı | Stabil — tekrarlar için gecikme yok | Tahmin edilemez — çok fazla tekrar var |
| Güvenilirlik | Yüksek — %90-95 başarı | Düşük — %10-30 başarı |
| Hata Maliyeti | Düşük — sadece başarılı trafik için ödeme yaparsınız | Yüksek — yasaklar için zaman ve para kaybedersiniz |
Sonuç: Walmart'ı parsellemek için ciddi görevler için konut veya mobil proxylere kullanın. Veri merkezi proxylere sadece 10-50 sayfa üzerinde parselleyici mantığını test etmek için düşünülebilir, ancak üretim için kesinlikle uygun değildir. Proxylerde tasarruf etmek, zaman kaybına, sinir harbini ve sonunda daha pahalıya mal olacaktır.
IP döngü stratejileri: değişim sıklığı ve adres havuzları
Konut proxylere ile bile, IP adreslerinin döngüsünü yanlış ayarlarsanız engellenebilirsiniz. PerimeterX, davranış kalıplarını izler: Eğer bir IP, bir dakikada 100 ürün sayfası talep ederse — bu kesinlikle bir bottur. Doğru döngü stratejisi, engellemeler olmadan stabil parselleme için anahtardır.
Üç ana döngü stratejisi:
1. Her istekte döngü (Rotating Proxies)
Her HTTP isteği yeni bir IP adresi üzerinden gider. Bu, çoğu konut proxy sağlayıcısının standart çalışma modudur.
Artıları:
- Engelleme riski minimumdur — her IP 1-2 istek yapar
- Kolay ayar — sağlayıcı havuzu kendisi yönetir
- Agresif parselleme yapılabilir — dakikada yüzlerce istek
Eksileri:
- Oturum sorunları — eğer site çerez kullanıyorsa, her istek = yeni bir oturum
- Daha yavaş — yeni bir bağlantı kurmak 200-500 ms alır
Ne zaman kullanılmalı: Walmart ürün sayfalarını parsellemek için, kimlik doğrulama ve oturum gerektirmeyen durumlarda. Bu, fiyat izleme görevlerinin çoğu için optimal stratejidir.
2. Sticky Sessions (yapışkan oturumlar)
Bir IP adresi, belirli bir süre (genellikle 5-30 dakika) boyunca bir dizi istek için kullanılır, ardından yeni bir IP'ye geçilir.
Artıları:
- Oturumları ve çerezleri koruma — alışveriş sepeti, kimlik doğrulama ile çalışabilirsiniz
- Daha hızlı — TCP bağlantısı tekrar kullanılır
- Anti-bot sistemleri için daha "doğal" bir davranış
Eksileri:
- Engelleme riski daha yüksek — bir IP 10-50 istek yapar
- Limitleri kontrol etmeniz gerekir — bir IP'den 30-50 isteği geçmemelisiniz
Ne zaman kullanılmalı: Kimlik doğrulama gerektiren verileri parsellemek (örneğin, kayıtlı kullanıcılar için fiyatlar) veya gerçek bir alıcının davranışını taklit ediyorsanız (kategori görüntüleme → ürün → sepete ekleme) kullanmalısınız.
3. Manuel döngü ile statik IP havuzu
50-100 statik konut IP'si (ISP proxylere) alırsınız ve isteklerin dağıtımını kendiniz yönetirsiniz.
Artıları:
- Tam kontrol — hangi IP'nin ne kadar istek yaptığını bilirsiniz
- Maksimum hız — statik IP'ler döngüsel olanlardan daha hızlıdır
- IP'leri "ısıtmak" — itibarlarını artırmak için meşru istekler yapabilirsiniz
Eksileri:
- Zor ayar — istek dağıtım mantığını yazmanız gerekir
- Daha pahalı — ISP proxylere ayda $30-80'dir
- IP kaybetme riski — eğer biri yasaklanırsa, değiştirmek zorunda kalırsınız
Ne zaman kullanılmalı: Günde 100,000+ isteği olan yüksek yük sistemleri için, hız ve stabilitenin kritik olduğu durumlarda. Parselleme konusunda deneyim gerektirir.
Walmart için önerilen ayarlar:
Fiyat izleme için (ürün sayfalarının basit parsellemesi):
- Tür: Her istekte döngü ile proxylere
- İstekler arasındaki gecikme: 2-5 saniye
- Paralellik: 10-20 iş parçacığı
- Coğrafi konum: ABD (tercihen Walmart mağazalarının bulunduğu eyalet)
Zor parselleme için (kimlik doğrulama, sepet ile):
- Tür: 10-15 dakika süreli yapışkan oturumlar
- IP başına istek limiti: maksimum 30-40
- İstekler arasındaki gecikme: 3-7 saniye (insan taklidi)
- Paralellik: 5-10 iş parçacığı (daha az agresif)
Önemli: Birçok konut proxy sağlayıcısı, bağlantı parametreleri aracılığıyla oturum süresini ayarlamanıza izin verir. Örneğin, session-15min ekleyerek, 15 dakika süreli yapışkan oturum alırsınız. Bu olasılığı sağlayıcınızla kontrol edin.
Parmak izini aşma: User-Agent, başlıklar ve TLS parmak izleri
Proxylere yalnızca sorunun yarısını çözer — size temiz bir IP sağlar. Ancak PerimeterX, yalnızca IP'yi değil, aynı zamanda tarayıcınızın veya parselleyicinizin "parmak izini" de analiz eder. Konut IP'niz olsa bile, HTTP istemciniz bir bot gibi görünüyorsa engellenirsiniz.
PerimeterX neleri kontrol eder:
1. User-Agent ve HTTP başlıkları
Standart kütüphaneler (Python requests, Node.js axios) başlıkları gönderir, bu da botu anında ele verir. Örneğin, User-Agent: python-requests/2.28.1 — bu %100 engelleme demektir.
Değiştirmeniz gerekenler:
User-Agent— güncel Chrome/Firefox sürümlerini kullanınAccept— içerik türüne uygun olmalıdırAccept-Language— Walmart ABD için en-USAccept-Encoding— gzip, deflate, brReferer— önceki sayfa (kategori veya ana sayfa)Sec-Fetch-*— CSRF koruması için Chrome başlıkları
2. TLS Parmak İzi (JA3)
Her HTTP istemcisinin benzersiz bir TLS parmak izi vardır — şifreleme sırası, TLS uzantıları, protokol sürümü. PerimeterX, bu parmak izini User-Agent ile karşılaştırır: Eğer "Chrome 120" yazıyorsanız, ancak TLS parmak izi Python'dan geliyorsa — engellenirsiniz.
Çözüm:
- Özelleştirilmiş TLS desteği olan kütüphaneleri kullanın:
curl-impersonate(Python),tls-client(Go) - Ya da gerçek bir tarayıcı kullanarak Selenium/Puppeteer ile — gerçek bir TLS parmak izine sahiptirler
3. JavaScript zorlukları ve Canvas parmak izi
PerimeterX, Canvas API'ye erişim, WebGL, hangi fontların yüklü olduğu, ekran boyutu, zaman dilimi gibi kontrolleri gerçekleştiren JavaScript kodu gönderebilir. Basit HTTP parselleyiciler bu kodu çalıştıramaz.
Çözüm:
- Headless tarayıcılar kullanın: Puppeteer, Playwright, Selenium
- Kesinlikle tespit önleme modunu etkinleştirin:
puppeteer-extra-plugin-stealth - Parametreleri rastgele hale getirin: pencere boyutu, zaman dilimi, tarayıcı dili
Walmart'ı parsellemek için doğru başlıkların örneği:
GET /ip/Product-Name/12345678 HTTP/1.1
Host: www.walmart.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Referer: https://www.walmart.com/browse/electronics/tv-video/3944_1060825
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
Connection: keep-alive
Önemli detaylar:
- Başlık sırası önemlidir — gerçek tarayıcılar belirli bir sırayla gönderir. Bu sırayı koruyan kütüphaneler kullanın.
- Çerezler — Eğer PerimeterX çerez
_px3veya_pxvidayarladıysa, bunu sonraki isteklere göndermeyi unutmayın. Bu, oturumunuzun tokenidir. - HTTP/2 — Walmart HTTP/2 kullanıyor ve bu protokolün desteklenmemesi bot sinyali olabilir. İstemcinizin HTTP/2'yi desteklediğinden emin olun.
- Aynı başlıkları tüm isteklerde kullanmayın — User-Agent'ı çeşitlendirin, 10-20 farklı tarayıcı versiyonundan oluşan bir havuz kullanın.
Rate limiting ve gecikmeler: istek limitlerini aşmamak için nasıl
Mükemmel proxylere ve başlıklara sahip olsanız bile, çok agresif parselleme yaparsanız engellenirsiniz. Walmart, isteklerin sıklığını ve davranış kalıplarını izler. Gerçek bir kullanıcı, bir dakikada 100 ürün sayfası açamaz — anti-bot sistemi bunu anlar.
Walmart için önerilen limitler:
| İstek Türü | İstekler Arasındaki Gecikme | Bir IP'den Maksimum İstek | Paralellik |
|---|---|---|---|
| Ürün Sayfaları | 2-5 saniye | 30-50 sayfa (döngüsel ile) | 10-20 iş parçacığı |
| Kategori Sayfaları | 3-7 saniye | 20-30 sayfa | 5-10 iş parçacığı |
| Arama | 5-10 saniye | 10-15 istek | 3-5 iş parçacığı |
| API Uç Noktaları | 1-3 saniye | 50-100 istek | 20-30 iş parçacığı |
Neden gecikmelerin rastgeleleştirilmesi önemlidir:
Eğer isteklerinizi tam olarak her 3 saniyede bir yapıyorsanız (3.000, 6.000, 9.000...), anti-bot sistemi bu kalıbı tanır. Gerçek bir insan bu kadar kesin olamaz — onun farklılıkları olur: 2.8 saniye, 3.4 saniye, 2.9 saniye.
Gecikmenin doğru uygulanması (Python):
import random
import time
# Yanlış — sabit gecikme
time.sleep(3)
# Doğru — rastgele gecikme
delay = random.uniform(2.0, 5.0) # 2 ile 5 saniye arasında
time.sleep(delay)
Yük yönetimi stratejileri:
1. Adaptif rate limiting
Başarılı istek oranını izleyin. Eğer 403 veya CAPTCHA almaya başlarsanız — otomatik olarak gecikmeleri artırın ve paralelliği azaltın.
success_rate = successful_requests / total_requests
if success_rate < 0.8: # %80'den az başarılı
delay_multiplier *= 1.5 # gecikmeleri artır
parallel_workers -= 2 # iş parçacıklarını azalt
elif success_rate > 0.95: # %95'ten fazla başarılı
delay_multiplier *= 0.9 # hızlanabilirsiniz
parallel_workers += 1
2. Günün saatine göre dağıtım
Gerçek kullanıcıların yoğun olduğu saatlerde (ABD akşamı, 18:00-22:00 EST) parselleyin. Bu saatlerde trafiğiniz meşru olanla karışır ve anti-bot sistemi daha az agresif olur. Gece (2:00-6:00 EST) koruma daha sıkı olabilir, çünkü daha az gerçek kullanıcı vardır.
3. IP adreslerini ısıtma
Toplu parsellemeye başlamadan önce, meşru isteklerle IP adreslerini "ısıtın": ana sayfayı açın, birkaç kategori görüntüleyin, arama yapın. Bu, etkinlik geçmişi oluşturur ve IP'nin güven puanını artırır.
# Yeni IP için ısıtma sırası
1. GET https://www.walmart.com/ # ana sayfa
2. Gecikme 3-5 saniye
3. GET https://www.walmart.com/browse/electronics # kategori
4. Gecikme 4-7 saniye
5. GET https://www.walmart.com/search?q=laptop # arama
6. Gecikme 3-6 saniye
# Artık hedef ürünleri parselleyebilirsiniz
Kritik hata: Tüm isteklerde aynı Referer kullanmayın. Eğer 1000 ürünü parselliyorsanız ve hepsinin başlığında aynı Referer varsa — bu, botun belirgin bir kalıbıdır.