CAPSOLVER
Blog
Cara Menyelesaikan Captcha / Tantangan AWS dengan Python

Cara Menyelesaikan Captcha / Tantangan AWS dengan Python

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

04-Dec-2025

Pendahuluan

Apakah tugas pengambilan data web atau otomasi Anda diblokir oleh AWS WAF (Web Application Firewall) yang tampaknya tidak terdaki? Ini adalah tantangan umum bagi banyak pengembang. AWS WAF adalah layanan keamanan yang kuat dari Amazon yang dirancang untuk melindungi situs web dari eksploit web umum dan bot jahat. Ini mengidentifikasi dan memblokir aktivitas mencurigakan dengan menganalisis pola lalu lintas, menggunakan metode seperti tantangan JavaScript (mengembalikan kode status 202) dan captcha gambar yang lebih kompleks (mengembalikan kode status 405).

Meskipun penting untuk perlindungan situs web, langkah keamanan ini bisa menjadi penghalang besar bagi skrip otomasi yang sah. Untungnya, dengan alat yang tepat, Anda dapat melewati perlindungan ini secara efektif. Panduan ini akan memberikan panduan langkah demi langkah tentang cara menggunakan Python dan CapSolver untuk mendapatkan aws-waf-token secara mudah, memungkinkan akses yang mulus ke situs web yang dilindungi AWS WAF.

⚙️ Prasyarat

Sebelum memulai, pastikan Anda memiliki alat dan informasi berikut siap:

  • Proxy yang berfungsi: Ini sangat penting untuk menyelesaikan AWS WAF. Sangat disarankan untuk menggunakan proxy ISP atau rumah tangga untuk menghindari diblokir karena reputasi IP yang buruk.
  • Python terinstal: Pastikan Python terinstal di sistem Anda.
  • Kunci API CapSolver: Anda akan membutuhkan akun CapSolver (Daftar) untuk mendapatkan kunci API dari dashboard.

🤖 Langkah 1: Instal Paket Python yang Diperlukan

Pertama, kita perlu menginstal beberapa perpustakaan Python kunci untuk membuat permintaan HTTP dan menganalisis HTML. Buka terminal Anda dan jalankan perintah berikut:

bash Copy
pip install capsolver requests beautifulsoup4

👨‍💻 Langkah 2: Tulis Kode Python untuk Menyelesaikan AWS WAF

Berikut adalah kode Python lengkap untuk menyelesaikan tantangan dan captcha AWS WAF menggunakan CapSolver. Kode ini didasarkan pada praktik terbaru dari dokumentasi resmi CapSolver, memiliki struktur yang lebih bersih, dan secara otomatis menangani dua skenario pemblokiran paling umum.

Kode Python Terbaru

python Copy
import capsolver
import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import urlparse

# -------------------SILAKAN UBAH NILAI-NILAI BERIKUT-------------------
# Detail proxy Anda dalam format: http://username:password@ip:port
PROXY = "http://username:password@ip:port"
# URL situs web tujuan yang ingin Anda selesaikan AWS WAF-nya
PAGE_URL = "https://www.situs-web-aws-anda.com"
# Kunci API Anda dari dashboard CapSolver
CAPSOLVER_API_KEY = "Kunci_API_Anda"
# ----------------------------------------------------------------

def solve_aws_waf(is_captcha_challenge, **kwargs):
    """
    Menyelesaikan tantangan AWS WAF atau captcha menggunakan CapSolver.
    :param is_captcha_challenge: True untuk captcha (kode status 405), False untuk tantangan JavaScript (kode status 202).
    :param kwargs: Parameter yang diperlukan untuk tugas penyelesaian.
    :return: Objek solusi, atau None jika gagal.
    """
    task_type = "AntiAwsWafTask" if is_captcha_challenge else "AntiAwsWafTaskProxyLess"
    print(f"Membuat tugas '{task_type}'...")
    
    task_payload = {
        "type": task_type,
        "websiteURL": PAGE_URL,
    }
    
    # Tambahkan parameter spesifik berdasarkan jenis tantangan
    if is_captcha_challenge:
        # Untuk tantangan captcha, diperlukan awsKey, awsIv, awsContext
        task_payload.update({
            "awsKey": kwargs.get("awsKey"),
            "awsIv": kwargs.get("awsIv"),
            "awsContext": kwargs.get("awsContext"),
            "awsChallengeJS": kwargs.get("awsChallengeJS"),
            "proxy": PROXY
        })
    else:
        # Untuk tantangan JavaScript, hanya diperlukan URL awsChallengeJS
        task_payload["awsChallengeJS"] = kwargs.get("awsChallengeJS")

    try:
        solution = capsolver.solve(task_payload)
        if solution and solution.get("errorId", 0) == 0:
            print("Solusi berhasil diperoleh!")
            return solution
        else:
            error_desc = solution.get('errorDescription', 'Kesalahan tidak diketahui') if solution else 'Kesalahan tidak diketahui'
            print(f"Gagal menyelesaikan tugas: {error_desc}")
            return None
    except Exception as e:
        print(f"Terjadi pengecualian saat memanggil CapSolver: {e}")
        return None

