【无标题】

如何在 Patchright 自动化中接入 CAPTCHA Solver

Patchright 能控制 Chromium 页面,但浏览器自动化本身不会生成 CAPTCHA 响应。本教程最关键的问题不是"如何重复提交",而是先确认 SDK 是否能读取验证码组件所在的 JavaScript 环境。

在实测的 Patchright 1.64.1 环境中,默认 isolated_context=True 的求值无法读取 window.___grecaptcha_cfg;切换到页面主环境后可以读取。通过一个小型适配器,仅把 CapSolver Core SDK 的 evaluate 调用转发到主环境,官方 SDK 成功检测到本地 Google 测试组件,并返回 reCaptchaV2、测试页面 URL 和公开 site key。

环境安装

bash 复制代码
python3 -m venv .venv
source .venv/bin/activate
python -m pip install "patchright==1.64.1" "capsolver-core==0.1.1"
python -m patchright install chromium

检测阶段不需要 CapSolver API key。真正解题需要有效凭据和账户资源,密钥应从应用的安全配置读取,不能写进代码仓库。

主环境适配器

python 复制代码
class MainWorldPage:
    def __init__(self, page):
        self._page = page

    @property
    def url(self):
        return self._page.url

    async def evaluate(self, expression, arg=None):
        return await self._page.evaluate(expression, arg, isolated_context=False)

    async def wait_for_selector(self, selector, **kwargs):
        return await self._page.wait_for_selector(selector, **kwargs)

导航、定位器和页面生命周期仍由原始 raw_page 管理;只有传给 SDK 的对象使用适配器。这样不会修改 Patchright 安装文件,也不会把所有浏览器操作改到主环境。

解题调用与验证边界

配置 API key 后,官方浏览器模式调用为:

python 复制代码
results = await cap.solve_on_page(page)

这行代码在原文中保持官方形式,但本次没有 API key,因此没有实测付费解题、token 回填或目标应用验收。实际接入时要逐项检查 error、solution 和 filled,随后执行应用原本需要的表单操作,并等待由你自己的系统定义的成功信号。

filled=True 只说明完成回填,不代表表单已提交,也不代表后端接受了验证码。检测、解题、回填和应用成功必须分别记录。

常见问题

  • 组件可见但检测为空:确认 SDK 收到的是 MainWorldPage,并检查组件是否已初始化。
  • 测试组件超时:检查 Chromium 是否能加载 Google 脚本。
  • SDK 返回错误:核对凭据、挑战类型和当前页面参数,避免无条件重试。
  • 回填后流程不继续:检查表单动作、回调和应用自己的成功或拒绝状态。

只在自有或明确授权的页面使用此方案,不把它用于指纹规避或访问第三方受限系统。官网原文与 canonical:待官网发布后补入。

相关推荐
Dmz丶10 小时前
前端转 AI 100 天 Day 44:前端集成实战——用 React 给 Agent 做个正式界面
python
jay神10 小时前
基于 YOLOv8 的手势识别系统(Web 版)
前端·人工智能·python·深度学习·yolo·计算机视觉·计算机毕业设计
DeepVisionary10 小时前
阿里云上线旗舰多模态新模型,不公布跑分且限时14天退役
python·自动化
东莞市云毅网络有限公司10 小时前
FAQ 覆盖度打分:TF-IDF 与向量嵌入双路召回的 Python 实现
python·数据清洗·rag·企业知识库·文档解析
爱笑的k1111 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
用户83562907805111 小时前
使用 Python 控制 Excel 工作表的分页位置
后端·python
用户83562907805112 小时前
Python 如何在 Word 中添加和管理文档变量
后端·python
X1A0RAN12 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
熊猫钓鱼>_>13 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮13 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop