Yidun (NECaptcha)
和 CapMonster Cloud

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

Yidun (NECaptcha)解决方案的定价

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

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

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

什么是 Yidun CAPTCHA
什么是 Yidun CAPTCHA
Yidun 是 NetEase 开发的现代反机器人系统。它基于用户行为分析,无需访客执行任务。系统会跟踪鼠标移动、手势、操作速度、网络上下文及其他“行为指标”,然后通过机器学习 (ML) 判断用户是人类还是机器人。
Background
Yidun (NECaptcha) 示例
Smart Captcha
Smart Captcha
智能反机器人系统,自动识别可信用户。
Slide Captcha
Slide Captcha
流行的视觉验证码,需要拖动滑块完成小拼图。
Icon Click Captcha
Icon Click Captcha
要求用户按特定顺序点击图标或图像元素。

通过 CapMonster Cloud 解决 Yidun

在测试带 Yidun 的表单时,通常需要验证验证码是否正常工作,并确保其正确集成。
您可以在网站上手动测试验证码:
  • 打开表单页面,确保验证码显示。
  • 尝试在未完成验证码的情况下提交表单 — 服务器应返回错误。
  • 验证码成功完成后 — 表单应无错误地提交。
要自动识别验证码,可以使用专业服务,例如 CapMonster Cloud — 该工具接收验证码参数,在其服务器上处理并返回有效 token。该 token 可用于表单中,以在无需用户参与的情况下通过验证。

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

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

// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
import { chromium } from "playwright";
import { CapMonsterCloudClientFactory, ClientOptions, YidunRequest } from "@zennolab_com/capmonstercloud-client";

(async () => {
  //  设置
  const TARGET_URL = "https://example.com/";
  const WEBSITE_KEY = "6cw0f0485d5d46auacf9b735d20218a5";   // 你的 Yidun siteKey
  const CMC_API_KEY = "YOUR_API_KEY"; // 你的 CapMonster Cloud API Key

  // 1) 启动浏览器
  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();
  await page.goto(TARGET_URL, { waitUntil: "domcontentloaded" });

  const cmc = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: CMC_API_KEY })
  );

  // 2) 发送解决 Yidun 验证码请求
  const solution = await cmc.Solve(
    new YidunRequest({
      websiteURL: TARGET_URL,
      websiteKey: WEBSITE_KEY,
      userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36"
    })
  );

  const token = solution.solution.token; // 获取 Yidun token
  console.log("Yidun token:", token);

  // 3) 将 token 插入隐藏字段并提交表单
  await page.evaluate((t) => {
    // 找到隐藏输入 token(替换为你的值)
    const input = document.querySelector('input[name="NECaptchaValidate"]');
    if (input) input.value = t;

    // 提交表单(如果页面上有)
    const form = document.querySelector("form");
    if (form) form.submit();
  }, token);

  console.log("Yidun 验证码已解决,token 已插入,表单已提交!");
})();

  
如何将 Yidun (NECaptcha) 接入你的网站
为了清楚了解验证码在网站的工作原理、验证逻辑或重新接入/配置,建议阅读本章节。它描述了保护接入的完整流程。

1. 前往 控制面板 并创建账户(手机号或邮箱)。

2. 在面板中选择:产品与服务 → 验证码服务 (Captcha Service)

3. 创建新项目 (应用)。

4. 结果你将获得:

  • captchaId
  • secretKey

5. Yidun 前端接入示例


<!-- 接入 YiDun 脚本 -->
<script src="https://cstaticdun.126.net/load.min.js"></script>

<!-- 验证码容器 -->
<div id="captcha"></div>

<script>
// 初始化验证码
initNECaptcha({
    captchaId: "YOUR_CAPTCHA_ID", // 你在 YiDun 面板的 captchaId
    element: "#captcha",          // 放置验证码控件的位置

    // 成功完成后调用
    onVerify: (err, data) => {
        if (!err) {
            // data.validate -- 验证码 token
            // 存入表单隐藏字段
            document.querySelector("#validate").value = data.validate;
        }
    }
});
</script>

<!-- 表单将 validate 提交到服务器 -->
<form method="POST" action="/verify">
    <!-- captcha 会在此记录 token -->
    <input type="hidden" id="validate" name="NECaptchaValidate">

    <button>Submit</button>
</form>


6. Yidun 服务器验证(PHP 示例)


<?php

// 来自 YiDun 面板的数据
$CAPTCHA_ID = "YOUR_CAPTCHA_ID";
$SECRET_ID  = "YOUR_SECRET_ID";

// 从前端获取 token
$validate = $_POST["NECaptchaValidate"] ?? null;

