diff --git a/cli/src/native/actions.rs b/cli/src/native/actions.rs index cfa3f8e..355d623 100644 --- a/cli/src/native/actions.rs +++ b/cli/src/native/actions.rs @@ -23,6 +23,7 @@ use super::cdp::types::{ use super::cookies; use super::diff; use super::element::RefMap; +use super::humanize; use super::inspect_server::InspectServer; use super::interaction; use super::network::{self, DomainFilter, EventTracker}; @@ -2512,7 +2513,49 @@ async fn handle_navigate(cmd: &Value, state: &mut DaemonState) -> Result { try { + const cookies = document.cookie.split(';').map(c => c.trim().split('=')[0]).filter(Boolean); + const scripts = Array.from(document.scripts, s => s.src || '').filter(Boolean); + const re = /_px|bmak|_abck|datadome|reese84|kpsdk|incap_ses|visid_incap|akam/i; + const globals = Object.getOwnPropertyNames(window).filter(k => re.test(k)); + return { cookies, scripts, globals }; + } catch (e) { return {}; } })()"#; + let Ok(val) = mgr.evaluate(js, None).await else { + return; + }; + let to_strings = |v: Option<&Value>| -> Vec { + v.and_then(|v| v.as_array()) + .map(|a| { + a.iter() + .filter_map(|x| x.as_str().map(String::from)) + .collect() + }) + .unwrap_or_default() + }; + let signals = humanize::DetectSignals { + cookie_names: to_strings(val.get("cookies")), + script_urls: to_strings(val.get("scripts")), + window_globals: to_strings(val.get("globals")), + }; + let level = humanize::detect_level(&signals, humanize::HumanizeLevel::Off); + humanize::set_detected_level(level); } async fn handle_url(state: &DaemonState) -> Result {