logo
bars

TenDI (Tencent) CAPTCHA
und CapMonster Cloud

Captcha-Lösung, Installation auf der Website und Tests.
Sie haben eine Website mit eingebauter Captcha- oder Bot-Schutzlösung übernommen, aber keinen Zugriff auf den Quellcode? Dann stellt sich schnell die Frage: Welche Lösung ist installiert, ist sie korrekt konfiguriert und wie lässt sie sich testen?

In diesem Artikel haben wir versucht, alle wichtigen Fragen zu beantworten. Der erste Schritt bei der Lösung der Aufgabe besteht darin festzustellen, welches Schutzsystem eingesetzt wird. Dazu können Sie die Liste beliebter Captchas und Anti-Bot-Schutzsysteme heranziehen, in der visuelle Beispiele und zentrale Merkmale aufgeführt sind, die Ihnen helfen, schnell zu erkennen, womit Sie es zu tun haben.

Wenn Sie feststellen, dass auf Ihrer Website TenDI (Tencent) eingesetzt wird, besteht der nächste Schritt darin, seine Eigenschaften und Funktionsweise genauer zu untersuchen. Ebenfalls in diesem Artikel finden Sie eine Anleitung zur Integration von TenDI (Tencent), damit Sie vollständig verstehen, wie das System auf Ihrer Website arbeitet. So können Sie nicht nur den aktuellen Schutz besser einschätzen, sondern auch seine Wartung vorausschauend planen.

Was ist TenDI CAPTCHA
Was ist TenDI CAPTCHA
TenDI (Tencent) CAPTCHA ist ein mehrstufiges Schutzsystem gegen Bots. Mithilfe von Verhaltensanalyse und spezieller Mechanismen wird überprüft, ob ein Website-Besucher ein echter Mensch ist. Es wird zum Schutz von Registrierungen, Anmeldungen, Marketingaktionen sowie zur Verhinderung von Spam und Datendiebstahl eingesetzt.
Background
Beispiele von TenDI (Tencent)
Non-perception CAPTCHA
Non-perception CAPTCHA
Die Überprüfung erfolgt automatisch, ohne Beteiligung des Nutzers. Ideal für Szenarien, in denen Benutzerfreundlichkeit besonders wichtig ist.
Slider CAPTCHA
Slider CAPTCHA
Schnelle und einfache Überprüfung durch Ziehen eines Schiebereglers. Geeignet für die meisten Anwendungsfälle.
Graphic CAPTCHA
Graphic CAPTCHA
Der Nutzer klickt nacheinander auf Elemente im Bild. Wird in Szenarien mit hohem Sicherheitsniveau eingesetzt.
Audio CAPTCHA
Audio CAPTCHA
Überprüfung über eine Audioaufnahme. Optimal für Nutzer mit eingeschränkten Fähigkeiten.
Smart Verification
Smart Verification
Das System bewertet das Nutzerverhalten: Vertrauenswürdige werden sofort durchgelassen, verdächtige zusätzlich geprüft.
Multi-dimensional Defense
Multi-dimensional Defense
Es werden mehrere Schutzmechanismen eingesetzt: dynamische Verschlüsselung, Anti-Bot und weitere.

Wie man Tencent CAPTCHA über CapMonster Cloud löst

Beim Testen von Formularen mit Tencent CAPTCHA besteht häufig die Notwendigkeit, die Funktion der Captcha zu überprüfen und sicherzustellen, dass sie korrekt integriert ist.
Sie können die auf Ihrer Website integrierte Captcha manuell testen:
  • Öffnen Sie die Seite mit dem Formular und stellen Sie sicher, dass die Captcha angezeigt wird.
  • Versuchen Sie, das Formular ohne Lösung der Captcha abzusenden — der Server sollte einen Fehler zurückgeben.
  • Nach erfolgreicher Lösung der Captcha sollte das Formular ohne Fehler abgesendet werden.
Für die automatische Erkennung der Captcha können spezialisierte Dienste wie CapMonster Cloud verwendet werden — ein Tool, das die Captcha-Parameter entgegennimmt, sie auf eigenen Servern verarbeitet und ein fertiges Token zurückgibt. Dieses Token kann in das Formular eingefügt werden, um die Prüfung ohne Benutzerinteraktion zu bestehen.

Die Arbeit mit CapMonster Cloud über die API umfasst in der Regel folgende Schritte:

