Captcha AWS WAF dijelaskan dan cara menanganinya
Captcha AWS WAF adalah tantangan yang dilayani oleh Web Application Firewall milik Amazon ketika pemilik situs telah mengonfigurasinya untuk memeriksa pengunjung. Request yang dianggap mencurigakan oleh firewall akan menerima halaman tantangan alih-alih konten. Pengunjung kemudian harus lolos pemeriksaan sebelum halaman sebenarnya dimuat. Jika Anda menemuinya saat menguji atau mengumpulkan data, Anda perlu tahu cara mengenalinya, apa yang bisa diatur pemilik situs, dan apa yang bisa dilakukan Scarnox saat ini. Panduan ini membahas ketiganya.
Apa itu captcha AWS WAF
AWS WAF adalah mesin aturan yang berada di depan sebuah aplikasi web, di Amazon CloudFront, Application Load Balancer, atau API Gateway. Aturan bisa mengizinkan, memblokir, menghitung, atau menantang sebuah request. Tantangan bisa berupa pemeriksaan JavaScript yang senyap atau puzzle captcha yang terlihat, tergantung cara aturannya diatur.
Poin pentingnya, keputusan dibuat oleh pemilik situs. Firewall tidak tahu tujuan scraper Anda. Ia hanya menilai traffic yang ia lihat: rate request, reputasi IP, header, dan perilaku client.
Cara mengenalinya di kode
Tantangan AWS WAF sering bisa dikenali dari responsnya. Sinyal umumnya adalah header respons x-amzn-waf-action, dan tantangan sering dikirim dengan status HTTP 202 sebelum halaman sebenarnya muncul. Anggap ini sebagai sinyal, bukan bukti, karena situs mengonfigurasi firewall secara berbeda:
import requests
def looks_like_aws_waf(resp: requests.Response) -> bool:
# Ini sinyal dari header, bukan bukti pasti. Pastikan dengan halaman yang sedang Anda uji.
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)
Cari juga script yang dimuat dari path tantangan AWS WAF di source halaman, dan halaman yang tidak menampilkan konten sampai sebuah script berjalan. requests biasa sering menerima halaman tantangan, bukan data. Itu memang diharapkan.
Apa yang bisa dilakukan pemilik situs
Jika Anda yang menjalankan situsnya, konsol AWS WAF memungkinkan Anda mengatur aturan yang memicu tantangan. Opsi yang paling berguna:
- Aturan berbasis rate yang hanya menantang client yang mengirim terlalu banyak request, sehingga pengunjung normal tetap lolos.
- Allowlist untuk monitoring, CI, atau rentang IP partner Anda sendiri, agar pengujian Anda tidak ditantang.
- Tantangan hanya pada path sensitif, seperti login atau checkout, alih-alih seluruh situs.
Jika Anda menguji situs Anda sendiri, perbaikan paling bersih adalah allowlist untuk test runner Anda. Jangan mencoba mengalahkan tantangan pada situs yang tidak Anda kontrol. Itu adalah proteksi pemiliknya, dan itu juga hal pertama yang akan memutus akses Anda.
Posisi dukungan Scarnox saat ini
- Live saat ini: PopularCaptcha, proxyless dan dengan proxy Anda sendiri.
- Segera hadir: AWS WAF, bersama GeeTest, reCAPTCHA v2 dan v3, Cloudflare Turnstile, dan Arkose. Jangan merancang alur produksi yang bergantung pada solve AWS WAF sebelum ia tercantum sebagai live.
Jadi jika situs yang boleh Anda kerjakan saat ini menampilkan tantangan AWS WAF, pilihannya adalah yang tercantum di atas: perlambat, gunakan allowlist jika situsnya milik Anda, atau minta API atau data feed kepada pemilik situs. Anda bisa membuat akun dan mulai dengan kredit uji coba gratis, tanpa kartu, untuk menyiapkan alur PopularCaptcha Anda sekarang dan siap saat dukungan AWS WAF live. Harga terkini ada di halaman harga.
Menguji situs Anda sendiri di balik AWS WAF
Jika Anda pemilik situs dan ingin pengujian otomatis lolos firewall tanpa melemahkannya untuk pengunjung sungguhan, gunakan alat firewall itu sendiri dan jangan mengakali tantangannya:
- Mulai aturan baru dalam mode count. Mode ini mencatat request yang akan ditantang tanpa memengaruhi siapa pun, sehingga Anda bisa melihat persis apa yang dipicu oleh pengujian Anda.
- Aktifkan logging WAF ke Amazon CloudWatch Logs, Amazon S3, atau Amazon Data Firehose. Log akan memberi tahu aturan mana yang cocok dan header atau path mana yang menyebabkannya.
- Berikan environment test domain staging sendiri dengan rule set terpisah, sehingga produksi tetap terlindungi sementara suite Anda berjalan bebas.
- Allowlist hanya rentang IP atau nilai header spesifik yang digunakan test runner Anda, dan tinjau daftar itu setiap kali runner berubah.
Langkah-langkah ini menjaga proteksi tetap berjalan dan membuat traffic pengujian menjadi dapat diprediksi, yang sebenarnya Anda butuhkan. Tinjau aturannya setelah setiap perubahan pada setup pengujian Anda, karena aturan yang benar untuk runner bulan lalu bisa jadi kini memblokirnya.
Scraping secara bertanggung jawab
Jika alasan Anda mengakses halaman AWS WAF adalah untuk mengumpulkan data:
- Baca
robots.txtdan terms of service situs sebelum mengirim request. - Jaga rate request tetap rendah. Tantangan sering kali berarti situs meminta Anda memperlambat.
- Berhenti saat situs dengan jelas tidak menginginkan akses otomatis.
- Jangan mengumpulkan data pribadi yang tidak Anda perlukan, dan tangani data pribadi apa pun yang Anda kumpulkan sesuai aturan privasi yang berlaku.