def main():
    """Fungsi utama untuk menjalankan seluruh proses."""
    capsolver.api_key = CAPSOLVER_API_KEY
    session = requests.Session()
    session.proxies = {"http": PROXY, "https": PROXY}
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.9",
    }

    print(f"Mencoba mengakses: {PAGE_URL}")
    response = session.get(PAGE_URL, headers=headers)
    print(f"Menerima kode status: {response.status_code}")

    solution = None
    
    # Skenario 1: Menangani Tantangan JavaScript AWS (Kode Status 202)
    if response.status_code == 202:
        print("Tantangan JavaScript AWS terdeteksi.")
        soup = BeautifulSoup(response.content, 'html.parser')
        script_tag = soup.find('script', {'src': re.compile(r'token\.awswaf\.com')})
        if script_tag:
            challenge_js_url = script_tag['src']
            print(f"Menemukan URL tantangan JS: {challenge_js_url}")
            solution = solve_aws_waf(is_captcha_challenge=False, awsChallengeJS=challenge_js_url)
        else:
            print("Kesalahan: Tidak dapat menemukan skrip tantangan AWS.")

    # Skenario 2: Menangani Captcha AWS (Kode Status 405)
    elif response.status_code == 405:
        print("Captcha AWS terdeteksi.")
        soup = BeautifulSoup(response.content, 'html.parser')
        script_tag = soup.find('script', {'src': re.compile(r'token\.awswaf\.com')})
        script_text_tag = soup.find('script', string=re.compile('.*key.*'))
        
        if script_tag and script_text_tag:
            challenge_js_url = script_tag['src']
            script_text = script_text_tag.string
            
            key = re.search(r'"key":"(.*?)"', script_text).group(1)
            iv = re.search(r'"iv":"(.*?)"', script_text).group(1)
            context = re.search(r'"context":"(.*?)"', script_text).group(1)
            
            print(f"Parameter yang diekstrak: Key={key[:5]}..., IV={iv[:5]}..., Context={context[:5]}...")
            solution = solve_aws_waf(
                is_captcha_challenge=True,
                awsKey=key,
                awsIv=iv,
                awsContext=context,
                awsChallengeJS=challenge_js_url
            )
        else:
            print("Kesalahan: Gagal mengekstrak semua parameter captcha yang diperlukan dari halaman.")

    # Jika berhasil diselesaikan, atur cookie dan coba ulang permintaan
    if solution and solution.get("cookie"):
        aws_token = solution["cookie"]
        print(f"Berhasil memperoleh aws-waf-token: {aws_token[:30]}...")
        
        domain = f".{urlparse(PAGE_URL).netloc}"
        session.cookies.set("aws-waf-token", aws_token, domain=domain)
        
        print("Cookie diatur. Mencoba ulang permintaan...")
        final_response = session.get(PAGE_URL, headers=headers)
        print(f"Kode status permintaan akhir: {final_response.status_code}")
        
        if final_response.status_code == 200:
            print("Berhasil melewati AWS WAF!")
            # print(final_response.text) # Hapus tanda komentar untuk melihat konten halaman
        else:
            print("Permintaan gagal setelah mengatur cookie. Periksa token atau proxy.")
    else:
        print("Gagal menyelesaikan AWS WAF. Keluar.")

if __name__ == "__main__":
    main()

⚠️ Variabel Penting yang Harus Diubah

Sebelum menjalankan kode, pastikan untuk mengubah variabel berikut:

  • PROXY: Ganti ini dengan alamat dan kredensial server proxy Anda. Formatnya harus http://username:password@ip:port.
  • CAPSOLVER_API_KEY: Temukan kunci API Anda di Dashboard CapSolver dan ganti placeholder-nya.
  • PAGE_URL: Ganti ini dengan URL situs web tujuan yang dilindungi AWS WAF.

Kesimpulan

Dengan mengintegrasikan CapSolver ke dalam alur kerja otomasi Python Anda, Anda dapat secara efektif menangani tantangan JavaScript dan captcha yang dipicu oleh AWS WAF. Pendekatan ini menyederhanakan proses verifikasi yang kompleks menjadi satu panggilan API, memungkinkan Anda fokus pada logika bisnis inti Anda alih-alih terjebak dalam perang terus-menerus melawan teknologi anti-bot. Ini adalah solusi yang tak ternilai bagi setiap pengembang yang perlu berinteraksi dengan situs yang dilindungi AWS WAF.

Gunakan kode bonus CAPN saat menambahkan dana ke akun CapSolver Anda untuk mendapatkan bonus tambahan 5% setiap kali recharge — tanpa batas.
Segera klaim di Dashboard CapSolver Anda

