Prosopo Procaptcha
与 CapMonster Cloud

验证码解决方案,网站安装与测试。

Prosopo Procaptcha解决方案的定价

验证码
价格 (USD)
$ 1.30
1000 代币
接手一个已经部署 captcha 或其他防护的站点,却无法访问源代码?此时最关心的是使用了哪种方案、配置是否正确以及如何测试。

在本文中,我们尽量回答了所有关键问题。要开始解决问题,第一步是确定当前使用的是哪种防护系统。为此,您可以查看常见验证码与反机器人防护系统列表,其中提供了可视化示例和关键特征,帮助您快速判断自己正在使用哪一种方案。

如果您发现自己的网站使用的是 Prosopo Procaptcha,下一步就是更深入地了解它的特性和具体工作方式。在本文中,您还可以查看 Prosopo Procaptcha 的接入说明,以便彻底弄清它在您的网站上是如何运行的。这样一来,您不仅能更好地理解当前的防护机制,还可以更合理地规划后续的维护和支持。

什么是 Procaptcha
什么是 Procaptcha
Procaptcha 是由 Prosopo 公司开发的保护系统,旨在防止垃圾信息和可能对网站造成损害的自动操作。它有助于区分真实用户和机器人,确保网站安全和稳定运行。如果系统怀疑访问者的真实性,它会提供一个验证任务(例如选择特定图片);真实用户仍然可以顺利使用网站。
Background
Prosopo Procaptcha 示例
Frictionless CAPTCHA
Frictionless CAPTCHA
隐形验证码。自动判断访问者是人类还是机器人。如果用户行为自然(正常浏览器,无自动化操作),验证码将悄无声息地解决。如果检测到机器人迹象,用户将显示额外的 图片任务。
Proof of Work (PoW) CAPTCHA
Proof of Work (PoW) CAPTCHA
基于计算任务的验证码,即让你的设备在后台执行一个小计算任务。主要目的是阻止大量机器人和垃圾信息,因为自动化系统需要耗费时间和资源来完成任务。对人类来说,这几乎不可察觉。
Image CAPTCHA
Image CAPTCHA
经典视觉验证码。显示图片并要求选择符合条件的图片(例如:“选择所有马”)。

如何通过 CapMonster Cloud 解决 Procaptcha

测试包含 Prosopo Procaptcha 的表单时,常常需要确认 captcha 是否集成正确并工作正常。

你可以手动验证站点上的 captcha。

  • 打开表单页面,确认 captcha 能够显示。
  • 尝试在不解题的情况下提交——服务器应返回错误。
  • 解题成功后,表单应顺利提交。

若想自动解题,可以使用 CapMonster Cloud 等服务,它会接收验证码参数、在服务器中解析并返回可直接使用的 token。把 token 注入表单即可无需人工操作通过验证。

通过 CapMonster Cloud API 工作的一般流程:

创建任务创建任务
arrow
发送 API 请求发送 API 请求
arrow
获取结果获取结果
arrow
将 token 应用到页面将 token 应用到页面
arrow
使用现成库识别 Procaptcha
CapMonster Cloud 提供现成库,方便在 PythonJavaScript(Node.js)和 C# 中使用。
Python
JavaScript
C#
解决验证码、插入令牌并提交表单
Node.js 示例展示在您的网页上完整的验证码识别流程。可行方法:使用 HTTP 请求获取 HTML 和验证码参数,提交答案并处理结果;或使用自动化工具(如 Playwright)——打开页面,等待验证码,提交参数(测试时可提交正确或错误数据),通过 CapMonster Cloud 客户端获取结果,将令牌插入表单并查看结果。

