Saat Cloudflare mencurigai pengunjung adalah bot, Cloudflare menampilkan interstitial satu halaman penuh dengan pesan "Memeriksa browser Anda sebelum mengakses..." atau "Verifikasi bahwa Anda adalah manusia." Ini disebut Cloudflare Challenge — berbeda dengan Turnstile, yang merupakan widget yang tertanam di dalam halaman.
Challenge ini memblokir akses ke seluruh halaman hingga browser lulus verifikasi. Setelah lulus, Cloudflare menetapkan cookie qa_validation_cookie yang memberikan akses untuk request berikutnya.
Alur Challenge
Request → Cloudflare proxy → Suspicious? → Challenge page
↓
Browser verification
↓
qa_validation_cookie cookie set
↓
Original page loads
- Request dicegat — Reverse proxy Cloudflare mengevaluasi request masuk
- Risk assessment — Reputasi IP, header request, TLS sinyal browser, dan perilaku dianalisis
- Challenge disajikan — Jika mencurigakan, halaman challenge menggantikan respons yang diinginkan
- Verifikasi browser — JavaScript challenge dijalankan di browser
- Cookie disetel — Jika berhasil, cookie
qa_validation_cookiedisetel dengan TTL yang dapat dikonfigurasi - Akses diberikan — Browser reload dan menerima konten halaman asli
Apa yang Memicu Cloudflare Challenge
| Pemicu | Deskripsi |
|---|---|
| IP datacenter | Request dari hosting provider yang dikenal |
| Header tidak ada | HTTP header tidak ada atau tidak biasa |
| TLS sinyal browser | sinyal browser JA3/JA4 cocok dengan tanda tangan bot |
| Rate request tinggi | Terlalu banyak request dari IP yang sama |
| Security level setting | Pemilik situs menetapkan threshold challenge ke tinggi |
| Aturan berbasis negara | Geo-blocking atau challenge rules |
| Bot score | ML bot score Cloudflare terlalu rendah |
| Known threat | IP ada di daftar threat intelligence |
Cookie qa_validation_cookie
Setelah melewati challenge, browser menerima:
qa_validation_cookie=abc123...; path=/; domain=.example.com; secure; HttpOnly; SameSite=None
Properti utama:
- Durasi: 15 menit hingga 24 jam (dapat dikonfigurasi pemilik situs)
- Cakupan: Terikat dengan domain tertentu
- Binding: Terikat ke User-Agent dan IP yang digunakan saat verifikasi
- Penggunaan: Harus disertakan dalam semua request berikutnya untuk menghindari challenge ulang
Penting: Cookie qa_validation_cookie terikat pada User-Agent dan alamat IP spesifik yang digunakan saat verifikasi. Mengubah salah satunya akan membuat cookie tidak valid.
Cloudflare Challenge vs Turnstile vs JavaScript Challenge
| Fitur | CF Challenge | Turnstile | JS Challenge |
|---|---|---|---|
| Tipe | Interstitial satu halaman penuh | Widget dalam halaman | Pengecekan diam |
| Pengguna melihat | Halaman "Memeriksa browser Anda" | Checkbox atau tidak sama sekali | Tidak ada |
| Memblokir akses halaman | Ya | Tidak | Sebentar |
| Menyetel qa_validation_cookie | Ya | Kadang-kadang | Ya |
| Membutuhkan proxy untuk solve | Ya | Tidak | N/A |
| Butuh Cloudflare CDN | Diperlukan | Opsional | Diperlukan |
Solve Cloudflare Challenge dengan CaptchaAI
Solving Cloudflare Challenge memerlukan proxy karena cookie qa_validation_cookie terikat pada alamat IP.
Python
import requests
import time
API_KEY = "YOUR_API_KEY"
# Submit task — proxy is REQUIRED
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "cloudflare_challenge",
"pageurl": "https://example.com/protected-page",
"proxy": "username:password@proxy.example.com:8080",
"proxytype": "HTTP",
"json": 1
})
task_id = response.json()["request"]
# Poll for result
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
solution = result["request"]
# solution contains qa_validation_cookie cookie + user_agent
print(f"qa_validation_cookie: {solution}")
break
Node.js
const axios = require('axios');
async function solveCloudflareChallenge(pageurl, proxy) {
const { data } = await axios.get('https://ocr.captchaai.com/in.php', {
params: {
key: 'YOUR_API_KEY',
method: 'cloudflare_challenge',
pageurl,
proxy,
proxytype: 'HTTP',
json: 1
}
});
const taskId = data.request;
for (let i = 0; i < 60; i++) {
await new Promise(r => setTimeout(r, 5000));
const res = await axios.get('https://ocr.captchaai.com/res.php', {
params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
});
if (res.data.status === 1) return res.data.request;
}
throw new Error('Timeout');
}
Menggunakan Cookie qa_validation_cookie
# After getting the solution
qa_validation_cookie = solution["qa_validation_cookie"]
user_agent = solution["user_agent"]
# Use the SAME proxy and user agent for subsequent requests
session = requests.Session()
session.cookies.set("qa_validation_cookie", qa_validation_cookie, domain=".example.com")
session.headers["User-Agent"] = user_agent
session.proxies = {"https": "http://username:password@proxy.example.com:8080"}
# Now access the protected page
page = session.get("https://example.com/protected-page")
print(f"Status: {page.status_code}")
Mengapa Proxy Diperlukan
Cookie qa_validation_cookie terikat secara kriptografis ke:
- Alamat IP — Solving harus dilakukan dari IP yang sama yang akan Anda gunakan
- User-Agent — User-Agent saat solving harus cocok dengan request Anda
- TLS sinyal browser — Beberapa konfigurasi juga memeriksa karakteristik TLS
Jika salah satu berbeda antara solving dan request berikutnya, cookie tidak valid.
Pertanyaan Umum
Berapa lama qa_validation_cookie bertahan?
Pemilik situs mengkonfigurasi durasinya, biasanya 15 menit hingga 24 jam. Setelah kedaluwarsa, challenge baru harus di-solve.
Bisakah saya menggunakan kembali qa_validation_cookie di IP berbeda?
Tidak. Cookie terikat pada IP yang digunakan saat verifikasi. Mengubah IP memerlukan solve baru.
Apa perbedaan antara Cloudflare Challenge dan Turnstile?
Cloudflare Challenge adalah interstitial satu halaman penuh yang memblokir akses halaman. Turnstile adalah widget yang tertanam di dalam halaman, mirip reCAPTCHA. Challenge mensyaratkan situs menggunakan Cloudflare sebagai proxy; Turnstile bisa digunakan di situs mana pun.
Berapa lama solving berlangsung?
Solving Cloudflare Challenge memerlukan 20–60 detik, lebih lama dari Turnstile atau reCAPTCHA karena verifikasi browser penuh.
Bagaimana jika halaman memiliki Cloudflare dan reCAPTCHA?
Solve Cloudflare Challenge lebih dulu untuk mengakses halaman, lalu solve reCAPTCHA pada halaman yang dimuat.
Panduan Terkait
- Cara Solve Cloudflare Challenge via API
- Error dan Perbaikan Cloudflare Challenge
- Cara Solve Cloudflare Turnstile via API