Aufgabe erstellenAufgabe erstellen
arrow
API-Anfrage sendenAPI-Anfrage senden
arrow
Ergebnis empfangenErgebnis empfangen
arrow
Token auf der Seite einsetzenToken auf der Seite einsetzen
arrow
Erkennung von TenDI (Tencent) CAPTCHA mit fertigen Bibliotheken
Der Dienst CapMonster Cloud stellt fertige Bibliotheken für die komfortable Nutzung in Python, JavaScript (Node.js) und C# bereit.
Python
JavaScript
C#
Lösung, Token-Einfügung und Formularübermittlung
Node.js-Beispiel für den vollständigen Captcha-Erkennungszyklus auf Ihrer Webseite. Mögliche Ansätze: HTML und Schutzparameter per HTTP abrufen, die Antwort senden und das Ergebnis verarbeiten. Oder wie im folgenden Beispiel mithilfe von Automatisierungstools (z. B. Playwright) — Seite öffnen, auf die Prüfung warten, Parameter über den CapMonster-Cloud-Client senden, Ergebnis erhalten, Token in das Formular einsetzen (zu Testzwecken können sowohl korrekte als auch falsche Daten verwendet werden) und das Ergebnis beobachten.

// npx playwright install chromium

import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, TenDIRequest } from '@zennolab_com/capmonstercloud-client';

// Ersetzen Sie dies durch Ihre eigenen Werte
const API_KEY = "YOUR_API_KEY";         
const WEBSITE_URL = "https://example.com";

async function solveTenDIOnPage() {
    const browser = await chromium.launch({ headless: false });
    const context = await browser.newContext();
    const page = await context.newPage();

    // 1. Seite öffnen
    await page.goto(WEBSITE_URL, { waitUntil: 'networkidle' });

    // 2. Auf das Erscheinen der Captcha warten (z. B. input oder iframe)
    await page.waitForSelector('#tendi_response, iframe[src*="tendi"], input[name="tendi_response"]', { timeout: 15000 });

    // Falls nötig, kann der websiteKey direkt von der Seite extrahiert werden
    const WEBSITE_KEY = await page.evaluate(() => {
        // Beispiel: Der sitekey kann in einem data-Attribut oder einer globalen Variable enthalten sein
        const el = document.querySelector('#tendi_response') || document.querySelector('div[data-sitekey]');
        return el?.getAttribute('data-sitekey') || window.TenDI_siteKey || "183268248";
    });

    console.log("Website key detected:", WEBSITE_KEY);

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

    // 3. TenDI-Aufgabe erstellen
    const tenDIRequest = new TenDIRequest({
        websiteURL: page.url(),
        websiteKey: WEBSITE_KEY,
    });

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

    // 4. Captcha lösen
    const solution = await client.Solve(tenDIRequest);
    console.log("Solution:", solution);

    const { ticket, randstr } = solution.solution.data;

    // 5. Methoden zum Einfügen des Lösungsergebnisses
    await page.evaluate(({ ticket, randstr }) => {
        // Einfügen in ein input-Feld
        const inputSelectors = ['#tendi_response', 'input[name="tendi_response"]', 'input[type="hidden"]'];
        let inserted = false;
        for (const sel of inputSelectors) {
            const input = document.querySelector(sel);
            if (input) {
                input.value = ticket;
                input.dispatchEvent(new Event('input', { bubbles: true }));
                const form = input.closest('form');
                if (form) form.submit();
                inserted = true;
                break;
            }
        }

        // JS-Callback-Funktion
        if (typeof window.onCaptchaSolved === 'function') {
            window.onCaptchaSolved(ticket, randstr);
            inserted = true;
        }

        // Wenn weder input noch Callback vorhanden sind
        if (!inserted) {
            window._tenDITicket = ticket;
            window._tenDIRandStr = randstr;
            console.log("Ticket and randstr saved to window._tenDITicket and window._tenDIRandStr");
        }
    }, { ticket, randstr });

    await page.waitForTimeout(5000);
    await browser.close();
}

solveTenDIOnPage().catch(console.error);
  
Wie man TenDI (Tencent) CAPTCHA auf der eigenen Website einbindet
Um die Funktionsweise der Captcha auf Ihrer Website sicher zu verstehen, ihre Prüfungslogik nachzuvollziehen oder sie neu einzubinden bzw. neu zu konfigurieren, empfehlen wir, diesen Abschnitt zu studieren. Er beschreibt den vollständigen Integrationsprozess und hilft, alle Details schnell zu erfassen.
  • 1. Melden Sie sich in Ihrem Konto an oder erstellen Sie ein neues im Captcha Console.
  • 2. Öffnen Sie den Bereich Verification Management.
  • 3. Erstellen Sie eine neue Captcha (falls noch nicht vorhanden).

