import uuid from dataclasses import dataclass, field @dataclass class BrowserSession: engine: str = "camoufox" # camoufox | nodriver | drissionpage profile_name: str = "desktop" # desktop | mobile_ios | mobile_android human_behavior: bool = True delay_factor: float = 1.0 # multiplier on all delays (>1 = slower, <1 = faster) scroll_speed: str = "normal" # slow | normal | fast proxy: dict | None = None # Playwright proxy dict — pinned for the session lifetime session_id: str = field(default_factory=lambda: str(uuid.uuid4())[:8]) _store: dict[str, BrowserSession] = {} def create_session( engine: str = "camoufox", profile_name: str = "desktop", human_behavior: bool = True, delay_factor: float = 1.0, scroll_speed: str = "normal", proxy: dict | None = None, ) -> BrowserSession: s = BrowserSession( engine=engine, profile_name=profile_name, human_behavior=human_behavior, delay_factor=delay_factor, scroll_speed=scroll_speed, proxy=proxy, ) _store[s.session_id] = s return s def get_session(session_id: str) -> BrowserSession | None: return _store.get(session_id) def update_session(session_id: str, **kwargs: object) -> BrowserSession | None: s = _store.get(session_id) if s: for k, v in kwargs.items(): if hasattr(s, k): setattr(s, k, v) return s def delete_session(session_id: str) -> bool: return _store.pop(session_id, None) is not None