///
什么是腾讯验证码(TenDI)以及如何解决它?
CapMonster Cloud 团队
CapMonster Cloud 团队
自动化专家
September 10, 2024
15 分钟

什么是 Tencent Captcha(TenDI)以及如何解决它?

 

 

Tencent Captcha 是由腾讯公司开发的一种自动化行为防护系统。它广泛应用于各类在线平台,例如电商网站、社交网络和金融服务,用于防止垃圾信息、欺诈行为以及其他类型的滥用行为。 
 

robots
立即开始自动化您的工作流 reCAPTCHA v2

Tencent Captcha 的外观

 

Tencent Captcha 的主要验证形式是滑块验证码,它要求用户移动滑块,使拼图碎片正确对齐:

image.pngimage.png

 

此外,还会出现图形验证码,用户需要按顺序点击指定的目标元素:

image.png

 

作为替代方案,用户可能会被要求完成语音验证码的识别:

image.png

 

腾讯还提供智能验证(或“智能检查”),类似于 Google reCAPTCHA 等其他系统。该智能验证使用机器学习算法和用户行为分析来判断网站上的操作是否真实,还是自动化攻击行为。

如何使用 CapMonster Cloud 服务解决 Tencent Captcha

CapMonster Cloud 可以帮助绕过大多数不同类型的验证码,包括 Tencent Captcha。为此,需要向服务器发送请求:https://api.capmonster.cloud/createTask,使用 POST 方法并以 JSON 格式提交,请求应如下所示:

{
 "clientKey": "API_KEY",
 "task": {
   "type": "CustomTask",
   "class": "TenDI",
   "websiteURL": "https://example.com",
   "websiteKey": "189123456",
   "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36",
   "metadata": {
     "captchaUrl": "https://global.captcha.example.com/TCaptcha-global.js"
   }
 }
}

请求中使用的参数:

参数

类型

是否必填

typeStringCustomTask
classStringTenDI
websiteURLString验证码所在的主页面地址
websiteKeyStringcaptchaAppId。例如 "websiteKey": "189123456",可从 HTML 页面或流量中获取
captchaUrl(metadata 内)String验证码脚本地址,通常以 TCaptcha.js 或 TCaptcha-global.js 结尾
userAgentString浏览器 User-Agent。请仅传递来自 Windows 系统的最新 UA

成功返回示例(JSON 格式):

{
  "errorId": 0,
  "taskId": 407533072
}

获取结果示例:

方法 getTaskResult:向地址 https://api.capmonster.cloud/getTaskResult 发送 POST 请求,传入 task_id,以从服务获取解题结果:

{
 "clientKey":"API_KEY",
 "taskId": 407533072
}

响应:

{
 "errorId": 0,
 "status": "ready",
 "solution": {
   "data": {
     "randstr": "@EcL",
     "ticket": "tr03lHUhdnuW3neJZu.....7LrIbs*"
   },
   "headers": {
     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36"
   }
 }
}

randstr —— 随机字符串,是 Tencent Captcha 解决方案的一部分,用于识别和验证验证码结果。

ticket —— 唯一标识符,同样属于验证码结果的一部分,用于确认验证通过并获取受保护内容或功能的访问权限。

如何查找 websiteKey(captchaAppId)

为了向自动识别服务器发送请求,需要提前获取验证码的唯一标识符 —— websiteKey(captchaAppId)

获取方法非常简单:

  1. 在浏览器中打开包含验证码的页面。

  2. 触发并显示验证码。

  3. 打开 开发者工具(Developer Tools)。

  4. 切换到 网络(Network)选项卡。

  5. 在网络请求中找到包含参数 aid 的请求——这就是该页面验证码的标识符。

示例:

captchaAppId 查找示例

用 Node.js 和 Python 解决 Tencent Captcha 的代码示例

我们将给出使用 CapMonster Cloud 服务在 JavaScript 和 Python 语言中解决该类型验证码的脚本示例,并使用该服务的官方库。 
 

Node.js:

// https://github.com/CapMonsterCloud/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, TenDIRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = "YOUR_API_KEY";  // 请填写你的 CapMonster Cloud API Key

async function solveTenDI() {
   const client = CapMonsterCloudClientFactory.Create(
       new ClientOptions({ clientKey: API_KEY })
   );

   // 基础示例(不使用代理)
   // CapMonster Cloud 会自动使用其代理
   let tenDIRequest = new TenDIRequest({
       websiteURL: "https://example.com",  // 验证码页面 URL
       websiteKey: "183268248",           // 请替换为正确的值
   });

   // 使用自定义代理示例
   // 如果需要使用自己的代理,请取消注释以下代码块
   /*
   const proxy = {
       proxyType: "http",
       proxyAddress: "123.45.67.89",
       proxyPort: 8080,
       proxyLogin: "username",
       proxyPassword: "password"
   };

   tenDIRequest = new TenDIRequest({
       websiteURL: "https://example.com",
       websiteKey: "websiteKey",
       proxy,
       userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36"
   });
   */

   // 如有需要,可以检查余额
   const balance = await client.getBalance();
   console.log("Balance:", balance);

   const result = await client.Solve(tenDIRequest);
   console.log("Solution:", result);
}

solveTenDI().catch(console.error);

Python:


# https://github.com/CapMonsterCloud/capmonstercloud-client-python
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import TenDiCustomTaskRequest

# from capmonstercloudclient.requests.baseRequestWithProxy import ProxyInfo  # 如果需要使用代理请取消注释

API_KEY = "YOUR_API_KEY"  # 请填写你的 CapMonster Cloud API Key

async def solve_tendi_custom():
   client_options = ClientOptions(api_key=API_KEY)
   cap_monster_client = CapMonsterClient(options=client_options)

   # 基础示例(不使用代理)
   # CapMonster Cloud 会自动使用其代理
   tendi_request = TenDiCustomTaskRequest(
       websiteUrl="https://example.com",  # Tencent(TenDI)验证码页面 URL
       websiteKey="189956587",           # TencentCaptcha appid
       userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36"
   )

   # 使用自定义代理示例
   # 如果需要使用代理,请取消注释以下代码块
   #
   # proxy = ProxyInfo(
   #     proxyType="http",
   #     proxyAddress="123.45.67.89",
   #     proxyPort=8080,
   #     proxyLogin="username",
   #     proxyPassword="password"
   # )
   #
   # tendi_request = TenDiCustomTaskRequest(
   #     websiteUrl="https://example.com",
   #     websiteKey="189956587",
   #     userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36",
   #     proxy=proxy
   # )

   # 如有需要,可以检查余额
   balance = await cap_monster_client.get_balance()
   print("Balance:", balance)

   result = await cap_monster_client.solve_captcha(tendi_request)
   print("Solution:", result)

asyncio.run(solve_tendi_custom())

请查看我们的工具与解决方案,以便轻松解决 Tencent Captcha 及其他类型的验证码: 

 

CapMonster Cloud 浏览器扩展 Chrome / Firefox 


NB:请注意,该产品仅用于自动化测试您自己拥有合法访问权限的网站和资源。

ItGuy
geear
面向软件开发者的联盟计划
通过用户识别验证码的消费获取高达 30% 的返佣。
✅ 请求已发送
感谢您对我们的合作伙伴计划感兴趣!我们将在 7 个工作日内与您联系。
请求加入
填写表格以提交申请加入合作伙伴计划。