
Anh Tuan
Data Science Expert

Kesalahan Cloudflare 1020 menunjukkan bahwa akses ditolak. Kesalahan ini dipicu ketika aturan firewall situs web yang dilindungi oleh Cloudflare dilanggar. Berbagai tindakan, seperti membuat permintaan berlebihan ke situs, dapat menyebabkan pelanggaran ini.
Cara umum untuk memperbaiki masalah ini:
Kesalahan Cloudflare 1015 terjadi ketika alamat IP Anda ditandai dan dilarang oleh Cloudflare karena melebihi batas permintaan situs selama aktivitas scraping. Ini dapat menyebabkan Anda menghadapi kesalahan ini.
Cara umum untuk memperbaiki masalah ini:
Kode status 403 adalah respons "Dilarang", yang dikeluarkan oleh server ketika ia mengakui permintaan sebagai valid tetapi menolak untuk memenuhinya. Ini bisa terjadi karena header yang diperlukan dalam permintaan Anda hilang, seperti header CORS, JWT, atau autentikasi yang diharapkan oleh server.
Jika situs web umumnya dapat diakses dan menambahkan header yang benar tidak memecahkan masalah, kemungkinan besar server mendeteksi permintaan Anda sebagai otomatis.
Cara umum untuk memperbaiki masalah ini:
Tukarkan Kode Bonus CapSolver Anda
Tingkatkan anggaran otomasi Anda secara instan!
Gunakan kode bonus CAPN saat menambahkan dana ke akun CapSolver Anda untuk mendapatkan tambahan 5% bonus pada setiap recharge — tanpa batas.
Tukarkan sekarang di CapSolver Dashboard
.
Cloudflare challenge terlihat seperti:

Terkadang, halaman ini bisa memiliki turnstile

Pastikan Anda perlu menyelesaikan Cloudflare Challenge 5s dan bukan hanya turnstile, untuk hanya turnstile, silakan terus membaca blog ini.
Ada beberapa persyaratan saat menyelesaikan tantangan ini menggunakan Capsolver.
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiCloudflareTask",
"websiteURL": "https://www.yourwebsite.com",
"proxy": "158.120.100.23:334:user:pass"
}
}
Setelah mengirim dengan benar, API akan mengembalikan taskId
{
"errorId": 0,
"taskId": "014fc55c-46c9-41c8-9de7-6cb35d984edc",
"status": "idle"
}
Dapatkan nilai taskId ini dan gunakan untuk mengambil hasil menggunakan metode getTaskResult
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "taskId"
}
Tergantung pada beban sistem, Anda akan mendapatkan hasil dalam rentang 1s hingga 20s
Jika Anda menerima ERROR_CAPTCHA_SOLVE_FAILED dalam respons, bisa ada beberapa alasan:
Jika Anda menerima respons sukses, akan terlihat seperti:
{
"errorId": 0,
"taskId": "d8d3a8b4-30cc-4b09-802a-a476ca17fa54",
"status": "ready",
"solution": {
"accept-language": "en-US,en;q=0.9",
"cookies": {
},
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-US,en;q=0.9",
"cache-control": "max-age=0",
"content-type": "application/x-www-form-urlencoded",
"origin": "",
"referer": "",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"sec-ch-ua-arch": "\"arm\"",
"sec-ch-ua-bitness": "\"64\"",
"sec-ch-ua-full-version": "\"120.0.6099.71\"",
"sec-ch-ua-full-version-list": "\"Not_A Brand\";v=\"8.0.0.0\", \"Chromium\";v=\"120.0.6099.71\", \"Google Chrome\";v=\"120.0.6099.71\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-model": "\"\"",
"sec-ch-ua-platform": "\"macOS\"",
"sec-ch-ua-platform-version": "\"10.14.6\"",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
},
"proxy": "your proxy",
"token": "cf clearance token",
"type": "challenge",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
}
Dari respons ini, Anda perlu memproses nilai cookies, headers, token.
Permintaan Anda harus terlihat seperti:
# -*- coding: utf-8 -*-
import requests
import time
import tls_client
# TODO: Kunci API Anda
API_KEY = ""
proxy = ""
# TODO: URL situs target:
page_url = ''
def call_capsolver():
data = {
"clientKey": API_KEY,
"task": {
"type": 'AntiCloudflareTask',
"websiteURL": page_url,
"proxy": proxy,
}
}
uri = 'https://api.capsolver.com/createTask'
res = requests.post(uri, json=data)
resp = res.json()
task_id = resp.get('taskId')
if not task_id:
print("tidak mendapatkan taskId:", res.text)
return
print('created taskId:', task_id)
while True:
time.sleep(1)
data = {
"clientKey": API_KEY,
"taskId": task_id
}
response = requests.post('https://api.capsolver.com/getTaskResult', json=data)
resp = response.json()
status = resp.get('status', '')
if status == "ready":
print("berhasil => ", response.text)
return resp.get('solution')
if status == "failed" or resp.get("errorId"):
print("gagal! => ", response.text)
return
def request_site(solution):
session = tls_client.Session(
client_identifier="chrome_120",
random_tls_extension_order=True
)
return session.get(
page_url,
headers=solution.get('headers'),
cookies=solution.get('cookies'),
proxy=proxy,
)
def main():
solution = {
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"sec-fetch-site": "none",
"sec-fetch-mode": "navigate",
"sec-fetch-user": "?1",
"sec-fetch-dest": "document",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-US,en;q=0.9",
}
}
# permintaan pertama (periksa proxy Anda):
res = request_site(solution)
print('1. kode status respons:', res.status_code)
if res.status_code != 403:
print("proxy Anda baik dan tidak mendapatkan tantangan Cloudflare")
return
elif 'window._cf_chl_opt' not in res.text:
print('==== proxy diblokir ==== ')
return
# panggil capSolver:
solution = call_capsolver()
if not solution:
return
# permintaan kedua (verifikasi solusi):
res = request_site(solution)
print('2. kode status respons:', res.status_code)
if __name__ == '__main__':
main()
Cloudflare Turnstile Captcha terlihat seperti:
Tantangan yang dikelola

