Versicherungsvergleichsplattformen und Anbieter-Angebotsseiten schützen ihre Tarif-Engines mit CAPTCHAs, um eine automatisierte Angebotserfassung zu verhindern. CaptchaAI bewältigt diese Herausforderungen für QA-Teams, die Versicherungs-Workflows und Vergleichsaggregatoren testen.
CAPTCHA auf Versicherungsseiten
| Trägertyp | CAPTCHA | Triggerpunkt | Zitatkomplexität |
|---|---|---|---|
| Autoversicherung | reCAPTCHA v2 | Einreichung des Angebotsformulars | Mehrstufig (Fahrzeug + Fahrer) |
| Krankenversicherung | reCAPTCHA v2 | Planvergleich | Mehrstufig (Demografie) |
| Hausratversicherung | Bild-CAPTCHA | Adresssuche | Mäßig |
| Lebensversicherung | reCAPTCHA v2 | Tarifrechner | Einfache Form |
| Reiseversicherung | reCAPTCHA v2 Unsichtbar | Angebotsanfrage | Einfache Form |
| Unternehmensversicherung | reCAPTCHA v3 | Kontaktieren Sie das Formular /quote | Lange Form |
Multi-Carrier-Angebotssammler
import requests
import time
import re
import base64
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
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("Timeout")
def solve_image_captcha(image_bytes):
img_b64 = base64.b64encode(image_bytes).decode()
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY, "method": "base64",
"body": img_b64, "json": 1,
})
task_id = resp.json()["request"]
for _ in range(20):
time.sleep(3)
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("Timeout")
class InsuranceQuoteCollector:
def __init__(self, proxy=None):
self.session = requests.Session()
if proxy:
self.session.proxies = {"http": proxy, "https": proxy}
self.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 get_auto_quote(self, carrier_url, vehicle_data, driver_data, sitekey):
"""Get auto insurance quote from a single carrier."""
# Step 1: Load quote page
self.session.get(carrier_url)
# Step 2: Submit vehicle info
resp = self.session.post(f"{carrier_url}/vehicle", data=vehicle_data)
# Step 3: Submit driver info
resp = self.session.post(f"{carrier_url}/driver", data=driver_data)
# Step 4: Solve CAPTCHA on quote page
token = solve_recaptcha(sitekey, f"{carrier_url}/quote")
# Step 5: Get quote
resp = self.session.post(f"{carrier_url}/quote", data={
"g-recaptcha-response": token,
})
if resp.status_code == 200:
return self._parse_quote(resp.text)
return None
def compare_carriers(self, carriers, vehicle_data, driver_data):
"""Compare quotes across multiple carriers."""
quotes = []
for carrier in carriers:
try:
quote = self.get_auto_quote(
carrier_url=carrier["url"],
vehicle_data=vehicle_data,
driver_data=driver_data,
sitekey=carrier["sitekey"],
)
quotes.append({
"carrier": carrier["name"],
"status": "success",
"quote": quote,
})
except Exception as e:
quotes.append({
"carrier": carrier["name"],
"status": "failed",
"error": str(e),
})
time.sleep(5) # Delay between carriers
# Sort by price
successful = [q for q in quotes if q["status"] == "success" and q["quote"]]
successful.sort(key=lambda x: x["quote"].get("monthly_premium", float("inf")))
return {
"quotes": quotes,
"best_rate": successful[0] if successful else None,
"total_compared": len(carriers),
"successful": len(successful),
}
def _parse_quote(self, html):
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
premium_el = soup.select_one(".premium, .monthly-rate, .quote-amount")
coverage_el = soup.select_one(".coverage-summary, .plan-details")
return {
"monthly_premium": premium_el.get_text(strip=True) if premium_el else "",
"coverage": coverage_el.get_text(strip=True) if coverage_el else "",
}
# Usage
collector = InsuranceQuoteCollector(
proxy="http://user-session-abc:pass@residential.proxy.com:5000"
)
vehicle = {
"year": "2022",
"make": "Toyota",
"model": "Camry",
"vin": "",
"mileage": "15000",
}
driver = {
"age": "35",
"gender": "M",
"zip": "90210",
"driving_record": "clean",
}
carriers = [
{"name": "Carrier A", "url": "https://carrier-a.example.com/auto", "sitekey": "6Lc_xxx1"},
{"name": "Carrier B", "url": "https://carrier-b.example.com/auto", "sitekey": "6Lc_xxx2"},
{"name": "Carrier C", "url": "https://carrier-c.example.com/auto", "sitekey": "6Lc_xxx3"},
]
comparison = collector.compare_carriers(carriers, vehicle, driver)
print(f"Best rate: {comparison['best_rate']}")
Vergleich der Krankenversicherungen
def compare_health_plans(marketplace_url, demographics, sitekey):
"""Compare health insurance plans on marketplace sites."""
collector = InsuranceQuoteCollector(
proxy="http://user-session-xyz:pass@residential.proxy.com:5000"
)
# Load marketplace
collector.session.get(marketplace_url)
# Submit demographics
collector.session.post(f"{marketplace_url}/demographics", data=demographics)
# Solve CAPTCHA for plan results
token = solve_recaptcha(sitekey, f"{marketplace_url}/plans")
resp = collector.session.post(f"{marketplace_url}/plans", data={
"g-recaptcha-response": token,
})
if resp.status_code == 200:
from bs4 import BeautifulSoup
soup = BeautifulSoup(resp.text, "html.parser")
plans = []
for card in soup.select(".plan-card, .insurance-plan"):
plans.append({
"name": card.select_one(".plan-name").get_text(strip=True) if card.select_one(".plan-name") else "",
"premium": card.select_one(".premium").get_text(strip=True) if card.select_one(".premium") else "",
"deductible": card.select_one(".deductible").get_text(strip=True) if card.select_one(".deductible") else "",
})
return plans
return []
Sitzungsanforderungen
Die Erstellung von Versicherungsangeboten erfolgt immer in mehreren Schritten – Sticky Sessions sind obligatorisch:
| Schritt | Daten übermittelt | IP-Anforderung |
|---|---|---|
| 1. Persönliche Daten | Name, Geburtsdatum, Postleitzahl | Gleiche IP |
| 2. Fahrzeug/property | Jahr, Marke, Modell | Gleiche IP |
| 3. Auswahl des Versicherungsschutzes | Grenzen, Selbstbehalt | Gleiche IP |
| 4. CAPTCHA lösen | Token | Gleiche IP |
| 5. Angebotsanzeige | N/A | Gleiche IP |
Verwenden Sie Sitzungsproxy-Sitzungen mit einer TTL von 10–15 Minuten für Versicherungsflüsse.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| Das Angebotsformular wird mitten im Fluss zurückgesetzt | IP hat sich zwischen den Schritten geändert | Verwenden Sie eine Sitzungsproxy-Sitzung |
| „Angebot kann nicht abgegeben werden“ | Die Datenvalidierung ist fehlgeschlagen | Überprüfen Sie die erforderlichen Felder |
| CAPTCHA erscheint zweimal | Das erste Token ist abgelaufen | Sofort noch einmal lösen |
| Andere Tarife als manuell | Cookie/session Unterschiede | Starten Sie eine saubere Sitzung |
| Der Ratenbegrenzer blockiert Anfragen | Zu viele Zitate von IP | Machen Sie es langsamer und rotieren Sie die IP zwischen den Anbietern |
FAQ
Wie viele Angebote kann ich pro Tag einholen?
Normalerweise 20–50 pro Spediteur und Tag mit entsprechenden Verzögerungen. Bei Überschreitung werden Ratenbegrenzer und CAPTCHAs aggressiver ausgelöst.
Warum brauche ich Sticky Sessions für die Versicherung?
Arbeitsabläufe für Versicherungsangebote bestehen aus mehreren Schritten. Der Server verknüpft jeden Schritt mit Ihrer Sitzung und IP. Durch eine Änderung der IP-Adresse während des Datenflusses wird die Sitzung ungültig.
Kann ich über mehrere Versicherungsvertikale hinweg automatisieren?
Ja. Der gleiche CAPTCHA-Verarbeitungsansatz funktioniert für Auto-, Kranken-, Hausrat- und Lebensversicherungen – nur die Formularfelder unterscheiden sich.
Verwandte Leitfäden
- Sticky vs. rotierende Sitzungen
- Caching für Browser-Sitzungen in CAPTCHA-Workflows
- Proxy-Authentifizierungsmethoden
Vergleichen Sie Versicherungsangebote in großem Maßstab –Holen Sie sich Ihren CaptchaAI-Schlüsselund automatisieren Sie den Angebotsprozess.