// 如果没有 token — 报错
if (!$validate) {
    echo "Captcha not passed";
    exit;
}

// 准备 POST 请求
$url = "https://c.dun.163yun.com/api/v2/verify";

$postData = http_build_query([
    "captchaId" => $CAPTCHA_ID,
    "secretId"  => $SECRET_ID,
    "validate"  => $validate
]);

// 发送请求至 YiDun
$opts = [
    "http" => [
        "method"  => "POST",
        "header"  => "Content-Type: application/x-www-form-urlencoded",
        "content" => $postData
    ]
];

$context  = stream_context_create($opts);
$result   = file_get_contents($url, false, $context);

// 解析 JSON
$data = json_decode($result, true);

// 验证结果
if ($data["result"] === true) {
    echo "Captcha passed successfully";
} else {
    echo "Verification error: " . json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
}
Background
可能的错误与调试
Bug Icon
参数错误
如果 captchaId 或 businessId 不正确、未加载 load.min.js 或 Yidun 资源被阻止,验证码无法显示或返回错误。请检查 captchaId、businessId、https://cstaticdun.126.net/load.min.js 以及 CSP/firewall。
Bug Icon
初始化超时或错误
SDK 初始化失败会返回 1004 或 -1。请增加超时,检查网络连接,并启用 SDK 日志。
Bug Icon
Validate token 为空或错误
服务器端 validate = null 或 result: false。请检查 captcha 是否完成,validate 未过期,未重复使用,前端与服务器 captchaId/secretId 是否匹配。
Bug Icon
签名错误 (signature)
若参数排序不正确或 key 错误,服务器会返回签名错误。请按 key 排序参数,使用正确的 secret key 和 HMAC-SHA 算法,并记录签名日志。
Bug Icon
验证时网络错误
Timeout、DNS、SSL 或请求格式错误。请发送请求至 https://c.dun.163yun.com/api/v2/verify,设置 Content-Type: application/x-www-form-urlencoded 并记录响应。
验证防护的可靠性
安全与优化建议
仅在服务器验证 validate token。
安全存储 secret key。
检查附加字段(如 userIP, scene)以确认请求合法性。
所有 API 请求使用 HTTPS。
实现错误处理并向用户显示清晰信息。
限制 captchaId 按域名使用。
结论

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

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

Conclusion
实用链接
DocIcon注册 NetEase Yidun 系统DocIconYidun 文档DocIconCapMonster Cloud 文档(Yidun)

关于 Yidun (NECaptcha) 的常见问题

Yidun 通过将 CAPTCHA 挑战与实时行为和设备分析相结合来检测机器人。它支持滑块、图标点击和其他挑战类型。它还可以在不立即显示拼图的情况下以隐形模式运行。

在 Smart Captcha 模式下,Yidun 评估鼠标或触摸行为、交互时序以及网络或设备上下文等信号以分配风险评分。这比仅基于图像的 CAPTCHA 更难绕过,因为机器人不仅需要解决挑战,还必须模仿人类行为并在整个会话中保持一致。

userAgent 字段是可选的,但我们强烈建议提供。它必须是有效的、最新的 Windows 浏览器 User-Agent 字符串,CapMonster Cloud 服务可与之配合使用。由于 Yidun 使用行为检查,发送过时或非 Windows 的 user agent 可能会降低求解可靠性。如果省略该字段,任务仍可创建,但显式传递有效的 Windows UA 可让您更好地控制一致性。

可以 — 对于 YidunTask,代理参数是可选的,任务可通过 CapMonster Cloud 代理服务器执行。当您的工作流需要来自特定 IP 范围或地理位置的流量时,提供自己的代理才主要有用。

最常见的原因如下:

  • 已过期或已使用的 token。 Yidun token 为一次性且有时间限制,因此应在 CAPTCHA 解决后尽快验证。
  • 前端和服务器使用的 captchaId 与 secretId 值不匹配。请在 Yidun 控制台中检查这些凭据。
  • 在服务器端,确保将验证请求发送到 https://c.dun.163yun.com/api/v2/verify,并使用 Content-Type: application/x-www-form-urlencoded 标头。
  • 如果在验证前初始化失败,故障症状可能包括错误代码 1004-1。增加 timeout,检查网络连接并启用 SDK 日志。

NECaptchaValidate 是 Yidun 保护表单用于将验证 token 从前端传递到服务器的隐藏 HTML 输入字段。CapMonster Cloud API 返回已解决的 token 后,自动化脚本必须在提交表单前将该值设置到 input[name="NECaptchaValidate"]。如果跳过此步骤,服务器将收不到 CAPTCHA 已解决的有效证明,提交通常会被拒绝。