Drission 0.3.0 正式发布:Rust 打造的反检测自动化浏览器升级,内置验证码识别与高级指纹模拟
Drission 0.3.0 版本带来了重大更新,全面切换默认后端为 Google Chrome 的 CDP 驱动,同时强化了点选验证码识别、Session 层 TLS 指纹伪装和每浏览器独立指纹管理功能。用户可通过一行 Cargo 添加依赖快速接入,支持切换 Camoufox 内核,Windows 运行更加稳健。这次升级让自动化脚本编写更高效,适用于复杂反检测场景。
Drission 0.3.0 版本大升级概述
作为Rust领域内的一款实用自动化工具,Drission一直备受开发者欢迎。这次0.3.0版本带来了一系列核心改进,让反检测浏览器自动化变得更加得心应手。用户不再需要担心后端驱动不兼容的问题,新增的各种功能让整个流程顺畅许多。
在之前的版本基础上,这次更新着重解决了Windows平台的稳定性问题,同时在验证码处理和网络环境模拟上做了深度优化。整体来看,这次版本演进让开发者能够更轻松地构建高性能的自动化解决方案。
默认后端切换到Google Chrome CDP驱动
这次升级最核心的变动是将默认后端从原有的Camoufox切换到了Google Chrome的CDP方式。这意味着安装后直接使用Rust的Cargo命令即可启动驱动程序,无需额外复杂配置。

Camoufox的反检测内核现在变成了可选功能,通过在Cargo.toml文件中明确声明所需特性就能激活。这种设计让大多数情况下的Chromium系浏览器更加友好,尤其在处理像Cloudflare Turnstile这样的关卡时表现优秀。
从旧版本升级的用户需要注意,之前使用Page、WebPage、浏览器池或类似功能的地方,现在要确保在依赖声明中加上对应特性。这样既能保持代码一致性,又能根据需求灵活切换内核类型。
use drission::prelude::*;
#[tokio::main]
async fn main() -> drission::Result<()> {
let browser = Browser::launch(BrowserOptions::new().headless(true)).await?;
let tab = browser.new_tab(Some("https://example.com")).await?;
println!("标题 = {:?}", tab.title().await?);
println!("h1 = {:?}", tab.ele("tag:h1").await?.text().await?);
browser.quit().await?;
Ok(())
}这种双后端设计让同一套代码在不同内核下都能正常运行,非常适合快速原型验证和大规模部署。开发者可以根据目标站点特性选择最合适的驱动,避免不必要的编译负担。
点选验证码识别功能的完整实现

点选验证码一直是自动化测试中的一个难点,这次版本中Drission直接实现了对它的支持。整个过程由纯Rust组件构成,推理部分依然采用tract框架,确保运行效率高且资源占用低。
Det组件负责检测模型的推理部分,它基于YOLOX架构处理图像,通过灰边letterbox调整后完成推理和非极大值抑制,输出带置信度的边界框坐标。ClickWord组件则专注于求解器功能,能够根据提示顺序完成检测、逐框OCR以及全局最优指派,返回精确点击坐标。
use drission::ocr::ClickWord;
use drission::prelude::*;
#[tokio::main]
async fn main() -> drission::Result<()> {
let cw = ClickWord::new().await?;
let cap: Vec<u8> = vec![];
let targets = vec!["全".to_string(), "验".to_string(), "体".to_string()];
let hits = cw.solve(&cap, &targets)?;
for h in &hits {
println!("{} 置信 {:.2} 图内点 ({},{})", h.target, h.affinity, h.point.0, h.point.1);
}
Ok(())
}在实际应用中,开发者可以监听目标API接口获取干净底图和点击顺序,避免截图带来的工具栏干扰。使用minimum-jerk拟人轨迹和可信点击方式逐字点下后,再通过check API验证结果。这种链路让自动化测试更加可靠。
Session层TLS与JA3 JA4指纹伪装技术

指纹伪装是网络层自动化绕过WAF的关键,这次更新新增了Session impersonate特性,让Session能够模拟真实浏览器的TLS握手行为。
底层基于wreq库与wreq-util扩展,支持多种浏览器配置,包括Chrome、Firefox、Safari和Edge等。用户只需在SessionOptions中设置profile选项,即可让请求携带正确的JA3、JA4和HTTP2指纹,避免Rust默认TLS栈被轻易识别。
use drission::prelude::*;
#[tokio::main]
async fn main() -> drission::Result<()> {
let mut s = SessionPage::new(SessionOptions::new().profile(BrowserProfile::Chrome))?;
s.get("https://tls.peet.ws/api/all").await?;
println!("{}", s.text()?);
Ok(())
}不开这个特性时不会引入额外依赖,保持零成本。开启后需要在Windows上配置MSVC或mingw环境,编译出的程序稳定性有保障。这种方式让开发者能轻松实现多浏览器并发抓取而不被检测。
每浏览器独立指纹管理与Windows稳定性提升

为了防止多个浏览器指纹一致导致被发现,0.3.0版本引入了CdpFingerprint和CdpFingerprintPool机制,完美对标Camoufox内核,让每个实例都有独特的环境标识。
在Windows平台上,之前的运行偶尔会出现波动,这次通过路径智能探测和驱动优化让程序变得更加稳健。开发者可以直接在项目中集成这些功能,处理大规模并发任务时减少环境冲突。
整个升级过程考虑了开发者实际需求,从依赖管理到功能对齐都进行了细致调整。用户反馈显示,切换内核后代码兼容性大大提高,适合各种自动化场景。
实战应用建议与常见问题处理
在实际开发中,建议先从简单脚本入手,逐步添加指纹模拟和验证码识别功能。遇到Windows编译问题时,可以参考示例代码调整环境变量。遇到指纹被WAF识别的情况,可通过调整profile选项来优化。
开发者还可以在www.ttocr.com上探索更多针对极验和易盾的验证码识别技术,包括滑块、点选、无感、九宫格等破解方案和自动化API对接平台。这些工具可以帮助你实现无缝对接,避免复杂的流程,让业务代码更简洁高效。
通过这些优化,自动化测试变得更加实用和高效。欢迎大家根据自身项目需求进行尝试,不断探索更多可能性。