1. Python/Playwright
открывает Camoufox браузер (похоже внутри некого сервера) на определённом порту — ✅
for i, (port, path, name) in enumerate(zip(config["ports"], config["paths"], config["names"])):
# Create server thread
server_thread = threading.Thread(target=run_server, args=(port, path))
servers.append(server_thread)
# Create browser automation thread
browser_url = f"ws://localhost:{port}/{path}"
browser_thread = threading.Thread(
target=automate_browser,
args=(browser_url, name)
)
browser_automations.append(browser_thread)
# Start all servers with delays
print(f"Starting {len(servers)} servers...")
for i, server in enumerate(servers):
print(f"Starting server {i+1} on port {config['ports'][i]}...")
server.start()
time.sleep(config["server_settings"]["start_delay"])
print("All servers started. Starting browser automation...")
# Start all browser automations with delays
for i, browser_automation in enumerate(browser_automations):
browser_automation.start()
if i < len(browser_automations) - 1: # Don't sleep after the last one
time.sleep(config["server_settings"]["browser_delay"])
Выходит что `browser_url` будет такой: `
ws://localhost:2525/browser2525`, где `2525` - некий порт для последующего подключения (для примера).
2.
Вручную логинюсь в google и Midjourney (на основе google логина) — ✅
Этот Camoufox браузер должен оставаться работающим долгое время чтобы другие скрипты могли к нему подключаться и работать с ним.
3. Другим скриптом
пытаюсь подключиться к открытому браузеру — ❌
async def connect_to_session(self, port):
if not await self.check_camoufox_availability(port):
raise Exception(f"Camoufox WebSocket port {port} not accessible")
ws_url = f"ws://localhost:{port}/browser{port}"
browser = await self.playwright.firefox.connect(ws_url)
ws_url (Web Socket URL) идентична browser_url в коде пункта 1
Но при выполнении кода Playwright не подключается к существующему открытому браузеру а запускает новый, соответственно БЕЗ контекта, пустой...
Camoufox is a stealthy, customized Firefox browser designed specifically for web scraping and bot detection evasion.