Der „I'm Under Attack Mode“ (IUAM) von Cloudflare ist ein DDoS-Schutz, der jeden Besucher durch eine 5-sekündige JavaScript-Herausforderung zwingt, bevor er auf die Website zugreift. Dabei handelt es sich um den aggressivsten Cloudflare-Schutzmodus, der von Seitenbetreibern bei Angriffen manuell ausgelöst oder auf Hochrisikoseiten dauerhaft aktiviert wird. Für den automatisierten Zugriff erstellt IUAM eine obligatorische JavaScript-Herausforderung, die herkömmliche HTTP-Clients nicht bestehen können.
Was IUAM macht
Wenn ein Website-Betreiber den „Ich werde angegriffen-Modus“ im Cloudflare-Dashboard aktiviert:
Every request → Cloudflare edge
↓
JavaScript challenge page served (HTTP 503)
↓
Browser executes JavaScript challenge (~5 seconds)
↓
Challenge answer submitted automatically
↓
cf_clearance cookie set
↓
Original page loaded with cf_clearance cookie
Die IUAM-Challenge-Seite
Die Challenge-Seite gibt HTTP 503 zurück und enthält:
| Element | Zweck |
|---|---|
jschl_vc |
Fordern Sie den Bestätigungscode an |
pass |
Timing-Token (erzwingt eine Wartezeit von 5 Sekunden) |
jschl_answer |
Mit JavaScript berechnete Antwort |
cf_chl_opt |
Herausforderungsoptionen |
ray |
Cloudflare Ray-ID für die Anfrage |
| „Überprüfen Sie Ihren Browser, bevor Sie darauf zugreifen …“ | Sichtbare Nachricht für Benutzer |
Hauptmerkmale
- HTTP 503-Statuscode (NICHT 403)
- 5 Sekunden obligatorische Wartezeit vor der Einreichung der Herausforderung
- JavaScript-Ausführung erforderlich – einfache HTTP-Clients schlagen fehl
- cf_clearance-Cookie – gültig für ca. 30 Minuten, ermöglicht nachfolgende Anfragen
- Domainweit – jede Seite der Domain zeigt die Herausforderung
Identifizierung von IUAM im Vergleich zu anderen Cloudflare-Schutzmaßnahmen
import requests
def identify_cloudflare_protection(url):
"""Distinguish IUAM from other Cloudflare protections."""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/120.0.0.0",
}
response = requests.get(url, headers=headers, timeout=15, allow_redirects=False)
html = response.text
status = response.status_code
if status == 503 and "jschl" in html:
return "IUAM (I'm Under Attack Mode)"
if status == 503 and "challenge-platform" in html:
return "Managed Challenge"
if status == 403 and "cf-ray" in str(response.headers):
return "Blocked by WAF/Bot Management"
if "cf-turnstile" in html:
return "Turnstile widget"
if "challenges.cloudflare.com" in html:
return "Cloudflare challenge (generic)"
if status == 200:
return "No challenge (passed)"
return f"Unknown (status: {status})"
Erkennungstabelle
| Signal | IUAM | Herausforderung gemanagt | Drehkreuz | WAF-Block |
|---|---|---|---|---|
| HTTP-Status | 503 | 503 | 200 | 403 |
jschl im Textkörper |
✅ | ❌ | ❌ | ❌ |
| 5 Sekunden warten | ✅ | Manchmal | ❌ | ❌ |
cf_clearance gesetzt |
Nach dem Lösen | Nach dem Lösen | ❌ | ❌ |
| Challenge-Seite | Ganze Seite | Ganze Seite | Nur Widget | Fehlerseite |
| Erfordert JS | ✅ | ✅ | ✅ | ❌ |
So funktioniert die JavaScript-Challenge
Die JavaScript-Challenge von IUAM soll überprüfen, ob der Besucher einen echten Browser hat:
Herausforderungsfluss
- Cloudflare stellt die Herausforderungsseite mit verschleiertem JavaScript bereit
- JavaScript führt Berechnungen durch: - Mathematische Operationen an Zeichenfolgen aus der Seite - DOM-Messungen - Durchsetzung des Timings (mindestens 4–5 Sekunden)
- Antwort berechnet – ein numerischer Wert basierend auf der Herausforderung
- Formular automatisch übermittelt an Cloudflare mit
jschl_vc,passundjschl_answer - Cloudflare validiert Antwort und Zeitpunkt
cf_clearance-Cookie zurückgegeben – ermöglicht den Zugriff für ca. 30 Minuten
Warum HTTP-Clients scheitern
# This will ALWAYS get the challenge page:
import requests
response = requests.get("https://iuam-protected-site.com")
# response.status_code == 503
# response.text contains "Checking your browser..."
# Plain HTTP clients cannot:
# - Execute JavaScript
# - Compute the challenge answer
# - Meet the timing requirement
# - Generate the required cookies
IUAM mit CaptchaAI lösen
Methode 1: Cloudflare Challenge-Solver (empfohlen)
Die cloudflare_challenge-Methode von CaptchaAI behandelt IUAM-Herausforderungen direkt:
import requests
import time
API_KEY = "YOUR_API_KEY"
TARGET_URL = "https://iuam-protected-site.com/data"
# Step 1: Submit challenge to CaptchaAI
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "cloudflare_challenge",
"sitekey": "managed",
"pageurl": TARGET_URL,
"json": 1,
})
task_id = submit.json()["request"]
print(f"Task submitted: {task_id}")
# Step 2: Poll for result
for attempt 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:
token = result["request"]
print(f"Challenge solved! Token: {token[:50]}...")
break
elif result.get("request") == "ERROR_CAPTCHA_UNSOLVABLE":
print("Challenge could not be solved")
break
else:
print("Timed out waiting for solution")
# Step 3: Use cf_clearance cookie or token
# The response contains the clearance data needed to access the site
Methode 2: Browser-Automatisierung mit CaptchaAI
Kombinieren Sie für dauerhafte Sitzungen einen Headless-Browser mit CaptchaAI:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import requests
import time
API_KEY = "YOUR_API_KEY"
# Launch browser
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)
# Navigate to IUAM page
driver.get("https://iuam-protected-site.com")
# Wait for challenge page to load
time.sleep(3)
# Check if IUAM challenge is present
if "Checking your browser" in driver.page_source or driver.title == "Just a moment...":
print("IUAM challenge detected")
# Option A: Wait for browser to solve natively (if not headless)
try:
WebDriverWait(driver, 15).until(
lambda d: "Checking your browser" not in d.page_source
)
print("Challenge passed natively")
except:
print("Native solve failed — using CaptchaAI")
# Submit to CaptchaAI for solving
# Token submission via JavaScript injection
# After challenge is passed, extract cookies for API use
cookies = driver.get_cookies()
cf_clearance = next(
(c["value"] for c in cookies if c["name"] == "cf_clearance"), None
)
if cf_clearance:
print(f"cf_clearance obtained: {cf_clearance[:30]}...")
# Use cookie with requests library
session = requests.Session()
for cookie in cookies:
session.cookies.set(cookie["name"], cookie["value"])
session.headers.update({
"User-Agent": driver.execute_script("return navigator.userAgent"),
})
# Now make requests with the clearance cookie
response = session.get("https://iuam-protected-site.com/api/data")
print(f"Status: {response.status_code}")
driver.quit()
Node.js
const axios = require("axios");
const API_KEY = "YOUR_API_KEY";
const TARGET_URL = "https://iuam-protected-site.com/data";
async function solveIUAM() {
// Submit challenge
const submit = await axios.post("https://ocr.captchaai.com/in.php", null, {
params: {
key: API_KEY,
method: "cloudflare_challenge",
sitekey: "managed",
pageurl: TARGET_URL,
json: 1,
},
});
const taskId = submit.data.request;
console.log(`Task submitted: ${taskId}`);
// Poll for result
for (let i = 0; i < 60; i++) {
await new Promise((r) => setTimeout(r, 5000));
const result = await axios.get("https://ocr.captchaai.com/res.php", {
params: { key: API_KEY, action: "get", id: taskId, json: 1 },
});
if (result.data.status === 1) {
console.log("IUAM challenge solved!");
return result.data.request;
}
}
throw new Error("Timed out");
}
solveIUAM().then((token) => console.log("Token:", token.substring(0, 50)));
Verwalten von cf_clearance-Cookies
Das cf_clearance-Cookie ist das wichtigste Ergebnis bei der Lösung einer IUAM-Herausforderung:
| Eigentum | Wert |
|---|---|
| Cookie-Name | cf_clearance |
| Lebenslang | ~30 Minuten (vom Standort konfigurierbar) |
| Umfang | Domainweit |
| Gebunden an | IP-Adresse + User-Agent |
| Wiederverwendbar | Ja, ein Leben lang |
| Übertragbar | Nur mit gleicher IP + UA |
Strategie zur Cookie-Verwaltung
import requests
import time
class IUAMSessionManager:
"""Manage cf_clearance cookies for IUAM-protected sites."""
def __init__(self, api_key, target_url, user_agent=None):
self.api_key = api_key
self.target_url = target_url
self.user_agent = user_agent or (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/120.0.0.0"
)
self.session = requests.Session()
self.session.headers["User-Agent"] = self.user_agent
self.clearance_time = 0
self.clearance_lifetime = 1800 # 30 minutes default
def needs_refresh(self):
"""Check if clearance cookie needs refreshing."""
return time.time() - self.clearance_time > self.clearance_lifetime - 60
def solve_challenge(self):
"""Solve IUAM challenge and update session cookies."""
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": self.api_key,
"method": "cloudflare_challenge",
"sitekey": "managed",
"pageurl": self.target_url,
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": self.api_key,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
# Apply clearance to session
self.clearance_time = time.time()
return result["request"]
raise TimeoutError("IUAM solve timed out")
def get(self, url, **kwargs):
"""Make a GET request, solving IUAM if needed."""
if self.needs_refresh():
self.solve_challenge()
return self.session.get(url, **kwargs)
Fehlerbehebung
| Symptom | Ursache | Beheben |
|---|---|---|
| Herausforderungsschleifen endlos | IP wurde nach Erhalt der Freigabe geändert | Verwenden Sie eine konsistente IP für Lösung und Zugriff |
| cf_clearance abgelehnt | Nichtübereinstimmung zwischen Benutzer und Agent | Verwenden Sie denselben Benutzeragenten für Lösungen und Anfragen |
| 503 bleibt nach der Lösung bestehen | Cookie abgelaufen (>30 Min.) | Aktualisieren Sie die Freigabe vor Ablauf |
| Challenge-Seite anders als erwartet | Die Site verwendet Managed Challenge, nicht IUAM | Wechseln Sie zur Turnstile-Solver-Methode |
| Mehrere Herausforderungsseiten | Die erste Herausforderung ist IUAM, die zweite das Drehkreuz | Lösen Sie beides nacheinander |
Häufig gestellte Fragen
Wie lange dauert cf_clearance?
Der Standardwert beträgt 30 Minuten, Websitebetreiber können jedoch einen Wert zwischen 15 Minuten und 24 Stunden konfigurieren. Die meisten Websites verwenden die 30-Minuten-Standardeinstellung. Planen Sie eine Aktualisierung vor Ablauf ein.
Kann ich cf_clearance zwischen Anfragen teilen?
Ja, aber nur von derselben IP-Adresse und mit derselben User-Agent-Zeichenfolge. Wenn Sie eines davon ändern, wird das Cookie ungültig.
Ist der „Unter Angriff“-Modus immer aktiviert?
Nein. Seitenbetreiber schalten es bei Angriffen manuell um. Einige Websites lassen es als zusätzliche Sicherheitsebene dauerhaft aktiviert. Es gibt keine Möglichkeit vorherzusagen, ob auf einer Website IUAM aktiv sein wird.
Was ist der Unterschied zwischen IUAM und einer Managed Challenge?
IUAM fordert jeden Besucher bedingungslos heraus. Managed Challenges nutzen die Bot-Bewertung von Cloudflare, um verdächtigen Datenverkehr selektiv herauszufordern. IUAM gibt bei einer JS-Challenge immer 503 zurück. Verwaltete Herausforderungen können stattdessen 503 mit einem Drehkreuz-Widget zurückgeben.
Beeinflusst IUAM API-Endpunkte?
Ja. IUAM gilt für jede Anfrage in der Domäne, einschließlich API-Endpunkten. Aus diesem Grund schlagen API-Anfragen von Nicht-Browser-Clients fehl – sie können die JavaScript-Herausforderung nicht ausführen.
Zusammenfassung
Der Under Attack-Modus von Cloudflare erstellt eine obligatorische JavaScript-Herausforderung für alle Besucher und gibt HTTP 503 mit einer Rechenanforderung von 5 Sekunden zurück. Lösen Sie IUAM-Herausforderungen mit dem Cloudflare Challenge-Solver von CaptchaAI, und verwenden Sie dann das Cookie cf_clearance für nachfolgende Anfragen innerhalb des 30-Minuten-Fensters. Passen Sie immer die IP-Adresse und den User-Agent zwischen Lösung und Nutzung an.
Verwandte Artikel
- Cloudflare Challenge: Wie es funktioniert
- Cloudflare Challenge cf_clearance Cookie-Leitfaden
- Cloudflare Managed vs. Interactive Challenge