Pertanyaan yang Sering Diajukan (FAQ)

Q1: Mengapa saya harus menggunakan proxy?
A1: AWS WAF secara ketat memantau perilaku alamat IP. Permintaan dari pusat data atau IP yang dicurigai mudah diblokir. Menggunakan proxy berkecepatan tinggi rumah tangga atau ISP meniru perilaku akses pengguna nyata dan merupakan langkah pertama kritis untuk berhasil melewati WAF.

Q2: Berapa lama token aws-waf-token berlaku?
A2: Validitas token ini biasanya sangat singkat, mungkin hanya beberapa menit. Setelah token habis masa berlakunya, Anda perlu menjalankan proses verifikasi kembali untuk mendapatkan yang baru. Penting untuk merancang logika pembaruan token di aplikasi Anda.

Q3: Apa perbedaan antara AntiAwsWafTask dan AntiAwsWafTaskProxyLess?
A3: AntiAwsWafTask digunakan untuk menyelesaikan captcha AWS, yang memerlukan lingkungan browser penuh (biasanya ditemukan dengan kode status 405) dan memerlukan proxy yang Anda sediakan. AntiAwsWafTaskProxyLess digunakan untuk tantangan JavaScript yang lebih sederhana (kode status 202), yang diselesaikan di server CapSolver dan tidak memerlukan Anda menyediakan proxy. Kode kami secara otomatis memilih jenis tugas yang sesuai berdasarkan kode status.

Q4: Apakah metode ini berfungsi untuk semua situs yang menggunakan AWS WAF?
A4: Metode ini efektif untuk konfigurasi AWS WAF standar kebanyakan. Namun, pemilik situs dapat menyesuaikan aturan WAF, yang mungkin meningkatkan kesulitan untuk melewati mereka. Jika Anda mengalami masalah, konsultasikan dokumentasi atau dukungan CapSolver. Tantangan yang berbeda mungkin memerlukan strategi yang berbeda.

Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.

Lebih lanjut

Cara menyelesaikan Captcha AWS / Tantangan dengan Python
Cara Menyelesaikan Captcha / Tantangan AWS dengan Python

Panduan praktis untuk mengatasi tantangan AWS WAF menggunakan Python dan CapSolver, memungkinkan akses yang lebih lancar ke situs web yang dilindungi

AWS WAF
Logo of CapSolver

Ethan Collins

04-Dec-2025

Cara mengatasi Token Captcha AWS (AMAZON) WAF
Cara Menyelesaikan Token CAPTCHA AWS

Blog ini menjelaskan bagaimana Anda dapat menyelesaikan / menyelesaikan amazon waf captcha dengan cara yang cepat, murah, dan mudah dengan menggunakan capsolver.com

AWS WAF
Logo of CapSolver

Adélia Cruz

01-Dec-2025

Cara menyelesaikan AWS Captcha dengan NodeJS
Cara menyelesaikan AWS Captcha dengan NodeJS

Dalam artikel ini, kami akan menunjukkan kepada Anda cara menyelesaikan AWS Captcha / Tantangan dengan Node.JS.

AWS WAF
Logo of CapSolver

Anh Tuan

30-Nov-2025

Cara Menyelesaikan Captcha AWS Menggunakan Puppeteer [Javascript] dengan Ekstensi CapSolver
Cara Menyelesaikan Captcha AWS Menggunakan Puppeteer [Javascript] dengan Ekstensi CapSolver

Pelajari cara menyelesaikan Captcha AWS secara mulus dengan Puppeteer dan Capsolver Extension, panduan lengkap tentang mengatur dan mengotomasi solusi Captcha secara efektif

AWS WAF
Logo of CapSolver

Emma Foster

25-Nov-2025

Top 5 Alat Pemecah Tantangan AWS WAF untuk Otomasi Perusahaan dan Penyedotan Web
Top 5 Alat Pengatasi Tantangan AWS WAF untuk Otomatisasi Perusahaan dan Scraping Web

Temukan 5 alat pemecah tantangan AWS WAF terbaik untuk pengambilan data web yang berjalan lancar dan otomatisasi perusahaan. Temukan solusi terbaik untuk menghindari AWS WAF.

AWS WAF
Logo of CapSolver

Adélia Cruz

13-Nov-2025

Mengatasi CAPTCHA AWS WAF Otomatis
Penyelesaian Otomatis CAPTCHA AWS WAF Menggunakan Integrasi API atau Peramban

Ketahui cara menyelesaikan CAPTCHA AWS WAF secara otomatis menggunakan ekstensi browser dan integrasi API. Panduan ini mencakup pengenalan gambar, tantangan berbasis token, dan solusi CapSolver untuk otomatisasi yang mulus dan penggalian web.

AWS WAF
Logo of CapSolver

Emma Foster

23-Oct-2025