use chromiumoxide::browser::{Browser, BrowserConfig}; use chromiumoxide::page::Page; use futures_util::StreamExt; pub async fn init_browser() -> (Browser, Page) { let (browser, mut handler) = Browser::launch( BrowserConfig::builder() .arg("--no-sandbox") .arg("--disable-setuid-sandbox") .arg("--headless") .build() .unwrap(), ) .await .unwrap(); // Critical: Keep the browser handler running in the background tokio::spawn(async move { while let Some(h) = handler.next().await { if let Err(e) = h { eprintln!("Browser handler error: {}", e); } } }); let page = browser.new_page("about:blank").await.unwrap(); (browser, page) }