Sie erhalten zwei Parameter: CaptchaAppId und AppSecretKey. Diese werden im Frontend und auf dem Server verwendet.

Beispiel für die Frontend-IntegrationBeispiel für die Frontend-Integration
arrow

Wie die Integration funktioniert

Schritt 1: Laden des Captcha-JavaScripts

Das Skript muss dynamisch geladen werden:

<script src="https://ca.turing.captcha.qcloud.com/TJNCaptcha-global.js"></script>

Wenn das Skript auf nicht standardisierte Weise geladen oder zwischengespeichert wird, kann die Captcha fehlerhaft funktionieren.

Schritt 2: Erstellen eines TencentCaptcha-Objekts

Nach dem Laden des JavaScripts steht eine globale Klasse zur Verfügung:

<script src="new TencentCaptcha(domElement, CaptchaAppId, callback, options);"></script>

Parameter:

domElement - Container, in den das Checkbox-/Iframe-Element eingebettet wird

CaptchaAppId - Ihre ID

callback - Aktion nach erfolgreicher Überprüfung

options - Darstellungseinstellungen (optional)

Schritt 3: Methode aufrufen .show()

captcha.show();

Zeigt die Captcha an. Kann mehrfach aufgerufen werden.

Schritt 4: Ergebnis verarbeiten

Der Callback erhält ein Objekt:


{
  ret: 0,              // 0 -- Erfolg, 2 -- Benutzer hat das Fenster geschlossen
  ticket: "...",       // wird vom Server benötigt
  randstr: "...",      // wird ebenfalls vom Server benötigt
  errorCode: 1001,     // wenn die Captcha nicht geladen werden konnte
  errorMessage: "..."  // Fehlermeldung
}

Auf dem Server muss zwingend eine zweite Überprüfung des ticket durchgeführt werden.

„Notfallmodus“ (Disaster Recovery)

Falls die Captcha nicht geladen werden kann (z. B. wenn das CDN nicht erreichbar ist), kann automatisch ein „Notfall-Ticket“ ausgegeben werden, um Geschäftsprozesse nicht zu unterbrechen.

Ablauf:

  • Versuch, eine Captcha zu erstellen → Fehler.
  • Aufruf von loadErrorCallback().
  • Generierung eines Tickets im Format:
    trerror_<errorcode>_<appid>_<timestamp>
  • Fortsetzung der Verarbeitung wie gewohnt, wobei der Server erkennt, dass es sich um ein Notfall-Ticket handelt, und entsprechend entscheidet.

Verschlüsselung des AppId (optional)

Wenn maximaler Schutz erforderlich ist, kann statt des offenen AppId eine verschlüsselte Version an die Captcha übergeben werden:

aidEncrypted = Base64(IV + AES256(AppId & timestamp & ttl))

Erforderlich:

  • 32-Byte-Schlüssel (AppSecretKey → auf 32 Byte erweitert)
  • AES-256 CBC + PKCS7Padding
  • 16-Byte-IV
  • Timestamp und Gültigkeitsdauer in Sekunden

Serverseitiges Verschlüsselungsbeispiel (Python)


from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64

def encrypt(plaintext, key, iv):
    cipher = AES.new(key, AES.MODE_CBC, iv)
    ciphertext = cipher.encrypt(pad(plaintext.encode(), AES.block_size))
    return base64.b64encode(iv + ciphertext).decode("utf-8")

Serverseitige Validierung

Schritt 1. Einrichtung des API-Zugriffs

Rufen Sie im Verwaltungsbereich Ihrer Schlüssel (CAM / API Key Management) SecretId und SecretKey für die API ab. Diese Schlüssel werden für signierte API-Anfragen benötigt.

Schritt 2. Aufruf der API DescribeCaptchaResult

Nachdem der Client ticket und randstr zurückgegeben hat, muss der Server folgende Anfrage senden:

  • Action: DescribeCaptchaResult
  • Version: 2019-07-22 (oder die aktuelle Version)

Parameter:

CaptchaType - 9 (fester Wert)

Ticket - String — ticket, vom Client zurückgegeben

Randstr - String — randstr, vom Client zurückgegeben

