pounce/DATA_INDEPENDENCE_REPORT.md
Yves Gugger 5e0d4c6590 fix(scraping): real auctions only + cleanup
- Remove seed/demo auction endpoint + scripts (no mock data)
- Rebuild AuctionScraper: strict validation (no -- bids, requires end_time)
- Add robust sources:
  - ExpiredDomains provider auction pages (GoDaddy/Namecheap/Sedo)
  - Park.io auctions table
  - Sav load_domains_ajax table
- Simplify hidden API scrapers to Dynadot only
- Add unique index on (platform, domain) + safe upsert
- Update deployment/docs to reflect real scraping
2025-12-11 21:50:33 +01:00

7.2 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

  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.


GELÖST: Keine Sample-/Fake-Daten im Auction Feed

Neuer Zustand der Auktions-Daten (Stand: 2025-12)

Das Scraping liefert jetzt ausschließlich echte Auktionsdaten (keine Schätzpreise, kein Random-Fallback, kein Seed/Demo):

  1. GoDaddy / Namecheap / Sedo (robust, ohne Cloudflare-Probleme):

    • Ingestion über die ExpiredDomains-Provider-Seiten mit Price / Bids / Endtime
    • Vorteil: Wir müssen die Cloudflare-geschützten Provider nicht direkt scrapen, bekommen aber echte Live-Daten.
  2. Park.io

    • Scraping der öffentlichen Auktionstabelle (inkl. Price / Bids / Close Date)
  3. Sav

    • Scraping des Tabellen-Endpoints load_domains_ajax/* (inkl. Price / Bids / Time left → deterministische end_time Ableitung)
  4. Dynadot

    • Hidden JSON API (Frontend-API) mit echten Preis- und Endzeit-Feldern

Datenqualitäts-Regeln

  • current_bid > 0 und end_time müssen vorhanden sein, sonst wird der Datensatz verworfen.
  • Es gibt keinen /api/v1/auctions/seed Endpunkt mehr und keine Seed-/Demo-Skripte.

Generiert am: 2024-12-10 Für: pounce.ch