drission 0.6.6

用 Rust 通过 CDP 控制本机 Chrome,对自有网站做打开、填写、点击和结果核对。同仓库提供命令行 drs。
Documentation
//! 通用吐环境 —— **Camoufox 后端胶水**。后端无关的全部逻辑(探针/env.js/导出工程/同构双跑验证 +
//! canvas/webgl/audio/字体/像素/WebRTC/plugins 指纹回放 + 反 hook + 签名 sink 定位)见 [`crate::envkit`]。
//!
//! 这里只把 Camoufox `Tab` 接到 [`EnvBackend`](crate::envkit::EnvBackend)(导航前 `add_init_script` +
//! `run_js`),并把泛型类型在 `Tab` 上特化为 `EnvDumper`/`EnvProbe`。`tab.dump_env()` 见 `super::tab::Tab`。
//!
//! ```ignore
//! let mut probe = tab.dump_env()
//!     .target_query("sid").match_url("/api/item")
//!     .start().await?;
//! tab.get(url).await?;
//! let dump = probe.collect().await?;
//! dump.write_to("./dump-env")?;
//! ```

use std::future::Future;

use serde_json::Value;

use super::tab::Tab;
use crate::Result;
use crate::envkit::EnvBackend;

pub use crate::envkit::{EnvDump, EnvScope, EnvTarget};

/// Camoufox 后端的吐环境构建器(泛型核心在 `Tab` 上的特化)。
pub type EnvDumper = crate::envkit::EnvDumper<Tab>;
/// Camoufox 后端的吐环境会话句柄。
pub type EnvProbe = crate::envkit::EnvProbe<Tab>;

impl EnvBackend for Tab {
    fn add_init_script(&self, script: &str) -> impl Future<Output = Result<()>> {
        Tab::add_init_script(self, script)
    }
    fn run_js(&self, expr: &str) -> impl Future<Output = Result<Value>> {
        Tab::run_js(self, expr)
    }
}