rotate_test/
rotate_test.rs1use clawser_browser::Browser;
6
7#[tokio::main]
8async fn main() {
9 println!("=== Profile Rotation Test (async) ===\n");
10
11 for i in 0..3 {
12 println!("--- Browser {} (random profile) ---", i + 1);
13
14 let browser = Browser::builder().headful().random().build().await
15 .expect("failed to create browser");
16
17 let page = browser.navigate("about:blank").await.expect("navigate failed");
18
19 let cores = page.js("navigator.hardwareConcurrency.toString()").await.unwrap_or_default();
20 let screen = page.js("screen.width+'x'+screen.height").await.unwrap_or_default();
21 let tz = page.js("Intl.DateTimeFormat().resolvedOptions().timeZone").await.unwrap_or_default();
22 let langs = page.js("JSON.stringify(navigator.languages)").await.unwrap_or_default();
23 let gl = page.js(
24 "(function(){var c=document.createElement('canvas');var g=c.getContext('webgl');if(!g)return'no';var d=g.getExtension('WEBGL_debug_renderer_info');return d?g.getParameter(d.UNMASKED_RENDERER_WEBGL):'no'})()"
25 ).await.unwrap_or_default();
26
27 println!(" Cores: {} Screen: {}", cores, screen);
28 println!(" GPU: {}", gl);
29 println!(" TZ: {} Langs: {}", tz, langs);
30
31 browser.shutdown().await.expect("shutdown failed");
32 println!();
33 }
34
35 println!("=== DONE ===");
36}