Tantangan non-aktif

Tantangan yang tidak terlihat
tidak terlihat, Anda bisa memeriksa di jaringan / skrip yang dimuat dan lihat apakah turnstile digunakan
Pastikan Anda perlu menyelesaikan Cloudflare Turnstile Captcha dan bukan Cloudflare Challenge 5s, untuk hanya Cloudflare Challenge, silakan terus membaca blog ini.
Ada beberapa persyaratan saat menyelesaikan tantangan ini menggunakan Capsolver.
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": "https://www.yourwebsite.com",
"websiteKey": "0x4XXXXXXXXXXXXXXXXX",
"metadata": {
"action": "login", //opsional
"cdata": "0000-1111-2222-3333-example-cdata" //opsional
}
}
}
"action" dan "cdata" opsional, kadang diperlukan dan kadang tidak.
Tergantung pada konfigurasi situs web.
action adalah nilai atribut data-action dari elemen Turnstile jika ada.
cdata adalah nilai atribut data-cdata dari elemen Turnstile jika ada.
Setelah mengirim dengan benar, API akan mengembalikan taskId
{
"errorId": 0,
"taskId": "014fc55c-46c9-41c8-9de7-6cb35d984edc",
"status": "idle"
}
Dapatkan nilai taskId ini dan gunakan untuk mengambil hasil menggunakan metode getTaskResult
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "taskId"
}
Tergantung pada beban sistem, Anda akan mendapatkan hasil dalam rentang 1s hingga 20s
Jika Anda menerima ERROR_CAPTCHA_SOLVE_FAILED dalam respons, bisa ada beberapa alasan:
Jika Anda menerima respons sukses, akan terlihat seperti:
{
"errorId": 0,
"taskId": "d1e1487a-2cd8-4d4a-aa4d-4ba5b6c65484",
"status": "ready",
"solution": {
"token": "0.cZJPqwnyDxL86HvAXSk4lUTQhjwfyXDcR3qpVwFofuzosoKr1otKj_A-utazXx_Tnp1B2V6womrltBpRw9HbY851ktpaF7sBN-gQwtoRUew4Wj5PO4-WLYPnNRpXxludXzyQ.1oHJhu7619fb8c07ab942bd1587bc76e0e3cef95c7aa75400c4f7d3",
"type": "turnstile",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
}
Dari respons ini, Anda perlu memproses nilai token dan ini akan menjadi solusi captcha yang perlu Anda kirim ke situs web.
import time
from curl_cffi import requests
CAPSOLVER_API_KEY = "Kunci API CAPSOLVER.COM Anda"
PAGE_URL = ""
WEBSITE_KEY = ""
def solvecf(metadata_action=None, metadata_cdata=None):
url = "https://api.capsolver.com/createTask"
task = {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": PAGE_URL,
"websiteKey": WEBSITE_KEY,
}
if metadata_action or metadata_cdata:
task["metadata"] = {}
if metadata_action:
task["metadata"]["action"] = metadata_action
if metadata_cdata:
task["metadata"]["cdata"] = metadata_cdata
data = {
"clientKey": CAPSOLVER_API_KEY,
"task": task
}
response_data = requests.post(url, json=data).json()
print(response_data)
return response_data['taskId']
def solutionGet(taskId):
url = "https://api.capsolver.com/getTaskResult"
status = ""
while status != "ready":
data = {"clientKey": CAPSOLVER_API_KEY, "taskId": taskId}
response_data = requests.post(url, json=data).json()
print(response_data)
status = response_data.get('status', '')
print(status)
if status == "ready":
return response_data['solution']
time.sleep(2)
def main():
start_time = time.time()
taskId = solvecf()
solution = solutionGet(taskId)
if solution:
user_agent = solution['userAgent']
token = solution['token']
print("User_Agent:", user_agent)
print("Captcha Turnstile berhasil diselesaikan, token:", token)
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Waktu untuk menyelesaikan captcha: {elapsed_time} detik")
if __name__ == "__main__":
main()
const axios = require('axios');
const CAPSOLVER_API_KEY = "";
const PAGE_URL = "";
const WEBSITE_KEY = "";
async function solvecf(metadata_action = null, metadata_cdata = null) {
const url = "https://api.capsolver.com/createTask";
const task = {
type: "AntiTurnstileTaskProxyLess",
websiteURL: PAGE_URL,
websiteKey: WEBSITE_KEY,
};
if (metadata_action || metadata_cdata) {
task.metadata = {};
if (metadata_action) {
task.metadata.action = metadata_action;
}
if (metadata_cdata) {
task.metadata.cdata = metadata_cdata;
}
}
const data = {
clientKey: CAPSOLVER_API_KEY,
task: task
};
const response = await axios.post(url, data);
console.log(response.data);
return response.data.taskId;
}
async function solutionGet(taskId) {
const url = "https://api.capsolver.com/getTaskResult";
let status = "";
while (status !== "ready") {
const data = { clientKey: CAPSOLVER_API_KEY, taskId: taskId };
const response = await axios.post(url, data);
console.log(response.data);
status = response.data.status;
console.log(status);
if (status === "ready") {
return response.data.solution;
}
await new Promise(resolve => setTimeout(resolve, 2000));
}
}
async function main() {
const start_time = Date.now();
const taskId = await solvecf();
const solution = await solutionGet(taskId);
if (solution) {
const user_agent = solution.userAgent;
const token = solution.token;
console.log("User_Agent:", user_agent);
console.log("Captcha Turnstile berhasil diselesaikan, token:", token);
}
const end_time = Date.now();
const elapsed_time = (end_time - start_time) / 1000;
console.log(`Waktu untuk menyelesaikan captcha: ${elapsed_time} detik`);
}
main().catch(console.error);
Cloudflare menerapkan berbagai mekanisme perlindungan — dari blok HTTP standar seperti 1020, 403, 429 (1015) hingga tantangan yang lebih canggih seperti Tantangan Cloudflare 5 detik dan Captcha Turnstile. Saat melakukan scraping web atau otomatisasi, mengidentifikasi mekanisme perlindungan yang aktif adalah langkah pertama yang penting.
Panduan ini menjelaskan kode status Cloudflare yang umum, cara membedakan Tantangan 5 detik vs Captcha Turnstile, dan memberikan contoh kerja untuk menyelesaikannya menggunakan Capsolver API, termasuk implementasi Python & NodeJS.
Dengan memilih pendekatan yang tepat — proxy yang berputar, header yang tepat, perlindungan fingerprint, atau menyelesaikan CAPTCHA/Tantangan secara programatis — Anda dapat meningkatkan signifikansi tingkat keberhasilan scraping dan mengurangi pemblokiran.
Jika permintaan Anda masih ditandai sebagai terlarang, audit pengaturan scraper Anda: kualitas proxy, header, fingerprint TLS, dan frekuensi permintaan seringkali sepenting dengan solver CAPTCHA itu sendiri.
Periksa antarmuka pengguna atau permintaan jaringan.
Alasan mungkin:
Ya. Dengan proxy yang baik, fingerprint yang berubah, dan logika penggunaan token kembali, Anda dapat mengembangkan scraping — pastikan kepatuhan terhadap ketentuan situs web dan persyaratan hukum setempat.
Captcha Turnstile biasanya lebih mudah karena biasanya mengembalikan satu token. Tantangan 5 detik memerlukan cookies, header, dan konsistensi proxy, sehingga lebih kompleks.
Pahami perbedaan kunci antara Cloudflare Challenge vs Turnstile dan pelajari cara mengidentifikasi mereka untuk otomatisasi web yang sukses. Dapatkan tips ahli dan solver yang direkomendasikan.

Pelajari cara memperbaiki Cloudflare Error 1005 diakses ditolak selama web scraping. Temukan solusi seperti proksi rumah tangga, pemindaian sidik jari peramban, dan CapSolver untuk CAPTCHA. Optimalkan ekstraksi data.
