Scarnox · Blog

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:

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

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:

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:

Langkah selanjutnya