Cara Menyelesaikan Tantangan AWS / Captcha dengan PHP: Panduan Lengkap

Ethan Collins
Pattern Recognition Specialist
10-Dec-2025

TLDR (Terlalu Panjang; Tidak Membaca)
Panduan ini memberikan tutorial langkah demi langkah tentang cara melewati CAPTCHA dan halaman Challenge AWS WAF menggunakan PHP dan API CapSolver. Kami menjelaskan logika untuk mendeteksi respons CAPTCHA (HTTP 405) dan Challenge (HTTP 202), mengekstrak parameter yang diperlukan, dan menggunakan cookie aws-waf-token yang dihasilkan untuk mengakses sumber daya yang dilindungi.
Pendahuluan
Selamat datang di panduan lengkap ini di mana kita akan menjelajahi dunia CAPTCHA AWS dan bagaimana menerapkan solver PHP untuknya. Bagi pengembang dan penjelajah web, menghadapi CAPTCHA bisa menjadi hambatan signifikan, tetapi dengan alat yang tepat, ini menjadi tugas yang dapat dikelola.
Apa itu AWS WAF CAPTCHA dan Challenge?
AWS WAF (Web Application Firewall) adalah layanan keamanan yang membantu melindungi aplikasi web dari eksploit web umum. Layanan ini menawarkan dua tindakan utama untuk memverifikasi bahwa permintaan berasal dari pengguna manusia yang sah, bukan bot: CAPTCHA dan Challenge.
Ringkasan Aksi AWS WAF
| Aksi | Tujuan | Kode Status HTTP | Solusi yang Diperlukan |
|---|---|---|---|
| Challenge | Menjalankan verifikasi latar belakang untuk memastikan sesi klien adalah browser standar. | 202 Accepted |
Membutuhkan penyelesaian tantangan JavaScript untuk mendapatkan token. |
| CAPTCHA | Meminta pengguna akhir untuk menyelesaikan teka-teki visual untuk membuktikan mereka manusia. | 405 Method Not Allowed |
Membutuhkan penyelesaian CAPTCHA visual, yang melibatkan ekstraksi parameter spesifik dari halaman. |
Setelah CAPTCHA atau Challenge berhasil diselesaikan, AWS WAF mengeluarkan token yang valid, yang dikembalikan sebagai nilai dari cookie bernama aws-waf-token. Cookie ini harus disertakan dalam permintaan berikutnya untuk melewati perlindungan WAF.
🔎 Menyelesaikan AWS Captcha / Challenge menggunakan PHP dan CapSolver
CapSolver menyediakan solusi API yang kuat untuk menangani Challenge latar belakang dan CAPTCHA visual yang ditampilkan oleh AWS WAF. Panduan ini fokus pada penggunaan perpustakaan cURL PHP untuk menerapkan logika yang diperlukan.
📕 Persyaratan
- PHP (dengan ekstensi cURL diaktifkan)
- cURL
- Kunci API CapSolver (Anda dapat mendapatkannya dengan mendaftar di CapSolver)
🛠️ Langkah 1: Menyiapkan Lingkungan dan Fungsi Bantuan
Inti dari solusi kita melibatkan dua pemanggilan API utama ke CapSolver: createTask untuk mengirim CAPTCHA/Challenge dan getTaskResult untuk mengambil solusinya.
PHP
<?php
// --- Konfigurasi ---
$PROXY = "http://username:password@host:port"; // OPSIONAL: Ganti dengan detail proxy Anda (misalnya, untuk AntiAwsWafTask)
$PAGE_URL = "https://norway-meetup.aws.wslab.no/"; // Ganti dengan URL target yang dilindungi AWS WAF
$CLIENT_KEY = "YourPayPerUsage"; // Ganti dengan kunci API CAPSOLVER Anda
/**
* Mengirim tugas ke API CapSolver.
* @param array $payload Payload tugas yang berisi tipe dan parameter.
* @return array Respons API, termasuk taskId.
*/
function createTask($payload) {
global $CLIENT_KEY;
$ch = curl_init();
echo("Membuat tugas...\n");
curl_setopt($ch, CURLOPT_URL, 'https://api.capsolver.com/createTask');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['clientKey' => $CLIENT_KEY, 'task' => $payload]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/**
* Memeriksa API CapSolver untuk hasil tugas.
* @param string $taskId ID tugas yang akan diperiksa.
* @return array Respons API yang berisi solusi.
*/
function getTaskResult($taskId) {
global $CLIENT_KEY;
do {
echo("Menunggu solusi...\n");
sleep(1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.capsolver.com/getTaskResult');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['clientKey' => $CLIENT_KEY, 'taskId' => $taskId]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if (isset($data['status']) && $data['status'] == "ready") {
return $data;
}
// Menangani kesalahan potensial dari getTaskResult
if (isset($data['errorId']) && $data['errorId'] != 0) {
echo("Kesalahan mengambil hasil tugas: " . $data['errorDescription'] . "\n");
return null;
}
} while(true);
}
/**
* Menyelesaikan Challenge atau Captcha AWS WAF menggunakan tipe tugas yang sesuai.
* @param string $taskType Tipe tugas CapSolver (AntiAwsWafTask atau AwsCaptchaTask).
* @param array $params Parameter yang diperlukan untuk tugas.
* @return string|null Nilai cookie aws-waf-token atau null jika gagal.
*/
function solveAwsWaf($taskType, $params) {
global $PAGE_URL, $PROXY;
$payload = [
'type' => $taskType,
'websiteURL' => $PAGE_URL,
'proxy' => $PROXY,
];
// Gabungkan parameter spesifik untuk tugas
$payload = array_merge($payload, $params);
// Bersihkan nilai kosong untuk permintaan yang lebih bersih
$payload = array_filter($payload, function($value) {
return $value !== "" && $value !== null;
});
$taskData = createTask($payload);
if (isset($taskData['taskId'])) {
$result = getTaskResult($taskData['taskId']);
if ($result && isset($result['solution']['cookie'])) {
return $result['solution']['cookie'];
}
}
return null;
}
⚡ Langkah 2: Menerapkan Logika Deteksi dan Penyelesaian WAF
Logika utama melibatkan membuat permintaan awal ke halaman yang dilindungi dan memeriksa kode HTTP untuk menentukan apakah Challenge (202) atau CAPTCHA (405) diperlukan. Kami kemudian menggunakan ekspresi reguler untuk mengekstrak parameter yang diperlukan dari konten HTML respons.
PHP
// --- Logika Eksekusi Utama ---
// 1. Permintaan awal ke halaman yang dilindungi
$ch = curl_init($PAGE_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$cookie = null;
echo("Kode HTTP Awal: " . $httpCode . "\n");
if ($httpCode == 202) {
// --- Penanganan Challenge (202) ---
echo("Challenge terdeteksi (Kode HTTP 202). Mengekstrak parameter...\n");
// Ekstrak URL challenge.js
preg_match('/<script src="([^"]*token.awswaf.com[^"]*)"/', $response, $matches);
$awsChallengeJS = $matches[1] ?? null;
if ($awsChallengeJS) {
$params = ['awsChallengeJS' => $awsChallengeJS];
$cookie = solveAwsWaf("AntiAwsWafTask", $params);
} else {
echo("Kesalahan: awsChallengeJS tidak ditemukan untuk Challenge.\n");
}
} elseif ($httpCode == 405) {
// --- Penanganan CAPTCHA (405) ---
echo("CAPTCHA terdeteksi (Kode HTTP 405). Mengekstrak parameter...\n");
// Ekstrak parameter dari konten halaman
preg_match('/<script src="([^"]*token.awswaf.com[^"]*)"/', $response, $matches);
$awsChallengeJS = $matches[1] ?? null;
preg_match('/"key":"(.*?)"/', $response, $matches);
$awsKey = $matches[1] ?? null;
preg_match('/"iv":"(.*?)"/', $response, $matches);
$awsIv = $matches[1] ?? null;
preg_match('/"context":"(.*?)"/', $response, $matches);
$awsContext = $matches[1] ?? null;
if ($awsKey && $awsIv && $awsContext) {
$params = [
'awsKey' => $awsKey,
'awsIv' => $awsIv,
'awsContext' => $awsContext,
'awsChallengeJS' => $awsChallengeJS // Opsional tetapi disarankan
];
// Catatan: Tipe tugas untuk CAPTCHA visual biasanya masih AntiAwsWafTask,
// tetapi parameter yang dikirim menentukan jenis solusi pada sisi CapSolver.
$cookie = solveAwsWaf("AntiAwsWafTask", $params);
} else {
echo("Kesalahan: Parameter key, iv, atau context tidak ditemukan untuk CAPTCHA.\n");
}
}
// 3. Gunakan token untuk mengakses sumber daya yang dilindungi
if ($cookie) {
echo("Berhasil mendapatkan nilai cookie aws-waf-token. Membuat permintaan akhir...\n");
$ch = curl_init($PAGE_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Atur cookie aws-waf-token
curl_setopt($ch, CURLOPT_COOKIE, "aws-waf-token=" . $cookie);
$finalResponse = curl_exec($ch);
curl_close($ch);
echo "\n--- Konten Halaman Akhir ---\n";
echo $finalResponse;
echo "\n--------------------------\n";
} else {
echo("Gagal menyelesaikan Challenge/CAPTCHA AWS WAF.\n");
}
?>
Catatan Optimasi Kode
Kode asli menggunakan fungsi terpisah (solveAwsChallenge, solveAwsCaptcha) dan penamaan parameter yang sedikit tidak konsisten (key, iv, context vs. awsKey, awsIv, awsContext). Kode yang dioptimalkan menyederhanakan ini menjadi satu fungsi solveAwsWaf, memastikan konsistensi dengan dokumentasi API CapSolver terbaru untuk menyelesaikan AWS WAF. Pendekatan ini lebih modular dan lebih mudah dipelihara.
Logika ini sangat efektif untuk tugas penjelajahan web dan otomatisasi. Untuk mereka yang bekerja dalam bahasa lain, CapSolver juga menyediakan panduan seperti "Cara Menyelesaikan AWS Captcha / Challenge dengan Python" [https://www.capsolver.com/blog/how-to-solve-aws-captcha-challenge-with-python] yang mengikuti pola API yang sama.
Kesimpulan
Mekanisme Challenge dan CAPTCHA AWS WAF adalah penghalang anti-bot yang efektif, tetapi bukan tidak terdapatkan. Dengan menerapkan logika deteksi dan penyelesaian yang kuat dalam PHP, pengembang dapat memperoleh nilai aws-waf-token yang diperlukan untuk melanjutkan tugas penjelajahan web atau otomatisasi tanpa gangguan. Kuncinya adalah mengidentifikasi tindakan WAF yang tepat melalui kode status HTTP dan mengekstrak parameter yang diperlukan dari sumber halaman secara akurat.
Poin-Poin Utama
- Aksi AWS WAF: AWS WAF menggunakan Challenge latar belakang (Kode HTTP 202) atau CAPTCHA visual (Kode HTTP 405) untuk memblokir bot.
- Tujuan: Tujuan akhir adalah memperoleh nilai cookie
aws-waf-token. - API CapSolver: Tipe tugas
AntiAwsWafTaskmenangani penyelesaian Challenge dan CAPTCHA, dengan parameter yang diperlukan menentukan solusi spesifik. - Implementasi PHP: Perpustakaan cURL PHP digunakan untuk permintaan, dan
preg_matchpenting untuk mengekstrak parameter dinamis sepertiawsChallengeJS,awsKey,awsIv, danawsContextdari sumber HTML. - Keandalan: Untuk otomatisasi yang stabil dan berkapasitas tinggi, mengintegrasikan solver khusus seperti CapSolver sangat penting, seperti yang dijelaskan dalam sumber daya seperti AWS WAF CAPTCHA Solver: Token & Image Solution untuk Penjelajah
FAQ: Pertanyaan yang Sering Diajukan
Q1: Mengapa saya perlu memeriksa kode status HTTP (202 atau 405)?
A: Kode status HTTP adalah indikator yang paling andal untuk jenis tindakan WAF yang diperlukan. Kode status 202 Accepted menunjukkan bahwa Challenge aktif, yang membutuhkan parameter minimal. Kode status 405 Method Not Allowed menunjukkan bahwa CAPTCHA visual aktif, yang membutuhkan parameter spesifik (key, iv, context) yang diekstrak dari variabel JavaScript halaman.
Q2: Apa perbedaan antara AntiAwsWafTask dan AntiAwsWafTaskProxyLess?
A: Kedua tipe tugas ini dirancang untuk menyelesaikan tantangan AWS WAF. Perbedaan utamanya adalah kebutuhan proxy. AntiAwsWafTask memerlukan Anda untuk menyediakan proxy sendiri dalam payload permintaan. AntiAwsWafTaskProxyLess tidak memerlukan proxy, karena CapSolver menangani penggunaan proxy secara internal. Menggunakan proxy sering direkomendasikan untuk penjelajahan web skala besar untuk menjaga anonimitas dan menghindari pemblokiran IP.
Q3: Skrip saya gagal menemukan parameter key, iv, atau context. Apa yang harus saya lakukan?
A: Parameter ini dibuat secara dinamis dan disisipkan dalam sumber HTML, biasanya dalam tag <script> atau bidang input tersembunyi. Jika preg_match gagal, kemungkinan besar karena perubahan dalam implementasi WAF situs target. Anda harus memeriksa sumber HTML terbaru dari halaman yang diblokir untuk memperbarui ekspresi reguler Anda.
Q4: Bisakah saya menyelesaikan AWS WAF tanpa menggunakan layanan pihak ketiga?
A: Menyelesaikan tantangan AWS WAF secara manual sangat sulit dan tidak praktis untuk otomatisasi. Tantangan memerlukan eksekusi JavaScript yang kompleks dan terenkripsi, sedangkan CAPTCHA memerlukan teka-teki pengenalan gambar. Layanan pihak ketiga seperti CapSolver menggunakan AI canggih dan infrastruktur skala besar untuk menyelesaikan tantangan ini secara real-time, membuat otomatisasi mungkin. Membangun solver internal untuk setiap jenis CAPTCHA umumnya tidak efektif secara biaya atau andal.
Q5: Berapa lama nilai cookie aws-waf-token berlaku?
A: Periode validitas cookie aws-waf-token ditentukan oleh konfigurasi AWS WAF dari situs web yang dilindungi, tetapi biasanya sekitar 10-30 menit. Setelah token kedaluwarsa, Anda perlu mengulangi proses penyelesaian (permintaan awal, deteksi, dan pengiriman tugas) untuk memperoleh token baru.
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 Tantangan AWS / Captcha dengan PHP: Panduan Lengkap
Panduan PHP yang rinci untuk menyelesaikan CAPTCHA dan Tantangan AWS WAF untuk pengambilan data dan otomatisasi yang andal

Ethan Collins
10-Dec-2025

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

Ethan Collins
04-Dec-2025

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

Adélia Cruz
01-Dec-2025

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

Anh Tuan
30-Nov-2025
![Cara Menyelesaikan Captcha AWS Menggunakan Puppeteer [Javascript] dengan Ekstensi CapSolver](https://assets.capsolver.com/prod/posts/aws-captcha-solver-puppeteer/5e93a8e9739b4c24ab2f6cbba8563a93.png)
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

Emma Foster
25-Nov-2025

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.

Adélia Cruz
13-Nov-2025

