Beranda BlogPengikisan web Cara melewati dan menghapus kontrol bot Amazon WAF dengan Python

Cara melewati dan menghapus kontrol bot Amazon WAF dengan Python

oleh Kadek

Apa itu Kontrol Bot AWS WAF?

Kontrol Bot AWS WAF (Web Application Firewall) adalah bagian dari rangkaian keamanan Amazon Web Services dan membantu situs web memblokir lalu lintas otomatis seperti bot sekaligus mengizinkan pengguna sebenarnya melewatinya. Ini menganalisis permintaan masuk, memantau perilaku lalu lintas, dan menerapkan berbagai teknik untuk menyaring bot. Metode utamanya mencakup tantangan JavaScript, penerapan CAPTCHA, dan pemblokiran berbasis IP.

Bagi scraper, AWS WAF dapat menimbulkan beberapa tantangan:

  • Tantangan CAPTCHA: CAPTCHA diberikan ketika AWS mencurigai adanya bot yang membuat permintaan.
  • Pemblokiran IP: Mengirim terlalu banyak permintaan dari IP yang sama dapat memblokir Anda.
  • Pembatasan tarif: AWS WAF membatasi jumlah permintaan yang dapat dibuat dalam jangka waktu tertentu dan membatasi permintaan apa pun yang melebihi batas.

Untuk melewati metode deteksi ini, penting untuk memahami cara kerja Kontrol Bot AWS WAF.

Di bagian berikutnya, kita akan menjelajahi berbagai teknik yang digunakan AWS WAF untuk menghentikan bot dan cara mengatasinya.

Memahami Kontrol Bot AWS WAF

Dalam hal perlindungan bot, Kontrol Bot AWS WAF menggunakan sistem pertahanan berlapis untuk memblokir lalu lintas yang tidak diinginkan. Ini dirancang untuk segala hal mulai dari bot sederhana yang tidak berusaha menyembunyikan kehadirannya hingga bot tingkat lanjut yang meniru perilaku pengguna sebenarnya.

Mari kita lihat lebih dekat cara kerja Kontrol Bot AWS WAF dan berbagai teknik yang digunakan untuk menjaga keamanan situs web.

Bot umum vs. bot bertarget

Kontrol Bot AWS WAF dirancang untuk menangani dua jenis bot, masing-masing dengan strategi deteksi berbeda:

Bot umum

Ini adalah bot dasar yang tidak berusaha menyembunyikan siapa mereka. AWS WAF memfilter bot ini sebagai berikut:

  • Deteksi berbasis tanda tangan: AWS menyimpan daftar tanda tangan bot yang diketahui – pola cara bot meminta halaman web, termasuk agen pengguna atau header tertentu. Jika permintaan cocok dengan pola ini, permintaan tersebut ditandai sebagai bot.
  • Daftar reputasi IP: AWS memiliki daftar alamat IP yang terkait dengan aktivitas bot yang terus diperbarui. Permintaan dari IP ini akan diblokir atau ditolak.
  • Validasi agen pengguna: Ia memeriksa string agen pengguna di setiap permintaan untuk memastikannya berasal dari browser asli dan bukan bot yang berpura-pura menjadi browser asli.
  • Minta analisis sampel: Bahkan jika bot mencoba untuk tidak diperhatikan, AWS dapat mendeteksinya dengan mendeteksi tingkat permintaan yang tidak biasa (misalnya terlalu banyak permintaan dengan cepat) atau pola navigasi yang tidak sesuai dengan perilaku manusia.

Bot yang ditargetkan

