AWS WAF captcha nedir ve nasıl ele alınır
AWS WAF captcha'sı, bir site sahibi ziyaretçileri kontrol edecek şekilde yapılandırdığında Amazon'un Web Uygulama Güvenlik Duvarı'nın sunduğu bir doğrulamadır. Güvenlik duvarının şüpheli bulduğu bir istek, içerik yerine bir doğrulama sayfası alır. Ziyaretçi, gerçek sayfa yüklenmeden önce bir kontrolü geçmek zorundadır. Test ederken ya da veri toplarken buna rastlarsanız, onu nasıl tanıyacağınızı, site sahibinin neyi kontrol ettiğini ve Scarnox'un bugün ne yapabildiğini bilmeniz gerekir. Bu rehber üçünü de kapsar.
AWS WAF captcha nedir
AWS WAF, bir web uygulamasının önünde duran bir kural motorudur; Amazon CloudFront, bir Application Load Balancer ya da API Gateway üzerinde çalışır. Kurallar bir isteği izin verebilir, engelleyebilir, sayabilir ya da doğrulamaya tabi tutabilir. Doğrulama, kuralın nasıl ayarlandığına bağlı olarak sessiz bir JavaScript kontrolü ya da görünür bir captcha bulmacası olabilir.
Önemli nokta, kararın site sahibi tarafından verilmesidir. Güvenlik duvarı scraper'ınızın amacını bilmez. Yalnızca gördüğü trafiği puanlar: istek hızını, IP itibarını, başlıkları ve istemcinin davranışını.
Kodda nasıl tanınır
AWS WAF doğrulamaları çoğunlukla yanıtlarından tanınabilir. Yaygın bir sinyal x-amzn-waf-action yanıt başlığıdır; doğrulama genellikle gerçek sayfa görünmeden önce HTTP 202 durum koduyla sunulur. Site güvenlik duvarını farklı yapılandırdığı için bunları kanıt değil, sinyal olarak değerlendirin:
import requests
def looks_like_aws_waf(resp: requests.Response) -> bool:
# Bir başlık sinyali, kanıt değil. Test ettiğiniz sayfa ile doğrulayın.
return "x-amzn-waf-action" in resp.headers
resp = requests.get("https://example.com/products", timeout=30)
if looks_like_aws_waf(resp):
print("Challenge served. Stop, slow down, and check your request rate.")
else:
print("Status", resp.status_code)
Ayrıca sayfa kaynağında bir AWS WAF doğrulama yolundan yüklenen bir script'e ve betik çalışana kadar hiçbir içerik göstermeyen bir sayfaya bakın. Düz bir requests çağrısı çoğu zaman veriyi değil doğrulama sayfasını alır. Bu beklenen bir durumdur.
Site sahibi neyi yapabilir
Siteyi siz işletiyorsanız AWS WAF konsolu, doğrulamayı tetikleyen kuralları ayarlamanızı sağlar. En kullanışlı seçenekler şunlardır:
- Oran tabanlı kurallar, yalnızca çok fazla istek gönderen istemcilere doğrulama uygular; böylece normal ziyaretçiler geçer.
- İzin listeleri, kendi izleme, CI ya da iş ortağı IP aralıkları için; böylece kendi testleriniz doğrulamaya takılmaz.
- Yalnızca hassas yollarda doğrulama, örneğin giriş ya da ödeme, tüm site yerine.
Kendi sitenizi test ediyorsanız en temiz çözüm, test çalıştırıcılarınız için bir izin listesidir. Kontrol etmediğiniz bir sitede doğrulamayı aşmaya çalışmayın. Bu sitenin korumasıdır ve erişiminizi ilk bozacak şey de budur.
Scarnox desteğinin durumu
- Bugün canlı: PopularCaptcha, proxysiz ve kendi proxy'nizle.
- Yakında: AWS WAF; GeeTest, reCAPTCHA v2 ve v3, Cloudflare Turnstile ve Arkose ile birlikte. AWS WAF çözümü canlı olarak listelenene kadar buna dayanan bir üretim akışı tasarlamayın.
Bu yüzden erişim izniniz olan bir sitede bugün AWS WAF doğrulamasıyla karşılaşırsanız seçenekler yukarıdaki gibidir: yavaşlayın, site sizinse bir izin listesi kullanın ya da site sahibinden bir API ya da veri akışı isteyin. PopularCaptcha akışınızı şimdi kurmak ve AWS WAF desteği canlıya çıktığında hazır olmak için hesap oluşturabilir ve kredit kartı gerekmeden ücretsiz deneme kredisiyle başlayabilirsiniz. Güncel fiyatlandırma fiyatlandırma sayfasındadır.
AWS WAF arkasındaki kendi sitenizi test edin
Site sahibiyseniz ve otomatik testlerinizin güvenlik duvarını, gerçek ziyaretçiler için korumayı zayıflatmadan geçmesini istiyorsanız, doğrulamayı aşmak yerine güvenlik duvarının kendi araçlarını kullanın:
- Yeni bir kuralı count modunda başlatın. Bu mod, kimseyi etkilemeden doğrulanacak istekleri kaydeder; böylece testlerinizin tam olarak neyi tetiklediğini görürsünüz.
- WAF loglamasını Amazon CloudWatch Logs, Amazon S3 ya da Amazon Data Firehose'a açın. Log, hangi kuralın eşleştiğini ve hangi başlığın ya da yolun buna neden olduğunu gösterir.
- Test ortamına, ayrı bir kural seti olan kendi staging alan adını verin; böylece üretim korunurken test paketiniz serbestçe çalışır.
- Yalnızca test çalıştırıcılarınızın kullandığı IP aralıklarını ya da başlık değerlerini izin listesine alın ve çalıştırıcılar değiştiğinde bu listeyi gözden geçirin.
Bu adımlar koruma yerinde kalır ve test trafiğini öngörülebilir kılar; ihtiyacınız olan sonuç budur. Test kurulumunuzda her değişiklikten sonra kuralları gözden geçirin, çünkü geçen ayki çalıştırıcılar için doğru olan bir kural bugün onları engelleyebilir.
Sorumlu scraping
Bir AWS WAF sayfasına istek atmanızın nedeni veri toplamaksa:
- İstek göndermeden önce sitenin
robots.txtdosyasını ve kullanım koşullarını okuyun. - İstek hızını düşük tutun. Doğrulama çoğu zaman sitenin sizden yavaşlamanızı istemesidir.
- Site otomatik erişim istemediğini açıkça belirttiğinde durun.
- İhtiyacınız olmayan kişisel veriyi toplamayın ve topladığınız her veriyi geçerli gizlilik kurallarına göre ele alın.