
Adélia Cruz
Neural Network Developer

O Erro 1020 do Cloudflare indica que o acesso foi negado. Este erro é acionado quando uma regra do firewall do site, protegido pelo Cloudflare, é violada. Várias ações, como fazer solicitações excessivas ao site, podem levar a esta violação.
Formas comuns de resolver este problema:
O Erro 1015 do Cloudflare ocorre quando seu endereço IP é marcado e banido pelo Cloudflare por exceder o limite de taxa de um site durante atividades de raspagem. Isso pode levar ao aparecimento deste erro.
Formas comuns de resolver este problema:
Um código de status 403 é uma resposta "Proibido", emitida por um servidor quando ele reconhece uma solicitação como válida, mas se recusa a atendê-la. Isso pode ocorrer devido à falta de cabeçalhos necessários em sua solicitação, como cabeçalhos CORS, JWT ou de autenticação que o servidor espera.
Se o site for geralmente acessível e adicionar os cabeçalhos corretos não resolver o problema, é possível que o servidor esteja detectando suas solicitações como automatizadas.
Formas comuns de resolver este problema:
Resgate seu código promocional CapSolver
Aumente seu orçamento de automação instantaneamente!
Use o código promocional CAPN ao recarregar sua conta no CapSolver para obter um bônus adicional de 5% em cada recarga — sem limites.
Resgate-o agora em seu Painel CapSolver
.
O desafio do Cloudflare parece ser:

Às vezes, esta página pode ter turnstile

Verifique se você precisa resolver o Desafio Cloudflare 5s e não apenas o turnstile, para apenas o turnstile, continue lendo este blog.
Há algumas exigências ao resolver este desafio usando o Capsolver.
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "SUA_CHAVE_API",
"task": {
"type": "AntiCloudflareTask",
"websiteURL": "https://www.seusite.com",
"proxy": "158.120.100.23:334:user:pass"
}
}
Após enviar corretamente, a API retornará um taskId
{
"errorId": 0,
"taskId": "014fc55c-46c9-41c8-9de7-6cb35d984edc",
"status": "idle"
}
Obtenha esse valor taskId e use-o para recuperar o resultado usando o método getTaskResult
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "SUA_CHAVE_API",
"taskId": "taskId"
}
Dependendo da carga do sistema, você receberá os resultados em um intervalo de 1s a 20s
Se você receber ERROR_CAPTCHA_SOLVE_FAILED na resposta, podem haver várias razões:
Se você receber uma resposta de sucesso, ela será semelhante a:
{
"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": "seu proxy",
"token": "token de clearance do cf",
"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"
}
}
A partir desta resposta, você precisará analisar os valores de cookies, headers, token.
Sua solicitação precisará ser semelhante a:
cf_clearance que você precisará criar# -*- coding: utf-8 -*-
import requests
import time
import tls_client
# TODO: Sua chave de API
API_KEY = ""
proxy = ""
# TODO: Sua URL do site alvo:
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("não obteve taskId:", res.text)
return
print('criado 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("sucesso => ", response.text)
return resp.get('solution')
if status == "failed" or resp.get("errorId"):
print("falha! => ", 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",
}
}
# primeira solicitação (verifique seu proxy):
res = request_site(solution)
print('1. código de status da resposta:', res.status_code)
if res.status_code != 403:
print("seu proxy está bom e não recebeu o desafio do cloudflare")
return
elif 'window._cf_chl_opt' not in res.text:
print('==== proxy bloqueado ==== ')
return
# chamar o capSolver:
solution = call_capsolver()
if not solution:
return
# segunda solicitação (verificar solução):
res = request_site(solution)
print('2. código de status da resposta:', res.status_code)
if __name__ == '__main__':
main()
O Captcha Cloudflare Turnstile parece ser:
Desafio gerenciado

Desafio não interativo