CaptchaAppId - Ihre AppId

AppSecretKey - Ihr geheimer Schlüssel

UserIp - IP-Adresse des Benutzers (empfohlen)

Schritt 3. Verarbeitung der Antwort

Die API gibt zurück:

  • CaptchaCode: integerdas Ergebnis der Überprüfung.
  • 0 (oder OK) — Captcha bestanden, ticket ist gültig

Wenn CaptchaCode === OK, kann davon ausgegangen werden, dass der Benutzer die Prüfung bestanden hat. Andernfalls — ablehnen.

Beispiel — Überprüfung des ticket in Node.js


import { v20190722 as captcha } from "@tencentcloud/tencentcloud-sdk-nodejs";
const client = new captcha.Client({
  credential: {
    secretId: "YOUR_SECRET_ID",
    secretKey: "YOUR_SECRET_KEY"
  },
  region: "ap-project", // Region, falls erforderlich
});

async function verifyCaptcha(ticket, randstr, userIp) {
  const params = {
    CaptchaType: 9,
    Ticket: ticket,
    Randstr: randstr,
    CaptchaAppId: YOUR_APP_ID,
    AppSecretKey: "YOUR_APP_SECRET_KEY",
    UserIp: userIp
  };

  const resp = await client.DescribeCaptchaResult(params);
  const code = resp.Response.CaptchaCode;
  return code === 0;
}
HelpIcon

Weitere Details zur Integration von Tencent CAPTCHA auf Ihrer Website finden Sie in der offiziellen Dokumentation.

Background
Mögliche Fehler und Debugging
Bug Icon
Captcha wird nicht geladen
(Fehler 1001, 1002 oder Meldung über eine ungültige Signatur) — die Ursache können fehlerhafte Anfrageparameter sein. Stellen Sie sicher, dass CaptchaAppId, AppSecretKey und alle Anfrageparameter korrekt angegeben sind.
Bug Icon
Ungültiges oder leeres ticket/randstr
Stellen Sie sicher, dass der Client beide Parameter korrekt übermittelt.
Bug Icon
Zeitüberschreitung bei der Lösung
Erhöhen Sie das Timeout auf der Serverseite.
Tests der Schutzstabilität
Nach der Integration ist es wichtig zu überprüfen, dass der Schutz tatsächlich korrekt funktioniert.
Tipps zu Sicherheit und Optimierung
Bewahren Sie den <b>AppSecretKey</b> ausschließlich auf dem Server auf, geben Sie ihn nicht an den Browser weiter und binden Sie ihn nicht in JavaScript-Code ein.
Protokollieren Sie vollständige Antworten von Tencent CAPTCHA, einschließlich Fehlercode, Anfragezeit und Validierungsparametern — das erleichtert die Fehlerdiagnose.
Verwenden Sie HTTPS für die Übertragung aller Parameter <b>(ticket, randstr)</b>, um Manipulationen zu vermeiden.
Platzieren Sie auf der Seite korrekte Links zur <b>Datenschutzerklärung</b> und zu den <b>Nutzungsbedingungen von Tencent</b>, wie es die Lizenz erfordert.
Fazit

Wenn Sie eine Website übernommen haben, auf der bereits ein Captcha oder ein anderes Schutzsystem installiert ist und Sie keinen Zugriff auf den Code haben, ist das kein Problem! Es ist ziemlich einfach festzustellen, welche Technologie genau verwendet wird. Und um die korrekte Funktionsweise zu überprüfen, können Sie den Erkennungsdienst CapMonster Cloud in einer isolierten Testumgebung nutzen, um sicherzustellen, dass der Mechanismus zur Tokenverarbeitung und die Prüflogik ordnungsgemäß funktionieren.

Im Fall von TenDI (Tencent) reicht es aus, das System zu erkennen, sein Verhalten zu analysieren und sich zu vergewissern, dass der Schutz korrekt arbeitet. In diesem Artikel haben wir gezeigt, wie Sie TenDI (Tencent) identifizieren und wo Sie Anleitungen für die Einbindung oder Neukonfiguration finden, damit Sie den Schutz zuverlässig betreiben und seine Arbeit unter Kontrolle halten können.

Conclusion
Nützliche Links
DocIconTenDI (Tencent) CAPTCHA DokumentationDocIconCapMonster Cloud Dokumentation (Arbeit mit Tencent CAPTCHA)DocIconWas ist Tencent Captcha (TenDI) und wie löst man sie?