async function sendTokenToSite(token) {
    // 表单 URL 或 endpoint,用于提交令牌
    const formURL = "https://example..com/en/your-form-endpoint";

    // 表单数据示例
    const formData = {
        email: "example@example.com",
        password: "yourpassword",
        "procaptcha-response": token // 来自 Procaptcha 的令牌
    };

    try {
        const response = await fetch(formURL, {
            method: "POST",
            headers: {
                "Content-Type": "application/json", // или 'application/x-www-form-urlencoded' 视网站而定
            },
            body: JSON.stringify(formData),
        });

        const result = await response.text(); // 或 response.json() 如果服务器返回 JSON
        console.log("Server response:", result);
    } catch (err) {
        console.error("Error sending token:", err);
    }
}

// 主函数
async function solveAndSend() {
    const client = CapMonsterCloudClientFactory.Create(
        new ClientOptions({ clientKey: API_KEY })
    );

    const prosopoRequest = new ProsopoRequest({
        websiteURL: "https://example.com/en/",
        websiteKey: "5EZU3LG31uzq1Mwi8inwqxmfvFDpj7VzwDnZwj4Q3syyxBwV"
    });

    const balance = await client.getBalance();
    console.log("Balance:", balance);

    const result = await client.Solve(prosopoRequest);
    console.log("Captcha solution:", result);

    // 提交令牌到网站
    await sendTokenToSite(result.solution); // result.solution 包含 Procaptcha 令牌
}

solveAndSend().catch(console.error);

如何将 Procaptcha 连接到您的网站
要了解网站上验证码的工作方式、验证逻辑、重新连接或重新配置,建议参考本节。本节描述了集成保护流程,帮助快速掌握细节。

1. 获取密钥(sitekey 和 secret key)

  • 1) 访问 Prosopo Portal
  • 2) 进入 Site Management
  • 3) 点击 Reveal — 显示两个密钥:
    • sitekey — 公共密钥,用于客户端。
    • secret key — 私密密钥,仅用于服务器。
注意: 每个小部件都有自己的密钥组合。不可用于其他项目。

2. 添加您的域名

  • 1) 进入 Account → Domains
  • 2) 确认域名已列出。
  • 3) 如果本地测试 — 添加 localhost
  • 4) 发布到生产前 — 删除 localhost

3. 连接 Procaptcha 脚本

将标签放置在 <head>

<script type="module" src="https://js.prosopo.io/js/procaptcha.bundle.js" async defer></script>>

4. 方案 1: 隐式渲染(自动) — 简单

添加容器,使验证码自动显示:

<div class="procaptcha" data-sitekey="your_site_key"></div>

通常放在表单内部。

完整表单示例完整表单示例
arrow

验证成功后,将添加隐藏参数:

5. 方案 2: 显式渲染(手动) — 控制更多

HTML 示例HTML 示例
arrow
JavaScript 示例JavaScript 示例
arrow

6. 配置验证码类型(可选)

可以明确选择:

  • frictionless (默认)
  • pow
  • image

例如:


<div class="procaptcha"
     data-sitekey="your_site_key"
     data-captcha-type="pow">
</div>

7. 必需步骤:服务器验证令牌

渲染验证码后,服务器 必须 验证响应。通过 API 进行验证:

POST
https://api.prosopo.io/siteverify

请求内容:

{
    "secret": "your_secret_key",
    "token": "PROCAPTCHA-RESPONSE"
}

8. PHP 服务器验证

代码示例:代码示例:
arrow

什么算验证成功?

如果 Procaptcha 服务器返回:

{
    "verified": true
}

验证码通过,可以执行受保护操作(例如注册用户)。

Background
可能的错误与调试
Bug Icon
Site Key 无效
使用了错误或无效的 site key。解决方案:确保使用正确的 key,可在 Procaptcha 账户中找到。
Bug Icon
未经授权的来源 URL
安装小部件的域与绑定 site key 的域不一致。解决方案:检查并更新 Procaptcha Portal 设置中的域名列表。
Bug Icon
未找到会话
会话不存在或已过期。解决方案:等待小部件重新加载 (~3 秒) 或刷新页面。如果错误重复出现,请清除浏览器缓存和 Cookie 或联系支持。
Bug Icon
响应 success=false
令牌已过期、重复使用或未通过验证。要进行诊断,请启用请求日志并检查 Procaptcha 响应中的 error 字段。
验证防护的可靠性
集成完成后,务必确认系统确实能够抵御自动化行为。
安全与优化建议
仅在服务器上保存 <span class="font-bold">Secret Key</span>。绝不传递给客户端。
记录错误代码 <span class="font-bold">(error-codes)</span>,以便了解特定验证失败的原因。
在表单底部添加指向 <span class="font-bold">隐私政策</span> 和 <span class="font-bold">Procaptcha 使用条款</span> 的链接,如果您的实现要求这样做。
结论