Desafio invisível
não visível, você pode verificar na rede / scripts carregados e ver se o turnstile está sendo usado
Verifique se você precisa resolver o Captcha Cloudflare Turnstile e não o Desafio Cloudflare 5s, para apenas o Desafio Cloudflare, continue lendo este blog.
Há algumas exigências ao resolver este desafio usando Capsolver.
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "SUA_CHAVE_API",
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": "https://www.seusite.com",
"websiteKey": "0x4XXXXXXXXXXXXXXXXX",
"metadata": {
"action": "login", //opcional
"cdata": "0000-1111-2222-3333-exemplo-cdata" //opcional
}
}
}
"action" e "cdata" são opcionais, às vezes são necessários e outras vezes não.
Depende da configuração do site.
action é o valor do atributo data-action do elemento Turnstile se existir.
cdata é o valor do atributo data-cdata do elemento Turnstile se existir.
Após enviar corretamente, a API retornará um taskId
{
"errorId": 0,
"taskId": "014fc55c-46c9-41c8-9de7-6cb35d984edc",
"status": "idle"
}
Obtenha esse valor taskId e use-o para recuperar o resultado usando o método getTaskResult
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "SUA_CHAVE_API",
"taskId": "taskId"
}
Dependendo da carga do sistema, você receberá os resultados em um intervalo de 1s a 20s
Se você receber ERROR_CAPTCHA_SOLVE_FAILED na resposta, podem haver várias razões:
Se você receber uma resposta de sucesso, ela será semelhante a:
{
"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"
}
}
A partir desta resposta, você precisará analisar os valores de token e este será a solução do captcha que você precisará enviar para o site.
import time
from curl_cffi import requests
CAPSOLVER_API_KEY = "SUA CHAVE DA API DO CAPSOLVER.COM"
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 de Turnstile resolvido, token:", token)
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Tempo para resolver o captcha: {elapsed_time} segundos")
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 de Turnstile resolvido, token:", token);
}
const end_time = Date.now();
const elapsed_time = (end_time - start_time) / 1000;
console.log(`Tempo para resolver o captcha: ${elapsed_time} segundos`);
}
main().catch(console.error);
A Cloudflare implementa vários mecanismos de proteção — desde bloqueios HTTP padrão como 1020, 403, 429 (1015) até desafios mais avançados como Desafio Cloudflare 5s e Captcha Turnstile. Ao realizar raspagem de web ou automação, identificar qual proteção está ativa é o primeiro passo crucial.
Este guia explicou os códigos de status comuns da Cloudflare, como distinguir entre o Desafio 5s e o Captcha Turnstile, e forneceu exemplos funcionais para resolver usando a API Capsolver, incluindo implementações em Python e NodeJS.
Ao escolher a abordagem certa — proxies rotativos, cabeçalhos corretos, proteção de fingerprinting ou resolver programaticamente CAPTCHA/Desafio — você pode melhorar significativamente as taxas de sucesso na raspagem e reduzir os bloqueios.
Se suas solicitações ainda estiverem sendo marcadas, revise sua configuração de raspador: qualidade de proxy, cabeçalhos, fingerprint TLS e frequência de solicitação geralmente importam tanto quanto o próprio solucionador de CAPTCHA.
Verifique a interface do usuário ou as solicitações de rede.
Possíveis razões:
Sim. Com proxies bons, fingerprinting rotativo e lógica de reutilização de token, você pode escalar a raspagem — certifique-se de seguir os termos do site e as exigências legais locais.
O Captcha Turnstile geralmente é mais fácil, pois normalmente retorna um único token. O Desafio Cloudflare 5s requer cookies, cabeçalhos e consistência de proxy, tornando-o mais complexo.
Entenda as principais diferenças entre Cloudflare Challenge vs Turnstile e aprenda a identificá-los para automação web bem-sucedida. Obtenha dicas de especialistas e um solucionador recomendado.

Aprenda a corrigir o Erro 1005 do Cloudflare acesso negado durante o web scraping. Descubra soluções como proxies residenciais, fingerprinting de navegador e CapSolver para CAPTCHA. Otimize sua extração de dados.