Bot yang lebih canggih mencoba berperilaku seperti pengguna sebenarnya, sehingga lebih sulit dideteksi. AWS WAF mengatasi hal ini dengan teknik tingkat lanjut seperti:

  • Deteksi berbasis perilaku: Hal ini termasuk menganalisis pola lalu lintas untuk melihat apakah pengguna berperilaku seperti bot – seperti mengklik halaman terlalu cepat atau mengakses beberapa halaman dalam urutan yang tidak wajar.
  • Pembelajaran Mesin (ML): AWS menggunakan model pembelajaran mesin untuk beradaptasi dengan perilaku bot baru. Sistem terus belajar dari data masa lalu dan dapat mendeteksi pola yang mengindikasikan aktivitas bot, meskipun bot tersebut tersamar dengan baik.
  • Sidik jari peramban: AWS mengumpulkan data dari browser pengguna, seperti: B. Ukuran layar, plugin dan font yang diinstal. Bot sering kali mengalami kesulitan mereplikasi sidik jari browser yang sebenarnya, sehingga memberikannya begitu saja.
  • Permintaan peramban: AWS dapat memasukkan kode JavaScript ke halaman web untuk memeriksa apakah pengguna dapat menjalankan skrip, menggerakkan mouse, atau mengetik di keyboard. Bot mengalami kesulitan untuk mereplikasi tindakan ini secara akurat.

Bot reguler dan bot bertarget dapat ditantang dengan CAPTCHA jika AWS WAF mencurigai lalu lintas mereka. Jika bot tidak dapat menyelesaikan CAPTCHA, akses lebih lanjut akan diblokir.

Metode-metode ini menimbulkan rintangan serius bagi para scraper, namun memahami cara kerjanya adalah langkah pertama untuk mengatasinya.

Validasi persyaratan dinamis

AWS WAF menggunakan validasi permintaan dinamis untuk memastikan permintaan Anda terlihat dan berperilaku seperti permintaan pengguna sebenarnya. Ini termasuk:

  • Validasi tajuk: AWS memeriksa apakah semua header penting (seperti Agen-Pengguna, Terima, dan Perujuk) ada dan cocok dengan apa yang akan dikirim oleh browser sebenarnya. Header yang hilang atau tidak biasa dapat menimbulkan kecurigaan.
  • Manajemen kue: AWS melacak cookie sepanjang sesi Anda dan mengharapkannya berubah dengan cara tertentu saat Anda berpindah antar halaman. Jika cookie hilang atau tidak berfungsi seperti yang diharapkan, permintaan Anda mungkin ditandai.
  • Injeksi token dinamis: AWS WAF dapat memasukkan token berumur pendek (seperti token CSRF) ke dalam halaman yang harus disertakan dalam permintaan tindak lanjut Anda. Permintaan Anda mungkin diblokir jika token perlu diperbaiki atau ditambahkan.
  • Inspeksi bersyarat: AWS memantau urutan permintaan Anda untuk memastikan permintaan tersebut masuk akal. Misalnya, Anda diharapkan mengunjungi halaman login sebelum mengakses sumber daya yang dilindungi. AWS WAF melakukan intervensi jika alur permintaan Anda tidak mengikuti logika ini.

Agar tetap tidak terdeteksi, Anda harus mengelola cookie dengan benar, memutar header, menyertakan token yang diperlukan, dan mengikuti alur permintaan alami - seperti pengguna sebenarnya.

Pemblokiran IP dan pembatasan kecepatan

Sistem manajemen lalu lintas AWS WAF dapat memblokir atau memperlambat permintaan Anda jika Anda mengirimkan terlalu banyak dan terlalu cepat. Begini cara kerjanya:

  • Pembatasan laju adaptif: AWS WAF mempelajari pola lalu lintas normal untuk setiap situs dan menyesuaikan batasannya. Anda dapat memicu mekanisme pertahanan sistem jika Anda mengirim permintaan terlalu cepat.
  • Penilaian reputasi IP: AWS WAF mengevaluasi setiap alamat IP berdasarkan perilakunya. Jika IP Anda menunjukkan tanda-tanda aktivitas mencurigakan, IP Anda akan menerima peringkat yang lebih rendah, yang dapat mengakibatkan peningkatan pengawasan atau pemblokiran total.
  • Batasan tarif berdasarkan sesi: AWS WAF tidak hanya memantau alamat IP tetapi juga melacak aktivitas sesi. Mengubah IP saja tidak cukup; Anda harus hati-hati mengelola perilaku sesi Anda agar tetap tidak terdeteksi.
  • Aturan berbasis geolokasi: AWS WAF menerapkan aturan yang lebih ketat pada lalu lintas dari wilayah tertentu yang dikenal memiliki aktivitas bot lebih tinggi. Jika permintaan Anda berasal dari area yang terkait dengan bot, Anda mungkin menghadapi batasan tarif yang lebih ketat atau bahkan CAPTCHA.

