# 🔒 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:** ```python # 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:** ```python # 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:** ```python # 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: ```python # 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) - [x] Eigene Domain-Valuation (Pounce Score) - [x] 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 1. **Domain-Checker**: RDAP → WHOIS → DNS Fallback-Kette 2. **Valuation**: 100% intern, keine Estibot-Abhängigkeit 3. **Vanity Filter**: Eigener Spam-Erkennungs-Algorithmus 4. **TLD-Typisierung**: Automatische Klassifizierung --- ## 🎯 Fazit Pounce hat die richtige Architektur für Unabhängigkeit. Die kritischsten Schritte sind: 1. **Zone Files** = Unabhängige Datenquelle für "Drops" 2. **Multi-Registrar Preise** = Robustheit gegen API-Ausfälle 3. **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:** 1. **ExpiredDomains.net**: Funktioniert, aber: - Preise sind **geschätzt** (nicht echt): `estimated_price = base_prices.get(tld, 15)` - Dies sind Registrierungspreise, KEINE Auktionspreise 2. **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** 3. **In der Praxis zeigt die Seite oft:** ```python # 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: 1. **Keine geschätzten Preise** - Nur echte Auktionspreise anzeigen 2. **Klare Kennzeichnung** - Wenn Daten unsicher sind, transparent kommunizieren 3. **Fallback-Strategie** - Wenn Scraping fehlschlägt, keine Fake-Daten zeigen ### Empfohlene Änderungen: ```python # 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*