【无标题】

如何在 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:待官网发布后补入。

相关推荐
CodeGL1 小时前
10、Python基础之进程和线程
开发语言·python
TechWayfarer2 小时前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
2601_967980113 小时前
Python列表操作方法详解
python·数据类型·修改·列表操作·功能汇总
卡卡~~4 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法
Patrick在香港4 小时前
台风在变少,来香港的没有
python·数据分析·香港·开放数据·热带气旋
qq_406981034 小时前
大白话rust系列09 函数调用两次有什么错?
开发语言·python·rust
学逆向的4 小时前
C 多文件开发
c语言·开发语言·网络安全
布吉岛的石头4 小时前
Java 程序员第 50 阶段3:数据工程:预训练语料清洗与去重
java·开发语言·人工智能·深度学习·transformer
benchmark_cc4 小时前
QuantDash 安装成功后,如何验证 Python 环境可以正常导入 SDK?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash