CAPSOLVER
Blog
Cara Mengatasi AWS WAF di Crawl4AI dengan Integrasi CapSolver

Cara Mengatasi AWS WAF di Crawl4AI dengan Integrasi CapSolver

Logo of CapSolver

Emma Foster

Machine Learning Engineer

21-Oct-2025

Pengantar

Amazon Web Services (AWS) Web Application Firewall (WAF) adalah layanan keamanan yang kuat yang membantu melindungi aplikasi web dari eksploit web umum yang dapat memengaruhi ketersediaan, mengancam keamanan, atau menghabiskan sumber daya yang berlebihan. Meskipun penting untuk melindungi aset web, AWS WAF dapat memberikan tantangan signifikan bagi proses pengambilan data otomatis dan pengambilan data, seringkali memblokir crawler yang sah.

Artikel ini memberikan panduan komprehensif tentang cara mengintegrasikan Crawl4AI, crawler web lanjutan, dengan CapSolver, layanan solusi CAPTCHA dan anti-bot terkemuka, untuk secara efektif menyelesaikan perlindungan AWS WAF. Kami akan menjelaskan metode integrasi API dan ekstensi, termasuk contoh kode dan penjelasan, untuk memastikan tugas otomasi web Anda dapat berjalan tanpa gangguan.

Memahami AWS WAF dan Tantangannya untuk Pengambilan Data Web

AWS WAF beroperasi dengan memantau permintaan HTTP(S) yang diteruskan ke distribusi Amazon CloudFront, Application Load Balancer, Amazon API Gateway, atau API GraphQL AWS AppSync. Ini memungkinkan Anda mengatur aturan yang memblokir pola serangan umum, seperti injeksi SQL atau scripting lintas situs, dan juga dapat menyaring lalu lintas berdasarkan alamat IP, header HTTP, tubuh HTTP, atau string URI. Untuk crawler web, ini sering berarti:

  • Pemfilteran Permintaan: Aturan WAF dapat mengidentifikasi dan memblokir permintaan yang tampak otomatis atau mencurigakan.
  • Verifikasi Berbasis Cookie: AWS WAF sering menggunakan cookie tertentu untuk melacak dan memverifikasi sesi pengguna yang sah. Tanpa cookie ini, permintaan sering ditolak.
  • Tantangan Dinamis: Meskipun bukan CAPTCHA tradisional, mekanisme dasar dapat bertindak sebagai penghalang, memerlukan token atau identifikasi sesi tertentu untuk melanjutkan.

CapSolver menyediakan solusi yang kuat untuk mendapatkan cookie aws-waf-token yang diperlukan, yang merupakan kunci untuk melewati AWS WAF. Ketika diintegrasikan dengan Crawl4AI, ini memungkinkan crawler Anda untuk meniru perilaku pengguna yang sah dan berhasil menavigasi situs yang dilindungi.

💡 Bonus Eksklusif untuk Pengguna Integrasi Crawl4AI:
Untuk merayakan integrasi ini, kami menawarkan kode bonus 6% — CRAWL4 untuk semua pengguna CapSolver yang mendaftar melalui tutorial ini.
Cukup masukkan kode saat recharge di Dashboard untuk menerima kredit tambahan 6% secara instan.

Metode Integrasi 1: Integrasi API CapSolver dengan Crawl4AI

Cara yang paling efektif untuk menangani tantangan AWS WAF dengan Crawl4AI dan CapSolver adalah melalui integrasi API. Metode ini melibatkan penggunaan CapSolver untuk mendapatkan aws-waf-token yang diperlukan, lalu menyisipkan token ini sebagai cookie ke dalam konteks browser Crawl4AI sebelum memuat ulang halaman target.

Cara Kerjanya:

  1. Navigasi Awal: Crawl4AI mencoba mengakses halaman web target yang dilindungi oleh AWS WAF.
  2. Identifikasi Tantangan WAF: Ketika menghadapi WAF, skrip Anda akan mengenali kebutuhan untuk aws-waf-token.
  3. Dapatkan Cookie AWS WAF: Panggil API CapSolver menggunakan SDK mereka, dengan menentukan tipe AntiAwsWafTaskProxyLess dan websiteURL. CapSolver akan mengembalikan cookie aws-waf-token yang diperlukan.
  4. Sisipkan Cookie dan Muat Ulang: Gunakan fungsi js_code Crawl4AI untuk menyetel aws-waf-token yang diperoleh sebagai cookie dalam konteks browser. Setelah menyetel cookie, halaman dimuat ulang.
  5. Lanjutkan Operasi: Dengan cookie aws-waf-token yang benar, Crawl4AI sekarang dapat mengakses halaman yang dilindungi dengan sukses dan melanjutkan tugas ekstraksi data.

Contoh Kode: Integrasi API untuk AWS WAF

Kode Python berikut menunjukkan cara mengintegrasikan API CapSolver dengan Crawl4AI untuk menyelesaikan tantangan AWS WAF. Contoh ini menargetkan halaman onboarding NFT Porsche yang dilindungi oleh AWS WAF.

python Copy
import asyncio
import capsolver
from crawl4ai import *


# TODO: set your config
api_key = "CAP-xxxxxxxxxxxxxxxxxxxxx"              # your api key of capsolver
site_url = "https://nft.porsche.com/onboarding@6"  # page url of your target site
cookie_domain = ".nft.porsche.com"                 # the domain name to which you want to apply the cookie
captcha_type = "AntiAwsWafTaskProxyLess"           # type of your target captcha
capsolver.api_key = api_key


async def main():
    browser_config = BrowserConfig(
        verbose=True,
        headless=False,
        use_persistent_context=True,
    )

    async with AsyncWebCrawler(config=browser_config) as crawler:
        await crawler.arun(
            url=site_url,
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test"
        )

        # get aws waf cookie using capsolver sdk
        solution = capsolver.solve({
            "type": captcha_type,
            "websiteURL": site_url,
        })
        cookie = solution["cookie"]
        print("aws waf cookie:", cookie)

        js_code = """
            document.cookie = \'aws-waf-token=""" + cookie + """;domain=""" + cookie_domain + """;path=/\
\';
            location.reload();
        """

        wait_condition = """() => {
            return document.title === \'Join Porsche’s journey into Web3\';
        }"""

        run_config = CrawlerRunConfig(
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test",
            js_code=js_code,
            js_only=True,
            wait_for=f"js:{wait_condition}"
        )

        result_next = await crawler.arun(
            url=site_url,
            config=run_config,
        )
        print(result_next.markdown)


if __name__ == "__main__":
    asyncio.run(main())

Analisis Kode:

  1. Panggilan SDK CapSolver: Metode capsolver.solve dipanggil dengan tipe AntiAwsWafTaskProxyLess dan websiteURL untuk mendapatkan cookie aws-waf-token. Ini adalah langkah penting di mana AI CapSolver menyelesaikan tantangan WAF dan memberikan cookie yang diperlukan.
  2. Injeksi JavaScript (js_code): String js_code berisi JavaScript yang menyetel cookie aws-waf-token dalam konteks browser menggunakan document.cookie. Lalu, location.reload() dipicu untuk memuat ulang halaman, memastikan permintaan berikutnya mencakup cookie yang valid baru saja disetel.
  3. Kondisi wait_for: wait_condition didefinisikan untuk memastikan Crawl4AI menunggu hingga judul halaman sesuai dengan 'Join Porsche’s journey into Web3', menunjukkan bahwa WAF berhasil dilewati dan konten yang diinginkan dimuat.

Metode Integrasi 2: Integrasi Ekstensi CapSolver

Ekstensi CapSolver menawarkan pendekatan yang disederhanakan untuk menangani tantangan AWS WAF, terutama ketika memanfaatkan kemampuan penyelesaian otomatisnya dalam konteks browser yang tetap dikelola oleh Crawl4AI.

Cara Kerjanya:

  1. Konteks Browser yang Tetap: Konfigurasikan Crawl4AI untuk menggunakan user_data_dir agar menjalankan instance browser yang mempertahankan ekstensi CapSolver yang terinstal dan konfigurasinya.
  2. Instal dan Konfigurasi Ekstensi: Instal ekstensi CapSolver secara manual ke profil browser ini dan konfigurasikan kunci API CapSolver Anda. Ekstensi dapat diatur untuk menyelesaikan tantangan AWS WAF secara otomatis.
  3. Navigasi ke Halaman Target: Crawl4AI mengunjungi halaman web yang dilindungi oleh AWS WAF.
  4. Penyelesaian Otomatis: Ekstensi CapSolver, yang berjalan dalam konteks browser, mendeteksi tantangan AWS WAF dan secara otomatis mendapatkan cookie aws-waf-token. Cookie ini kemudian secara otomatis diterapkan ke permintaan berikutnya.
  5. Lanjutkan dengan Tindakan: Setelah tantangan AWS WAF diselesaikan oleh ekstensi, Crawl4AI dapat melanjutkan tugas pengambilan data, karena konteks browser sekarang memiliki cookie yang valid untuk permintaan berikutnya.

Contoh Kode: Integrasi Ekstensi untuk AWS WAF (Penyelesaian Otomatis)

Contoh ini menunjukkan bagaimana Crawl4AI dapat dikonfigurasi untuk menggunakan profil browser dengan ekstensi CapSolver untuk penyelesaian AWS WAF otomatis.

python Copy
import asyncio
import time

from crawl4ai import *


# TODO: set your config
user_data_dir = "/browser-profile/Default1" # Ensure this path is correctly set and contains your configured extension

browser_config = BrowserConfig(
    verbose=True,
    headless=False,
    user_data_dir=user_data_dir,
    use_persistent_context=True,
    proxy="http://127.0.0.1:13120", # Optional: configure proxy if needed
)

async def main():
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result_initial = await crawler.arun(
            url="https://nft.porsche.com/onboarding@6",
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test"
        )

        # The extension will automatically solve the AWS WAF upon page load.
        # You might need to add a wait condition or time.sleep for the WAF to be solved
        # before proceeding with further actions.
        time.sleep(30) # Example wait, adjust as necessary for the extension to operate

        # Continue with other Crawl4AI operations after AWS WAF is solved
        # For instance, check for elements or content that appear after successful verification
        # print(result_initial.markdown) # You can inspect the page content after the wait


if __name__ == "__main__":
    asyncio.run(main())

Analisis Kode:

  1. user_data_dir: Parameter ini penting untuk Crawl4AI agar menjalankan instance browser yang mempertahankan ekstensi CapSolver yang terinstal dan konfigurasinya. Pastikan jalur menunjuk ke direktori profil browser yang valid di mana ekstensi terinstal.
  2. Penyelesaian Otomatis: Ekstensi CapSolver dirancang untuk secara otomatis mendeteksi dan menyelesaikan tantangan AWS WAF. time.sleep ditambahkan sebagai contoh umum untuk memberi waktu ekstensi menyelesaikan operasi latar belakangnya. Untuk solusi yang lebih kuat, pertimbangkan menggunakan fungsi wait_for Crawl4AI untuk memeriksa perubahan halaman tertentu yang menunjukkan penyelesaian AWS WAF yang berhasil.

Contoh Kode: Integrasi Ekstensi untuk AWS WAF (Penyelesaian Manual)

Jika Anda lebih suka memicu penyelesaian tantangan AWS WAF secara manual pada titik tertentu dalam logika pengambilan data Anda, Anda dapat mengatur parameter manualSolving ekstensi menjadi true dan kemudian menggunakan js_code untuk mengklik tombol solver yang disediakan oleh ekstensi.

python Copy
import asyncio
import time

from crawl4ai import *


# TODO: set your config
user_data_dir = "/browser-profile/Default1" # Ensure this path is correctly set and contains your configured extension

browser_config = BrowserConfig(
    verbose=True,
    headless=False,
    user_data_dir=user_data_dir,
    use_persistent_context=True,
    proxy="http://127.0.0.1:13120", # Optional: configure proxy if needed
)

async def main():
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result_initial = await crawler.arun(
            url="https://nft.porsche.com/onboarding@6",
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test"
        )

        # Wait for a moment for the page to load and the extension to be ready
        time.sleep(6)

        # Use js_code to trigger the manual solve button provided by the CapSolver extension
        js_code = """
            let solverButton = document.querySelector(\'#capsolver-solver-tip-button\');
            if (solverButton) {
            // click event
                const clickEvent = new MouseEvent(\'click\', {
                    bubbles: true,
                    cancelable: true,
                    view: window
                });
                
                solverButton.dispatchEvent(clickEvent);
            }
        """
        print(js_code)
        run_config = CrawlerRunConfig(
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test",
            js_code=js_code,
            js_only=True,
        )
        result_next = await crawler.arun(
            url="https://nft.porsche.com/onboarding@6",
            config=run_config
        )
        print("JS Execution results:", result_next.js_execution_result)

        # Allow time for the AWS WAF to be solved after manual trigger
        time.sleep(30) # Example wait, adjust as necessary

        # Continue with other Crawl4AI operations


if __name__ == "__main__":
    asyncio.run(main())

Analisis Kode:

  1. manualSolving: Sebelum menjalankan kode ini, pastikan config.js ekstensi CapSolver memiliki manualSolving diatur ke true.
  2. Memicu Penyelesaian: js_code mensimulasikan event klik pada #capsolver-solver-tip-button, yaitu tombol yang disediakan oleh ekstensi CapSolver untuk penyelesaian manual. Ini memberi Anda kontrol yang tepat kapan proses penyelesaian AWS WAF dimulai.

Kesimpulan

Mengintegrasikan Crawl4AI dengan CapSolver menawarkan solusi yang kuat dan efisien untuk melewati perlindungan AWS WAF, memungkinkan pengambilan data dan ekstraksi data tanpa gangguan. Dengan memanfaatkan kemampuan CapSolver untuk mendapatkan token aws-waf-token yang kritis dan kemampuan fleksibel Crawl4AI untuk menyisipkan js_code, pengembang dapat memastikan proses otomatis mereka menavigasi situs yang dilindungi WAF secara mulus.

Integrasi ini tidak hanya meningkatkan stabilitas dan tingkat keberhasilan crawler Anda, tetapi juga mengurangi secara signifikan beban operasional yang terkait dengan mengelola mekanisme anti-bot yang kompleks. Dengan kombinasi yang kuat ini, Anda dapat mengumpulkan data dari aplikasi web yang paling aman dengan percaya diri.

Pertanyaan yang Sering Diajukan (FAQ)

Q1: Apa itu AWS WAF dan mengapa digunakan dalam pengambilan data web?
A1: AWS WAF (Web Application Firewall) adalah layanan keamanan berbasis cloud yang melindungi aplikasi web dari eksploit web umum. Dalam pengambilan data, AWS WAF ditemui sebagai mekanisme anti-bot yang memblokir permintaan yang dianggap mencurigakan atau otomatis, memerlukan teknik melewati untuk mengakses data target.

Q2: Bagaimana CapSolver membantu melewati AWS WAF?
A2: CapSolver menyediakan layanan khusus, seperti AntiAwsWafTaskProxyLess, untuk menyelesaikan tantangan AWS WAF. Ini mendapatkan cookie aws-waf-token yang diperlukan, yang kemudian digunakan oleh Crawl4AI untuk meniru perilaku pengguna yang sah dan mendapatkan akses ke situs yang dilindungi.
Q3: Apa metode integrasi utama AWS WAF dengan Crawl4AI dan CapSolver?
A3: Terdapat dua metode utama: integrasi API, di mana API CapSolver dipanggil untuk mendapatkan aws-waf-token yang kemudian disisipkan melalui js_code Crawl4AI, dan integrasi Ekstensi Browser, di mana ekstensi CapSolver secara otomatis menangani tantangan WAF dalam konteks browser yang persisten.

Q4: Apakah perlu menggunakan proxy saat menyelesaikan AWS WAF dengan CapSolver?
A4: Meskipun tidak selalu wajib, menggunakan proxy bisa menjadi manfaat, terutama jika operasi scraping Anda memerlukan anonimitas atau mensimulasikan permintaan dari lokasi geografis tertentu. Tugas CapSolver umumnya mendukung konfigurasi proxy.

Q5: Apa manfaat dari mengintegrasikan Crawl4AI dan CapSolver untuk AWS WAF?
A5: Integrasi ini menghasilkan penanganan WAF otomatis, peningkatan efisiensi crawling, ketangguhan crawler yang lebih baik terhadap mekanisme anti-bot, dan pengurangan biaya operasional dengan meminimalkan intervensi manual.

Referensi

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