Untuk menghindari deteksi, mengubah IP saja tidak cukup. Sebaliknya, Anda harus merotasi IP untuk meniru pola lalu lintas normal sambil mempertimbangkan metode deteksi AWS WAF.

Bagaimana Catch.com.au menggunakan Kontrol Bot AWS WAF

Contoh nyata penerapan Kontrol Bot AWS WAF adalah Catch.com.au, platform e-niaga populer. Mereka menggunakan AWS WAF untuk mencegah bot mengakses data produk, mencoba melakukan penipuan, atau mengganggu sesi pengguna. Cara menggunakan AWS WAF:

  • Bot umum: Catch.com.au memblokir bot sederhana menggunakan deteksi berbasis tanda tangan AWS WAF dan daftar reputasi IP.
  • Bot yang ditargetkan: Untuk bot yang lebih canggih, Catch.com.au menggunakan deteksi perilaku dan sidik jari browser untuk memblokir lalu lintas yang mencurigakan.
  • Validasi permintaan dinamis: Mereka menerapkan validasi ketat terhadap header dan cookie serta menggunakan token dinamis untuk mengonfirmasi sesi yang sah.
  • Respons Insiden: Catch.com.au menggunakan pembatasan tarif dan daftar blokir IP jika terjadi lonjakan aktivitas yang mencurigakan. Mereka juga memiliki aturan geoblock “pecahan kaca” untuk membatasi lalu lintas ke Australia dan Selandia Baru.
  • CAPTCHA: Setiap lalu lintas yang melewati pertahanan ini diperiksa menggunakan CAPTCHA untuk memastikan bahwa penggunanya adalah manusia.

Anda dapat mempelajari lebih lanjut tentang bagaimana Catch.com.au menggunakan AWS WAF dalam presentasi AWS di sini.

Memahami cara kerja Kontrol Bot AWS WAF secara umum dan penerapan praktisnya di Catch.com.au akan membantu Anda melihat pendapat pemilik situs web tentang manajemen bot.

Melewati Kontrol Bot AWS WAF

Sekarang setelah Anda memahami cara kerja Kontrol Bot AWS WAF, mari kita ke bagian yang menyenangkan: cara melewatinya.

Meskipun AWS WAF memberikan perlindungan yang kuat dengan pelacakan IP, validasi agen pengguna, dan tantangan CAPTCHA, ada cara untuk mengatasinya. Mari kita telusuri apa yang perlu Anda lakukan secara manual untuk menelusuri situs web yang dilindungi AWS WAF secara efektif.

1. Rotasi IP untuk menghindari pemblokiran

Kita sudah tahu bahwa AWS WAF sangat memperhatikan alamat IP, terutama jika mereka membuat banyak permintaan dalam waktu singkat. Jika AWS mendeteksi terlalu banyak permintaan dari suatu IP, AWS akan segera melaporkannya. Jadi, tugas Anda adalah menjaga semuanya tetap segar dengan mengganti IP dan membuat permintaan Anda tampak seolah-olah berasal dari seluruh dunia.

