Skip to main content

Crate drission

Crate drission 

Source
Expand description

§drission

一个 Rust 编写的浏览器自动化库,提供与 DrissionPage 一致的简洁语法。双后端:

  • Chromium / CDP(默认,--features cdp):驱动或接管 Chrome / Edge / Brave / Electron 应用。
  • Camoufox / Firefox(Juggler)(--features camoufox):反检测浏览器,附带自动过盾 / 吐环境 / 滑块识别 / 高并发池 / Session(HTTP)双模等全部高层能力(Page/WebPage/SessionPage…)。

默认构建 = 纯 CDP(最精简,不含任何 Camoufox 代码);要用 Camoufox 及其高层能力,请显式开 --features camoufox。两后端可同时开(--features camoufox,cdp)。

§设计目标

  • 语法像 DP:tab.get(url)tab.ele("@id:kw")ele.input(..)ele.click()tab.listen 等。
  • 高性能 / 并发:基于 tokio 异步,多标签可并发操作。

§后端无关模块(始终编译)

  • codec:线格式编解码。protocol:连接 / 请求响应 / 事件。transport:管道 / WebSocket。
  • locator:DP 风格元素定位语法解析。keys:键名常量与按键序列。
  • net:网络监听 / 拦截共享数据类型。scrape:采集导出(CSV/JSON)。error:统一错误。

更新历史见 CHANGELOG.md; 设计与 API 映射文档见 docs/

Re-exports§

pub use error::Error;
pub use error::Result;

Modules§

a11y
无障碍快照(后端无关):AxNode/AxTree + DOM 快照脚本 + CDP 扁平树重建。 tab.ax_tree()(cdp 原生)/ tab.ax_snapshot()(两后端)各自提供。 无障碍快照(Accessibility snapshot)的后端无关核心。
browsercamoufox
Camoufox / Firefox(Juggler)后端 + 全部高层浏览器能力。仅 --features camoufox。 高层浏览器 API(DrissionPage 风格)。
cdpcdp
Chromium(Chrome/Edge/Brave/Electron)后端,经 CDP。默认开启(default = ["cdp"])。 Chromium 后端(Chrome / Edge / Brave / Electron 应用),经 CDP(Chrome DevTools Protocol)。
codec
Juggler 线格式编解码。
codegen
录制 → 生成代码(后端无关):RecordedAction/RecordedScript + 生成可运行 Rust / JSON。 录制采集见各后端(cdp:tab.recorder())。 录制 → 生成代码(Recorder / Codegen)的后端无关核心。
envkitcamoufox or cdp
通用吐环境(dump browser env)后端无关核心:探针/env.js/导出工程/同构双跑验证 + 指纹回放。 两后端经 EnvBackend 复用同一套逻辑;tab.dump_env() 各自提供。 通用吐环境(dump browser env)后端无关核心
error
统一错误类型。
fingerprint
读取浏览器实时指纹快照(后端无关):tab.fingerprint_snapshot() 一次性 dump UA/平台/语言/ 时区/屏幕/硬件/WebGL renderer/canvas 哈希。区别于 cdp::fingerprint/pool::fingerprint(设定指纹)。 读取浏览器实时指纹快照(后端无关):一次性 dump 当前页面暴露给 JS 的核心指纹信号 —— UA / platform / 语言 / 时区 / 屏幕 / devicePixelRatio / 硬件并发 / 设备内存 / WebGL UNMASKED_RENDERER / canvas 像素哈希。
human
拟人指针 + 图像视图(后端无关,点选/拖拽通用,不针对任何厂商)。
keys
键名常量 Keys 与按键序列输入 KeyInput(对标 DrissionPage 的 Keysele.input 序列)。
launchercamoufox
Camoufox 启动选项 / 指纹配置 / 自动下载分发。仅 --features camoufox。 浏览器启动器:选项配置 + Camoufox 自动下载分发 + 进程启动(进程启动见后续 process)。
locator
DrissionPage 风格的元素定位语法解析。
net
后端无关的网络数据类型(监听 / 拦截共享)。
ocrocr
验证码 OCR(字符型验证码识别)。feature = "ocr"
pagecamoufox
大道至简 Page 一行起步门面(Camoufox 后端)。仅 --features camoufox。 一行起步的浏览器页面门面 [Page] —— 对标 DrissionPage 的 ChromiumPage,大道至简
poolcamoufox or cdp
高并发浏览器池 / 代理池 / 指纹池 / 断点续抓。 后端无关核心(RetryPolicy/RotateStrategy/Checkpoint)对 camoufox / cdp 均编译; BrowserPool(camoufox)与 ChromiumPool(cdp,见 cdp::pool)各按后端提供。 高并发规模化采集:浏览器 worker 池 + 任务编排。
prelude
常用类型一站式导入。
protocol
Juggler 协议层。
scrape
采集导出助手:二维表 / 记录列表 → CSV / JSON。
sessioncamoufox
HTTP Session(不开浏览器)+ 与浏览器 cookie 互通(Camoufox 后端)。仅 --features camoufox。 Session(HTTP)模式:不开浏览器,直接用 HTTP 请求 + 离线解析抓取——对标 DrissionPage 的 会话(Session)模式(SessionPage)。配合浏览器(Driver)模式即“Drission“双模: 用浏览器过盾/登录,把 cookie 灌给 Session,之后列表/翻页/详情全走 HTTP——省内存、省 CPU, 旧电脑也能高并发跑。
static_element
静态(离线)元素解析(后端无关,基于 scraper):StaticElements_ele/s_eles/table。 静态元素 [StaticElement]:对应 DrissionPage 的“静态元素“(s_ele/s_eles)。
transport
传输层:启动 Camoufox 子进程,并建立 Juggler 的 fd3/fd4 异步管道。
web_pagecamoufox
WebPage 双模门面(Driver/Session,Camoufox 后端)。仅 --features camoufox。 双模页面 [WebPage]:对标 DrissionPage 的 WebPage —— 在 Driver(浏览器)Session(HTTP) 两种模式间切换,共享 cookie