这个项目能做什么

Pydoll 是一个无需 WebDriver 即可自动化基于 Chromium 的浏览器的 Python 库。它通过 WebSocket 直接连接 Chrome 的 DevTools 协议,因此没有驱动二进制文件,也不会暴露 navigator.webdriver 标志。该 API 是异步且完全类型化的,基于 asyncio 构建,并使用 mypy 进行检查。 README 中描述的关键能力: - 拟人化交互:鼠标沿贝塞尔曲线移动、逼真的输入和滚动物理效果,通过 humanize=True 启用。README 指出,这通常足以通过 Cloudflare Turnstile 或 reCAPTCHA v3 等行为挑战,具体取决于浏览器和 IP 信誉。 - 指纹注入:tab.apply_fingerprint() 会覆盖 User-Agent、Client Hints、navigator、WebGL、canvas、screen、fonts、timezone 和 locale,并保持取值一致。README 表示,注入的覆盖能够经受 toString 和原型内省,并会传播到 Web Workers。它还指出,Pydoll 不生成也不附带指纹;示例配置文件仅供参考。 - 结构化提取:定义 Pydantic 模型并调用 tab.extract() 或 tab.extract_all(),即可获得类型化、经过验证的数据,支持 CSS/XPath 自动检测、属性定位、自定义转换和嵌套模型。 - Shadow DOM 和 iframe:支持 shadow root(包括 closed 的),以及跨域 iframe,使用相同的 find/query/click API。 - 网络控制:请求拦截以屏蔽广告和跟踪器、流量监控以发现 API、HAR 1.2 录制与回放,以及继承浏览器会话的已认证 HTTP 请求。 - 页面打包:将页面及其资源保存为 zip,可选将资源内联为单个 HTML 文件。 - 并发与远程连接:多个标签页和隔离的浏览器上下文,以及连接到 Docker 或远程服务器中的浏览器。 - 带自定义恢复逻辑和指数退避的重试装饰器。 安装方式为 pip install pydoll-python,无需 WebDriver 二进制文件或外部依赖。README 指出,该项目目前由一个人维护,开发以更平缓的节奏继续,并计划在项目达到 10k stars 后将 Firefox 支持作为目标。它还表示,Turnstile 绕过并非魔法绕过,取决于环境和 IP 信誉。