如果你接手了一个已经集成了验证码或其他防护系统的网站,但又无法访问其代码,也不用担心!要判断实际使用了哪种技术其实并不难。为了核实其是否正常工作,你可以在隔离的测试环境中使用CapMonster Cloud识别服务,确保令牌处理机制和校验逻辑都运行正常。

对于Prosopo Procaptcha,只需识别出所用的系统,观察其行为,并确认防护是否正常工作即可。本文演示了如何识别 Prosopo Procaptcha,以及到哪里查找其接入或重新配置的说明文档,从而帮助你自信地维护防护方案并掌控其运行情况。

Conclusion
实用链接
DocIconProcaptcha 文档DocIconProsopo PortalDocIconCapMonster Cloud 文档(使用 Procaptcha)

关于 Prosopo Procaptcha 的常见问题

Procaptcha 使用三种验证类型,并根据访客会话的风险级别选择最合适的一种:

  • Frictionless CAPTCHA:在后台运行,如果浏览器信号和行为看起来像真人,则隐形验证访客。可疑会话可能会升级为可见挑战。
  • Proof of Work (PoW) CAPTCHA:给访客设备分配小型计算任务,使大规模自动化请求成本更高,而对真实用户几乎无感。
  • Image CAPTCHA:显示视觉挑战,例如选择与「选择所有马」等提示匹配的所有图片。

您可以使用 widget div 上的 data-captcha-type 属性指定验证模式。设置为 frictionless 进行隐形后台检查,pow 用于 Proof of Work 谜题,或 image 用于经典图片选择挑战。

例如:

<div class="procaptcha"
     data-sitekey="your_site_key"
     data-captcha-type="pow">
</div>

客户端 data-captcha-type 的值必须与 Prosopo Portal 账户设置中配置的 CAPTCHA 类型严格一致。

可以,您可以使用通用 HTTP 请求将解决方案集成到任何 Python 脚本中。

请求任务 ID:向 createTask 端点发送 POST 请求,包含您的 API 密钥、websiteURL 和 websiteKey。

{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "ProsopoTask",
    "websiteURL": "https://example.com",
    "websiteKey": "SITE_KEY"
  }
}

轮询结果:将收到的 taskId 发送到 getTaskResult 端点,直到状态为 ready。

{
  "clientKey": "YOUR_API_KEY",
  "taskId": 123456789
}

使用 token:从 solution 对象中提取字符串,在 HTTP 负载中作为 procaptcha-response 值传递(requests、aiohttp),或注入 DOM(Playwright、Puppeteer、Selenium)。

Procaptcha 支持 widget div 上的 data-callback 属性用于隐式渲染,或配置对象中的 callback 属性用于显式渲染。

您指定的函数在 captcha 解决后自动调用,接收 token 字符串作为第一个参数——此时您可以启用提交按钮、触发 AJAX 请求或将 token 存储在组件状态中。

使用 callback 通常比轮询 procaptcha-response 字段更清晰,因为它消除了 widget 解析与表单提交时机之间的竞态条件。

Playwright、Puppeteer 或 Selenium 是自动化注入已解决 Procaptcha token 的兼容方案。一般流程相同:

  1. 导航到目标页面
  2. 等待 Procaptcha widget 加载
  3. 通过 API(或客户端 SDK)向 CapMonster Cloud 请求 token
  4. 在触发表单提交之前,使用框架的原生 DOM 操作方法将返回的 token 注入页面。