Cara mengatasinya:

  • Siapkan kumpulan proksi sehingga scraper Anda dapat menggunakan IP berbeda untuk setiap permintaan.
  • Pastikan proxy ini berkualitas tinggi (sebaiknya untuk area pemukiman) untuk menghindari penemuan yang cepat.

Untuk situs seperti Catch yang sangat bergantung pada AWS WAF untuk memblokir lalu lintas yang tidak diinginkan, merotasi alamat IP Anda diperlukan untuk mencegah pemblokiran hanya setelah beberapa permintaan. Tanpa itu, Anda akan menemui jalan buntu dengan cepat.

2. Putar agen pengguna dan header

Kami telah membahas cara AWS WAF memeriksa header dan agen pengguna untuk memastikan lalu lintas Anda terlihat sah. Tujuannya adalah untuk terus memperbarui berbagai hal sehingga scraper Anda beradaptasi dengan browser dan perangkat yang berbeda.

Cara mengatasinya:

  • Putar string agen pengguna Anda untuk setiap permintaan guna menyimulasikan lalu lintas dari browser yang berbeda. Jangan lupa sertakan judul umum seperti: Referer, Accept-LanguageDan Connection untuk membuat keinginan Anda tampak lebih realistis.
  • Untuk pendekatan yang lebih efektif, ScraperAPI menangani rotasi agen pengguna dan manajemen header untuk Anda. Setiap permintaan menerima agen pengguna baru dan header yang diperlukan, sehingga lalu lintas Anda terlihat alami tanpa kerumitan penyiapan manual.

Menggabungkan agen pengguna dan header mengurangi kemungkinan Anda tertangkap oleh pemeriksaan validasi AWS WAF, yang dirancang untuk menandai header yang berulang atau tidak lengkap.

3. Awasi sesi dan cookie

Cookie tidak hanya menyimpan informasi login Anda - cookie membantu AWS WAF melacak apakah permintaan merupakan bagian dari sesi penjelajahan sebenarnya. Jika Anda membuat beberapa permintaan tanpa mengirimkan cookie sesi yang benar, AWS akan mencurigakan dan scraper Anda dapat diblokir. Untuk menghindari hal ini, Anda perlu melacak cookie dan memastikan cookie tersebut konsisten di semua permintaan.

Cara mengatasinya:

  • Gunakan Python requests.Session() untuk menyimpan dan mengelola cookie di beberapa permintaan.
  • Mulailah melakukan scraping dengan mengunjungi beberapa halaman pertama situs web dan mengumpulkan cookie sesi. Kemudian kirimkan cookie ini dengan permintaan Anda.

Misalnya, saat menghapus Catch.com.au, AWS WAF mengharapkan cookie tetap konsisten saat pengguna berpindah dari halaman ke halaman. Jika scraper Anda tidak menangani cookie dengan benar, scraper tersebut akan menjadi masalah dan AWS akan turun tangan untuk memblokir Anda.

4. Menangani CAPTCHA

AWS WAF menggunakan CAPTCHA untuk memverifikasi interaksi manusia dan memblokir lalu lintas bot. Dengan manajemen CAPTCHA bawaan ScraperAPI, Anda dapat dengan mudah melewati hambatan ini dan menjaga alur kerja pengikisan Anda berjalan lancar.

Dengan mengaktifkan render=true Dengan ScraperAPI, Anda memastikan bahwa permintaan Anda dapat mengatasi tantangan JavaScript dan lulus pemeriksaan integritas browser. Pendekatan ini meniru perilaku pengguna sebenarnya dan memberi Anda akses yang konsisten tanpa layanan penyelesaian CAPTCHA tambahan.

Untuk situs web yang sangat dilindungi oleh AWS WAF, fungsionalitas rendering ScraperAPI menyediakan cara mudah untuk mengatasi tantangan CAPTCHA dan mengakses data yang Anda perlukan.

5. Memperlambat permintaan Anda (pembatasan tarif)

AWS WAF tidak hanya memantau IP atau header Anda, namun juga memantau seberapa cepat Anda membuat permintaan. Jika Anda mengirim terlalu banyak permintaan terlalu cepat, Anda akan memicu pertahanan pembatasan laju AWS WAF. Oleh karena itu, penting untuk memperlambat dan menambahkan penundaan di antara permintaan Anda agar tetap tidak terdeteksi.

Cara mengatasinya:

  • Gunakan Python time.sleep() untuk menambahkan penundaan acak antar permintaan.
  • Gabungkan berbagai hal dengan memberikan penundaan yang berbeda untuk setiap permintaan, meniru pola penjelajahan yang lebih alami.

Sangat penting untuk memperlambat kecepatan permintaan Anda. Hal ini membuat scraper Anda lebih terlihat seperti manusia yang menjelajahi situs web dengan santai daripada bot yang berjalan cepat melalui halaman produk.

Cara melewati AWS WAF dengan ScraperAPI

ScraperAPI membuat bypass Kontrol Bot AWS WAF menjadi lebih mudah dengan mengatasi beberapa tantangan paling kompleks seperti rotasi IP, manajemen sesi, dan rendering JavaScript. Anda tidak perlu khawatir untuk mengonfigurasi semua ini secara manual - ScraperAPI melakukannya untuk Anda di latar belakang.

Mari kita lihat cara menggunakan ScraperAPI untuk mengekstrak data dari Catch.com.au menggunakan Python.

Berikut skrip yang dapat Anda gunakan:

import requests
from bs4 import BeautifulSoup

# ScraperAPI key and target URL
API_KEY = 'your_scraperapi_key'
URL = 'https://www.catch.com.au/'

# Parameters for the API request
params = {
    'api_key': API_KEY,
    'url': URL,
    'render': 'true'  # Ensures JavaScript is rendered, crucial for AWS WAF-protected sites
}

# Send the request to ScraperAPI
response = requests.get('http://api.scraperapi.com', params=params)

# Check the response status
if response.status_code == 200:
    print('Successfully bypassed AWS WAF and scraped the page.')
    
    # Parse the response content with BeautifulSoup
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Print the page content
    print(soup.text)  # Contains the actual HTML of the Catch homepage
else:
    print(f'Failed to scrape page. Status code: {response.status_code}')

Begini cara kerjanya:

Langkah 1: Siapkan kunci API Anda

Pengganti "your_scraperapi_key" dengan kunci ScraperAPI Anda yang sebenarnya. Kunci ini memberi Anda akses ke layanan ScraperAPI, termasuk rotasi IP dan rendering JavaScript.

Langkah 2: Konfigurasikan parameter untuk permintaan tersebut

  • api_key: Ini adalah kunci ScraperAPI Anda yang mengautentikasi permintaan tersebut.
  • url: Website target yang ingin dicari, dalam hal ini Catch.com.au.
  • render="true": Banyak situs web yang dilindungi AWS WAF sangat bergantung pada JavaScript untuk mengirimkan konten dan memvalidasi pengguna. Dengan merender JavaScript, ScraperAPI memastikan bahwa konten dinamis seperti daftar produk atau skrip validasi token dimuat dengan benar - seperti di browser pengguna sebenarnya. Hal ini membuat scraper Anda tampak lebih manusiawi dan membantu melewati perlindungan berbasis JavaScript. Selalu gunakan parameter ini saat menelusuri halaman yang sangat bergantung pada JavaScript.

Langkah 3: Kirimkan permintaan

Menggunakan requests.get()Kirim permintaan GET ke titik akhir ScraperAPI menggunakan parameter yang kami siapkan. ScraperAPI menangani semuanya: menjalankan JavaScript, merotasi proxy, dan mengelola cookie.

Langkah 4: Periksa jawabannya

