- Comprehensive analysis of all data sources - Identified: TLD prices depend on Porkbun API (fragile) - Identified: Auction data uses sample fallbacks (not premium) - Identified: Domain checker is 100% independent (RDAP/WHOIS/DNS) - Identified: Valuation is 100% internal (no Estibot) - Recommendations for Zone File integration - Roadmap for true data independence
7.6 KiB
🔒 Pounce Data Independence Report
Executive Summary
Status: 🟡 PARTIALLY INDEPENDENT
Pounce hat eine solide Basis für Unabhängigkeit, aber es gibt kritische Bereiche, die verbessert werden müssen, um als "Premium-Dienstleister" aufzutreten.
📊 Aktuelle Datenquellen-Analyse
1. TLD-Preise (TLD Intel)
| Aspekt | Status | Details |
|---|---|---|
| Quelle | Porkbun Public API | ✅ Keine API-Keys erforderlich |
| Zuverlässigkeit | 🟡 Mittel | API kann jederzeit geändert werden |
| Abdeckung | 896+ TLDs | ✅ Excellent |
| Genauigkeit | 100% | ✅ Offizielle Preise |
| Unabhängigkeit | ⚠️ Fragil | Abhängig von einem Registrar |
Risiko: Wenn Porkbun seine API ändert oder blockt, fallen alle TLD-Preise weg.
Empfehlung: Mehrere Registrare hinzufügen (Namecheap, Cloudflare, Google Domains Public Pricing).
2. Domain-Auktionen (Acquire)
| Aspekt | Status | Details |
|---|---|---|
| Quelle | Web Scraping | 5 Plattformen |
| Plattformen | GoDaddy, Sedo, NameJet, DropCatch, ExpiredDomains | ✅ Diverse |
| Zuverlässigkeit | 🔴 Niedrig | Websites können Layouts jederzeit ändern |
| Genauigkeit | ⚠️ Variabel | Abhängig von Scraping-Qualität |
| Rate Limiting | ✅ Implementiert | 5-10 req/min pro Plattform |
Risiko:
- Web-Scraping ist fragil - Layout-Änderungen brechen Scraper
- Plattformen können Scraping blocken (Captcha, IP-Bans)
- Keine rechtliche Grundlage für Daten-Nutzung
Aktueller Code-Zustand:
# backend/app/services/auction_scraper.py
# Zeilen 1-19 zeigen, dass ALLE Daten gescrapt werden
# Kein API-Zugriff, nur Web-Parsing
3. Domain-Verfügbarkeit (Track/Watchlist)
| Aspekt | Status | Details |
|---|---|---|
| Methode 1 | RDAP (Modern) | ✅ Beste Methode |
| Methode 2 | Custom RDAP (.ch, .li) | ✅ Speziell implementiert |
| Methode 3 | WHOIS (Fallback) | ✅ Universal-Fallback |
| Methode 4 | DNS Check | ✅ Schnellste Methode |
| Unabhängigkeit | ✅ 100% | Direkte Protokolle, keine APIs |
Dies ist der STÄRKSTE Teil der Architektur!
4. Domain-Valuation (Pounce Score)
| Aspekt | Status | Details |
|---|---|---|
| Quelle | Intern | ✅ Keine externen APIs |
| Algorithmus | Eigene Logik | TLD-Wert + Länge + Keywords |
| Transparenz | ✅ Vollständig | Code zeigt alle Faktoren |
| Estibot/GoDaddy | ❌ Nicht integriert | ✅ GUT - Unabhängig |
Aktueller Score-Algorithmus:
# backend/app/services/valuation.py
TLD_VALUES = {
"com": 1.0, # Baseline
"ai": 1.20, # Premium (AI-Boom)
"io": 0.75, # Startup-Favorit
"net": 0.65, # Klassiker
...
}
🚀 Empfehlungen für 100% Premium-Unabhängigkeit
Priorität 1: Zone File Integration (KRITISCH)
Die analysis_2.md beschreibt es perfekt: Zone Files sind der Rohstoff.
Was sind Zone Files?
- Tägliche Listen ALLER registrierten Domains einer TLD
- Bereitgestellt von Registries (Verisign, SWITCH, etc.)
- Durch Vergleich von "gestern vs heute" = gelöschte/neue Domains
Umsetzung:
# Neuer Service: backend/app/services/zone_file_processor.py
class ZoneFileProcessor:
async def download_zone_file(self, tld: str) -> str:
"""Download Zone File von CZDS oder Registry"""
pass
async def compute_diff(self, yesterday: str, today: str) -> dict:
"""Finde: added_domains, deleted_domains"""
pass
async def filter_premium(self, domains: list) -> list:
"""Wende Pounce-Filter an"""
# Keine Zahlen, max 12 Zeichen, Wörterbuch-Match
pass
Zugang:
- .com/.net: ICANN CZDS (Centralized Zone Data Service) - Kostenlos beantragen
- .ch/.li: SWITCH (nic.ch) - Open Data verfügbar
- .de: DENIC - Zone File Zugang beantragbar
Priorität 2: Multi-Registrar TLD-Preise
Statt nur Porkbun, sollten wir Preise von mehreren Quellen sammeln:
# backend/app/services/tld_scraper/aggregator.py
self.scrapers = [
PorkbunScraper(), # ✅ Bereits implementiert
NamecheapScraper(), # 📌 TODO: Public Pricing Page
CloudflareScraper(), # 📌 TODO: Public Pricing API
GandiScraper(), # 📌 TODO: Pricing Page
]
Vorteil: Preis-Vergleich über Registrare = echte "Intel"
Priorität 3: Auction-Daten Härtung
Option A: Offizieller API-Zugang
- GoDaddy Affiliate-Programm für Auktions-API
- Sedo Partner-Programm
- → Kosten, aber zuverlässig
Option B: Robusteres Scraping
- Playwright statt httpx (JavaScript-Rendering)
- Proxy-Rotation für IP-Diversität
- ML-basiertes HTML-Parsing (weniger Layout-abhängig)
Option C: User-Generated Data (Hybrid)
- User können Auktionen melden
- Community-validiert
- Reduziert Scraping-Last
📋 Implementierungs-Roadmap
Phase 1: Stabilisierung (Sofort)
- Eigene Domain-Valuation (Pounce Score)
- Multi-Methoden Domain-Check (RDAP/WHOIS/DNS)
- Zweiten TLD-Preis-Scraper hinzufügen (Namecheap)
Phase 2: Zone Files (2-4 Wochen)
- CZDS-Zugang beantragen (.com, .net)
- SWITCH Open Data integrieren (.ch, .li)
- Zone File Diff-Processor bauen
- "Daily Drop Gems" Feature launchen
Phase 3: Premium-Ausbau (1-2 Monate)
- GoDaddy Affiliate-API für Auktionen
- DNS-Change-Monitoring (Pre-Drop-Signale)
- HTTP-Health-Check für Watchlist-Domains
✅ Was bereits EXZELLENT ist
- Domain-Checker: RDAP → WHOIS → DNS Fallback-Kette
- Valuation: 100% intern, keine Estibot-Abhängigkeit
- Vanity Filter: Eigener Spam-Erkennungs-Algorithmus
- TLD-Typisierung: Automatische Klassifizierung
🎯 Fazit
Pounce hat die richtige Architektur für Unabhängigkeit. Die kritischsten Schritte sind:
- Zone Files = Unabhängige Datenquelle für "Drops"
- Multi-Registrar Preise = Robustheit gegen API-Ausfälle
- Offizieller Auktions-Zugang = Rechtlich sauber & zuverlässig
Mit diesen Verbesserungen wird Pounce ein echtes Premium-Tool, das keine externen APIs braucht - sondern eigene, proprietäre Daten hat.
⚠️ KRITISCHES PROBLEM: Sample-Daten vs. Echte Daten
Aktueller Zustand der Auktions-Daten:
Das Scraping ist implementiert ABER:
-
ExpiredDomains.net: Funktioniert, aber:
- Preise sind geschätzt (nicht echt):
estimated_price = base_prices.get(tld, 15) - Dies sind Registrierungspreise, KEINE Auktionspreise
- Preise sind geschätzt (nicht echt):
-
GoDaddy/Sedo/NameJet/DropCatch: Scraping existiert, aber:
- Websites haben Anti-Bot-Maßnahmen
- Layouts ändern sich regelmäßig
- Aktuell werden oft Sample-Daten als Fallback verwendet
-
In der Praxis zeigt die Seite oft:
# backend/app/services/auction_scraper.py:689-780 async def seed_sample_auctions(self, db: AsyncSession): # DIESE DATEN SIND FAKE (Demo-Daten)! sample_auctions = [ {"domain": "techflow.io", "platform": "GoDaddy", "current_bid": 250, ...}, ... ]
🚨 Für Premium-Qualität erforderlich:
- Keine geschätzten Preise - Nur echte Auktionspreise anzeigen
- Klare Kennzeichnung - Wenn Daten unsicher sind, transparent kommunizieren
- Fallback-Strategie - Wenn Scraping fehlschlägt, keine Fake-Daten zeigen
Empfohlene Änderungen:
# Statt geschätzter Preise:
"current_bid": float(estimated_price), # ❌ FALSCH
# Besser:
"current_bid": None, # Kein Preis = keine falsche Info
"price_type": "registration_estimate", # Kennzeichnung
Generiert am: 2024-12-10 Für: pounce.ch