Dieser Commit ist enthalten in:
Claude Project Manager
2025-08-01 23:50:28 +02:00
Commit 04585e95b6
290 geänderte Dateien mit 64086 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -0,0 +1,152 @@
"""
Fingerprint Service Interface - Domain Service für Browser Fingerprinting
"""
from abc import ABC, abstractmethod
from typing import List, Optional, Dict, Any
from datetime import datetime
from domain.entities.browser_fingerprint import BrowserFingerprint
class IFingerprintService(ABC):
"""
Interface für Fingerprint Service.
Definiert die Geschäftslogik für Browser Fingerprint Management.
"""
@abstractmethod
def generate_fingerprint(self,
profile_type: Optional[str] = None,
platform: Optional[str] = None) -> BrowserFingerprint:
"""
Generiert einen neuen, realistischen Browser-Fingerprint.
Args:
profile_type: Optional - Typ des Profils (z.B. "mobile", "desktop")
platform: Optional - Zielplattform (z.B. "instagram", "tiktok")
Returns:
Neuer Browser-Fingerprint
"""
pass
@abstractmethod
def rotate_fingerprint(self,
current: BrowserFingerprint,
rotation_strategy: str = "gradual") -> BrowserFingerprint:
"""
Rotiert einen bestehenden Fingerprint für mehr Anonymität.
Args:
current: Aktueller Fingerprint
rotation_strategy: Strategie für Rotation ("gradual", "complete", "minimal")
Returns:
Neuer rotierter Fingerprint
"""
pass
@abstractmethod
def validate_fingerprint(self, fingerprint: BrowserFingerprint) -> tuple[bool, List[str]]:
"""
Validiert einen Fingerprint auf Konsistenz und Realismus.
Args:
fingerprint: Zu validierender Fingerprint
Returns:
Tuple aus (ist_valide, liste_von_problemen)
"""
pass
@abstractmethod
def save_fingerprint(self, fingerprint: BrowserFingerprint) -> None:
"""
Speichert einen Fingerprint für spätere Verwendung.
Args:
fingerprint: Zu speichernder Fingerprint
"""
pass
@abstractmethod
def load_fingerprint(self, fingerprint_id: str) -> Optional[BrowserFingerprint]:
"""
Lädt einen gespeicherten Fingerprint.
Args:
fingerprint_id: ID des Fingerprints
Returns:
Fingerprint oder None wenn nicht gefunden
"""
pass
@abstractmethod
def get_fingerprint_pool(self,
count: int = 10,
platform: Optional[str] = None) -> List[BrowserFingerprint]:
"""
Holt einen Pool von Fingerprints für Rotation.
Args:
count: Anzahl der gewünschten Fingerprints
platform: Optional - Filter für spezifische Plattform
Returns:
Liste von Fingerprints
"""
pass
@abstractmethod
def apply_fingerprint(self,
browser_context: Any,
fingerprint: BrowserFingerprint) -> None:
"""
Wendet einen Fingerprint auf einen Browser-Kontext an.
Args:
browser_context: Playwright Browser Context
fingerprint: Anzuwendender Fingerprint
"""
pass
@abstractmethod
def detect_fingerprinting(self, page_content: str) -> Dict[str, Any]:
"""
Erkennt Fingerprinting-Versuche auf einer Webseite.
Args:
page_content: HTML oder JavaScript Content der Seite
Returns:
Dictionary mit erkannten Fingerprinting-Techniken
"""
pass
@abstractmethod
def get_fingerprint_score(self, fingerprint: BrowserFingerprint) -> float:
"""
Bewertet die Qualität/Einzigartigkeit eines Fingerprints.
Args:
fingerprint: Zu bewertender Fingerprint
Returns:
Score zwischen 0.0 (schlecht) und 1.0 (gut)
"""
pass
@abstractmethod
def cleanup_old_fingerprints(self, older_than: datetime) -> int:
"""
Bereinigt alte, nicht mehr verwendete Fingerprints.
Args:
older_than: Lösche Fingerprints älter als dieses Datum
Returns:
Anzahl gelöschter Fingerprints
"""
pass