Sticky-Sitzungen behalten für eine festgelegte Dauer dieselbe IP. Rotierende Sitzungen weisen pro Anfrage eine neue IP zu. Die Wahl der falschen Option erhöht die CAPTCHA-Raten und verschwendet API-Credits.
Wie jeder Modus funktioniert
STICKY SESSION:
Request 1 ──▶ IP: 192.168.1.50 ──▶ site.com/login
Request 2 ──▶ IP: 192.168.1.50 ──▶ site.com/dashboard
Request 3 ──▶ IP: 192.168.1.50 ──▶ site.com/account
(Same IP for all requests in the session window)
ROTATING SESSION:
Request 1 ──▶ IP: 192.168.1.50 ──▶ site.com/page1
Request 2 ──▶ IP: 10.0.0.77 ──▶ site.com/page2
Request 3 ──▶ IP: 172.16.5.22 ──▶ site.com/page3
(Different IP per request)
Direkter Vergleich
| Faktor | Klebrig | Rotierend |
|---|---|---|
| IP pro Anfrage | Dasselbe gilt für 1–30 Minuten | Jede Anfrage neu |
| Sitzungskonsistenz | Hoch | Keine |
| CAPTCHA-Rate (mehrstufige Abläufe) | Niedrig (5–10 %) | Hoch (30–50 %) |
| CAPTCHA-Rate (Einzelseiten) | Mittel (10–20 %) | Niedrig (5–10 %) |
| Token-Gültigkeit | Höher – gleiche IP | Risiko einer Nichtübereinstimmung |
| Geschwindigkeit | Schnell (verwendet die Verbindung wieder) | Langsamer (neue Verbindung) |
| Verbotsrisiko | Höher, wenn markiert | Niedrig – jedes Mal neue IP |
| Kosten | Gleich oder etwas mehr | Das Gleiche |
| Am besten für | Anmelden, Bezahlen, Authentifizieren | Massen-Scraping, Suche |
Wenn Sticky Sessions gewinnen
Mehrstufige Arbeitsabläufe
CAPTCHAs validieren Token anhand der anfragenden IP. Wenn sich Ihre IP zwischen Lösung und Übermittlung ändert, kann das Token abgelehnt werden.
import requests
import time
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
# Sticky session: same IP for the entire login flow
STICKY_PROXY = {
"http": "http://user-session-abc123:pass@proxy.example.com:5000",
"https": "http://user-session-abc123:pass@proxy.example.com:5000",
}
session = requests.Session()
session.proxies = STICKY_PROXY
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36",
})
def login_with_captcha(url, sitekey, username, password):
"""Full login flow — MUST use same IP throughout."""
# Step 1: Load login page (IP: 192.168.1.50)
session.get(url)
# Step 2: Solve CAPTCHA (solved against IP: 192.168.1.50)
token = solve_recaptcha(sitekey, url)
# Step 3: Submit login (MUST be IP: 192.168.1.50)
resp = session.post(url, data={
"username": username,
"password": password,
"g-recaptcha-response": token,
})
return resp.status_code == 200
def solve_recaptcha(sitekey, pageurl):
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1,
})
task_id = resp.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = result.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("CAPTCHA solve timeout")
Warum IP-Konsistenz wichtig ist
Sticky session:
1. Browser loads page → IP: 5.5.5.5
2. CAPTCHA solved → Token bound to session
3. Form submitted → IP: 5.5.5.5 ✅ Token accepted
Rotating session:
1. Browser loads page → IP: 5.5.5.5
2. CAPTCHA solved → Token bound to session
3. Form submitted → IP: 9.9.9.9 ❌ Token may be rejected
Wenn rotierende Sitzungen gewinnen
Bulk Page Scraping
Jede Seite ist unabhängig. Rotierende IPs verteilen Anfragen auf einen größeren Pool und reduzieren so die Erkennung pro IP.
import concurrent.futures
ROTATING_PROXY = {
"http": "http://user:pass@rotating.proxy.example.com:5000",
"https": "http://user:pass@rotating.proxy.example.com:5000",
}
def scrape_page(url):
"""Each request gets a fresh IP automatically."""
resp = requests.get(
url,
proxies=ROTATING_PROXY,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"},
timeout=30,
)
if resp.status_code == 200:
return url, resp.text
return url, None
urls = [f"https://example.com/products?page={i}" for i in range(1, 501)]
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as pool:
results = list(pool.map(scrape_page, urls))
success = sum(1 for _, html in results if html)
print(f"Scraped: {success}/{len(urls)}")
Suchmaschinen-Scraping
Suchmaschinen verfolgen das Anfragevolumen pro IP. Rotieren vermeidet Ratenbegrenzungen:
def scrape_search(query, pages=10):
results = []
for page in range(pages):
# Each request → new IP
resp = requests.get(
"https://search-engine.example.com/search",
params={"q": query, "start": page * 10},
proxies=ROTATING_PROXY,
timeout=20,
)
results.append(resp.text)
time.sleep(2)
return results
Hybride Strategie
Verwenden Sie beide Modi in derselben Pipeline:
class HybridProxyManager:
"""Sticky for multi-step flows, rotating for single requests."""
def __init__(self, provider_host, username, password, port=5000):
self.host = provider_host
self.username = username
self.password = password
self.port = port
def get_rotating_proxy(self):
return {
"http": f"http://{self.username}:{self.password}@{self.host}:{self.port}",
"https": f"http://{self.username}:{self.password}@{self.host}:{self.port}",
}
def get_sticky_proxy(self, session_id, duration_min=10):
sticky_user = f"{self.username}-session-{session_id}-ttl-{duration_min}"
return {
"http": f"http://{sticky_user}:{self.password}@{self.host}:{self.port}",
"https": f"http://{sticky_user}:{self.password}@{self.host}:{self.port}",
}
proxy_mgr = HybridProxyManager("proxy.example.com", "user", "pass")
def scrape_with_auto_strategy(url, needs_login=False):
if needs_login:
# Multi-step → sticky
import uuid
session_id = uuid.uuid4().hex[:8]
proxy = proxy_mgr.get_sticky_proxy(session_id)
else:
# Single page → rotating
proxy = proxy_mgr.get_rotating_proxy()
return requests.get(url, proxies=proxy, timeout=30)
Node.js-Implementierung
const axios = require("axios");
const CAPTCHAAI_KEY = "YOUR_API_KEY";
const PROXY_HOST = "proxy.example.com";
const PROXY_PORT = 5000;
function getProxy(mode, sessionId = null) {
const user =
mode === "sticky" ? `user-session-${sessionId}` : "user";
return {
proxy: {
host: PROXY_HOST,
port: PROXY_PORT,
auth: { username: user, password: "pass" },
},
};
}
// Rotating: bulk scrape
async function scrapePages(urls) {
const results = [];
for (const url of urls) {
const config = getProxy("rotating");
const resp = await axios.get(url, { ...config, timeout: 30000 });
results.push({ url, data: resp.data });
}
return results;
}
// Sticky: login flow
async function loginFlow(loginUrl, sitekey, credentials) {
const sessionId = Date.now().toString(36);
const config = getProxy("sticky", sessionId);
// Step 1: Load page
await axios.get(loginUrl, config);
// Step 2: Solve CAPTCHA
const submitResp = await axios.post(
"https://ocr.captchaai.com/in.php",
null,
{
params: {
key: CAPTCHAAI_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: loginUrl,
json: 1,
},
}
);
const taskId = submitResp.data.request;
let token;
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: CAPTCHAAI_KEY, action: "get", id: taskId, json: 1 },
});
if (res.data.request !== "CAPCHA_NOT_READY") {
token = res.data.request;
break;
}
}
// Step 3: Submit with same IP
return axios.post(
loginUrl,
{
...credentials,
"g-recaptcha-response": token,
},
config
);
}
Entscheidungsmatrix
| Arbeitsablauf | Empfohlen | Warum |
|---|---|---|
| Anmelden/Registrieren | Klebrig | Token an IP gebunden |
| Kasse/Zahlung | Klebrig | Sitzungscookies benötigen dieselbe IP |
| Massenseiten-Scraping | Rotierend | Verteilt die Last |
| Suchmaschinen-Scraping | Rotierend | Vermeidet Ratenbegrenzungen pro IP |
| API-Abfrage (gleicher Endpunkt) | Rotierend | Reduziert den Browser-Signalprofil pro IP |
| Mehrseitige Navigation | Klebrig | Per IP verfolgte Cookies |
| Preisüberwachung | Rotierend | Viele unabhängige Anfragen |
| Kontoverwaltung | Klebrig | Sitzungsintegrität |
| Formularübermittlung mit CAPTCHA | Klebrig | Token-IP-Bindung |
| Anzeigenüberprüfung | Rotierend | Simulieren Sie verschiedene Benutzer |
Sticky-Sitzungsdauer
| Dauer | Am besten für | Risiko |
|---|---|---|
| 1 Minute | Schnelles Absenden des Formulars | Kann mitten im Fluss ablaufen |
| 5 Min | Standardanmeldung + Aktionen | Gute Balance |
| 10 Min | Komplexe mehrseitige Abläufe | Moderates Verbotsrisiko |
| 30 Min | Erweiterte Browsersitzungen | Höheres Verbotsrisiko |
| 60 Min | Lange Kontovorgänge | Hohes Verbotsrisiko |
Faustregel: Stellen Sie die Klebedauer auf das Doppelte Ihrer erwarteten Fließzeit ein.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| CAPTCHA-Token wurde nach der Lösung abgelehnt | IP hat sich zwischen Lösen und Senden geändert | Wechseln Sie zur Sticky-Sitzung |
| Hohe CAPTCHA-Rate auf einzelnen Seiten | Dieselbe Sticky-IP trifft auf zu viele Seiten | Auf Rotieren umstellen |
| Sitzungscookies verloren | Sticky-Sitzung ist abgelaufen | Erhöhen Sie die TTL-Dauer |
| Langsam rotierende Leistung | Verbindungsaufwand pro neuer IP | Verwenden Sie Verbindungspooling |
| Gesperrte IP in Sticky Session | Alle Anfragen teilen sich die gekennzeichnete IP | Reduzieren Sie die Sitzungs-TTL oder fügen Sie Verzögerungen hinzu |
FAQ
Kann ich „Sticky“ und „Rotating“ in einem Projekt kombinieren?
Ja. Verwenden Sie den Hybridansatz – Sticky für Authentifizierungsabläufe, rotierend für die Datenerfassung. Die meisten Proxy-Anbieter unterstützen beide Modi im selben Plan.
Garantiert eine Sticky Session die gleiche IP?
Die meisten Anbieter garantieren dies innerhalb des TTL-Fensters. Wenn die IP nicht mehr verfügbar ist (Neuzuweisung des Netzbetreibers, Poolrotation), wird eine neue IP zugewiesen.
Welcher Modus ist günstiger?
Gleicher Preis – Sie zahlen pro GB oder pro Anfrage, unabhängig vom Modus. Der Kostenunterschied ergibt sich aus den CAPTCHA-Raten: falscher Modus → mehr CAPTCHAs → höhere CaptchaAI Ausgaben.
Wie richte ich Sticky Sessions bei meinem Proxy-Anbieter ein?
Die meisten verwenden eine Sitzungs-ID im Benutzernamen: user-session-abc123. Das genaue Format finden Sie in den Dokumenten Ihres Anbieters. Wir decken abHelle Daten,Smartproxy, UndOxylabsin speziellen Leitfäden.
Verwandte Leitfäden
- Rotierende Wohn-Proxies
- Die Proxy-Qualität beeinflusst die Lösungsrate
- Persistenz der Browsersitzung
Passen Sie Ihre Proxy-Strategie an Ihren Workflow an – Holen Sie sich Ihren CaptchaAI-Schlüsselum CAPTCHAs in jedem Sitzungsmodus zu verarbeiten.