#[tokio::main]
#[allow(clippy::result_large_err)]
async fn main() -> zendriver::Result<()> {
tracing_subscriber::fmt::init();
let proxy_server = std::env::var("ZD_PROXY").unwrap_or_else(|_| "http://127.0.0.1:3128".into());
let proxy_user = std::env::var("ZD_PROXY_USER").unwrap_or_else(|_| "user".into());
let proxy_pass = std::env::var("ZD_PROXY_PASS").unwrap_or_else(|_| "pass".into());
let browser = zendriver::Browser::builder()
.headless(true)
.arg(format!("--proxy-server={proxy_server}"))
.proxy_auth(proxy_user, proxy_pass)
.launch()
.await?;
let tab = browser.main_tab();
tab.goto("https://www.myexternalip.com/raw").await?;
tab.wait_for_load().await?;
let ip: String = tab.evaluate("document.body.textContent.trim()").await?;
println!("external IP via proxy: {ip}");
browser.close().await?;
Ok(())
}