Jika kode status respons adalah 200, Anda telah berhasil melewati AWS WAF! Jika Anda menerima kode status lain, mis 403 (forbidden)Ini berarti solusinya tidak berhasil dan Anda mungkin perlu menyesuaikan pendekatan Anda, misalnya. B. karena penundaan yang lebih lama antar permintaan.

Langkah 5: Analisis kontennya

Setelah Anda mendapatkan jawabannya, gunakan BeautifulSoup untuk menganalisis konten HTML dan mengekstrak data yang diperlukan. Skrip ini mencetak semua konten HTML dari beranda Catch.com.au, namun Anda dapat menyesuaikannya untuk mengekstrak data spesifik seperti detail produk atau harga.

Mengapa ScraperAPI adalah alat bypass AWS WAF terbaik

Melewati Kontrol Bot AWS WAF memerlukan solusi yang dapat menangani pertahanan kompleks dengan mudah. Inilah sebabnya ScraperAPI menonjol dan membuat prosesnya lebih mudah bagi Anda:

1. Solusi perlindungan bot lengkap

ScraperAPI bukan hanya tentang proxy - ini adalah solusi lengkap yang menangani segalanya mulai dari rotasi IP hingga resolusi CAPTCHA hingga rendering JavaScript. AWS WAF menggunakan beberapa strategi seperti manajemen sesi, validasi header, dan tantangan CAPTCHA, dan ScraperAPI dirancang untuk menangani semua lapisan ini dengan lancar. Tidak perlu menggunakan banyak alat – ScraperAPI siap membantu Anda.

2. Mudah diintegrasikan, kuat dalam tindakan

Menambahkan ScraperAPI ke skrip Python Anda sangatlah mudah. Hanya dengan beberapa baris kode, Anda dapat melewati AWS WAF tanpa harus menyiapkan proksi, cookie, dan header secara manual. Kesederhanaan integrasi ScraperAPI berarti Anda menghabiskan lebih sedikit waktu untuk memecahkan masalah dan lebih banyak waktu untuk mengumpulkan data yang Anda perlukan.

3. Performa yang konsisten dibandingkan AWS WAF

AWS WAF terus memperbarui pertahanannya untuk menghentikan bot, namun ScraperAPI mengimbangi perubahan ini. Baik itu goresan kecil atau pekerjaan berskala besar, kinerja ScraperAPI yang andal memastikan lebih sedikit blok dan goresan yang lebih halus. Ini dirancang untuk menangani perlindungan AWS WAF yang terus berkembang, sehingga memberi Anda ketenangan pikiran.

4. Dapat diskalakan untuk proyek besar dan kecil

Berapa pun ukuran proyek Anda, ScraperAPI dapat disesuaikan dengan kebutuhan Anda. Baik Anda menjelajahi beberapa atau jutaan halaman, rotasi IP otomatis dan infrastruktur secara efisien menangani permintaan dalam jumlah besar. Anda dapat menskalakan pengikisan tanpa mengorbankan kecepatan atau keandalan.

5. Dukungan yang kuat dan sumber daya yang bermanfaat

Dukungan yang baik adalah kunci ketika menangani sesuatu yang rumit seperti AWS WAF. ScraperAPI menawarkan dokumentasi dan tutorial terperinci, dan tim dukungannya dengan senang hati membantu Anda mengatasi tantangan apa pun. Baik Anda memerlukan saran teknis atau bantuan pemecahan masalah, sumber daya ScraperAPI memastikan Anda tidak pernah ketinggalan.

Dalam hal melewati Kontrol Bot AWS WAF, ScraperAPI menonjol sebagai solusi lengkap. Kesederhanaannya, integrasi yang mudah, dan kinerja yang andal menjadikannya alat yang ideal untuk menghapus situs web yang dilindungi.

Siap mengikis? Buka akun ScraperAPI gratis dan dapatkan 5.000 kredit API untuk menguji fitur-fiturnya selama tujuh hari.

Pos terkait

Tinggalkan Komentar