|
| 1 | +--- |
| 2 | +title: "Clientseitiges Rendering" |
| 3 | +description: "Rendern Sie das Procaptcha Widget auf Ihrer Website mit der Procaptcha JavaScript-Ressource." |
| 4 | +i18nReady: true |
| 5 | +--- |
| 6 | + |
| 7 | +Zuerst müssen Sie die Procaptcha JavaScript-Ressource irgendwo in Ihrer HTML-Seite einbinden. Das `<script>` muss |
| 8 | +über HTTPS geladen werden und kann überall auf der Seite platziert werden. Innerhalb des `<head>`-Tags oder unmittelbar nach dem `.procaptcha`-Container |
| 9 | +sind beide in Ordnung. |
| 10 | + |
| 11 | +```html |
| 12 | +<script type="module" src="https://js.prosopo.io/js/procaptcha.bundle.js" async defer></script> |
| 13 | +``` |
| 14 | + |
| 15 | +Nun können Sie das Procaptcha Widget entweder implizit oder explizit rendern. |
| 16 | + |
| 17 | +## Implizites Rendering |
| 18 | + |
| 19 | +Fügen Sie einen leeren DOM-Container hinzu, in den das Procaptcha Widget automatisch eingefügt wird. Der Container ist |
| 20 | +typischerweise ein `<div>` (kann aber jedes Element sein) und muss die Klasse `procaptcha` und ein `data-sitekey`-Attribut haben, das auf Ihren |
| 21 | +öffentlichen |
| 22 | +sitekey gesetzt ist. |
| 23 | + |
| 24 | +```html |
| 25 | +<body> |
| 26 | + <div class="procaptcha" data-sitekey="your_site_key"></div> |
| 27 | +</body> |
| 28 | +``` |
| 29 | + |
| 30 | +Normalerweise möchten Sie den leeren `.procaptcha`-Container in ein HTML-Formular einfügen. Wenn ein CAPTCHA erfolgreich |
| 31 | +gelöst wird, wird automatisch eine versteckte JSON-Payload zu Ihrem Formular hinzugefügt, die Sie dann per POST an Ihren Server zur |
| 32 | +Verifizierung senden können. Sie können sie serverseitig mit dem POST-Parameter `procaptcha-response` abrufen. |
| 33 | + |
| 34 | +Hier ist ein vollständiges Beispiel, bei dem Procaptcha verwendet wird, um ein Anmeldeformular vor automatisiertem Missbrauch zu schützen. Wenn das Formular |
| 35 | +übermittelt wird, wird das `procaptcha-response`-Token zusammen mit den E-Mail- und Passwort-POST-Daten eingefügt, nachdem das CAPTCHA |
| 36 | +gelöst wurde. |
| 37 | + |
| 38 | +### Beispiel für implizites Rendering |
| 39 | + |
| 40 | +```html |
| 41 | +<html> |
| 42 | + <head> |
| 43 | + <title>Procaptcha Demo</title> |
| 44 | + <script type="module" src="https://js.prosopo.io/js/procaptcha.bundle.js" async defer></script> |
| 45 | + </head> |
| 46 | + <body> |
| 47 | + <form action="" method="POST"> |
| 48 | + <input type="text" name="email" placeholder="Email" /> |
| 49 | + <input type="password" name="password" placeholder="Password" /> |
| 50 | + <div class="procaptcha" data-sitekey="your_site_key"></div> |
| 51 | + <br /> |
| 52 | + <input type="submit" value="Submit" /> |
| 53 | + </form> |
| 54 | + </body> |
| 55 | +</html> |
| 56 | +``` |
| 57 | + |
| 58 | +## Explizites Rendering |
| 59 | + |
| 60 | +Wenn Sie das Widget lieber selbst rendern möchten, können Sie die `Procaptcha.render()`-Methode verwenden. Die `Procaptcha.render()`-Methode |
| 61 | +muss aufgerufen werden, nachdem das procaptcha.bundle.js-Skript geladen wurde. |
| 62 | + |
| 63 | +### Beispiel für explizites Rendering |
| 64 | + |
| 65 | +Das Skript wird im Head des Dokuments geladen und erhält die ID `procaptcha-script`. Ein Container wird mit der |
| 66 | +ID `procaptcha-container` erstellt, in dem das Widget gerendert wird. |
| 67 | + |
| 68 | +```html |
| 69 | +<html> |
| 70 | + <head> |
| 71 | + <script |
| 72 | + type="module" |
| 73 | + id="procaptcha-script" |
| 74 | + src="https://js.prosopo.io/js/procaptcha.bundle.js" |
| 75 | + async |
| 76 | + defer |
| 77 | + ></script> |
| 78 | + </head> |
| 79 | + <body> |
| 80 | + <div id="procaptcha-container"></div> |
| 81 | + </body> |
| 82 | +</html> |
| 83 | +``` |
| 84 | + |
| 85 | +Ein `onload`-Event wird dem Script-Tag hinzugefügt, um die Render-Funktion aufzurufen, wenn das Skript geladen wurde. |
| 86 | + |
| 87 | +```javascript |
| 88 | +// A function that will call the render Procaptcha function when the procaptcha script has loaded |
| 89 | +document.getElementById('procaptcha-script').addEventListener('load', function () { |
| 90 | + // Define a callback function to be called when the CAPTCHA is verified |
| 91 | + function onCaptchaVerified(output) { |
| 92 | + console.log('Captcha verified, output: ' + JSON.stringify(output)) |
| 93 | + } |
| 94 | + |
| 95 | + // Get the Element using elementId |
| 96 | + const captchaContainer = document.getElementById('procaptcha-container') |
| 97 | + // Render the CAPTCHA explicitly on a container with id "procaptcha-container" |
| 98 | + window.procaptcha.render(captchaContainer, { |
| 99 | + siteKey: 'YOUR_SITE_KEY', |
| 100 | + theme: 'dark', |
| 101 | + callback: onCaptchaVerified, |
| 102 | + }) |
| 103 | +}) |
| 104 | +``` |
| 105 | + |
| 106 | +## Procaptcha-Optionen |
| 107 | + |
| 108 | +Die `Procaptcha.render()`-Funktion nimmt ein Optionsobjekt als zweites Argument. Das Optionsobjekt kann die |
| 109 | +folgenden Felder enthalten: |
| 110 | + |
| 111 | +| Key | Type | Beschreibung | Erforderlich | |
| 112 | +|----------------------|--------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------| |
| 113 | +| siteKey | string | Der sitekey Ihrer Anwendung / Website. Dies ist erforderlich. | ✓ | |
| 114 | +| callback | string or function | Der Name der Window-Funktion oder eine Funktion, die aufgerufen wird, wenn das CAPTCHA verifiziert wurde. | ✗ | |
| 115 | +| theme | string | Das Theme des CAPTCHA-Widgets. Der Standard ist `light`. Die andere Option ist `dark`. | ✗ | |
| 116 | +| captchaType | string | Der Typ des zu rendernden CAPTCHA. Der Standard ist `frictionless`. Andere Optionen sind `image`, `pow`. | ✗ | |
| 117 | +| chalexpired-callback | string or function | Der Name der Window-Funktion oder eine Funktion, die aufgerufen wird, wenn die CAPTCHA-Herausforderung abläuft. | ✗ | |
| 118 | +| error-callback | string or function | Der Name der Window-Funktion oder eine Funktion, die aufgerufen wird, wenn ein Fehler auftritt. | ✗ | |
| 119 | +| close-callback | string or function | Der Name der Window-Funktion oder eine Funktion, die aufgerufen wird, wenn das CAPTCHA geschlossen wird. | ✗ | |
| 120 | +| open-callback | string or function | Der Name der Window-Funktion oder eine Funktion, die aufgerufen wird, wenn das CAPTCHA geöffnet wird. | ✗ | |
| 121 | +| expired-callback | string or function | Der Name der Window-Funktion oder eine Funktion, die aufgerufen wird, wenn die CAPTCHA-Lösung abläuft. | ✗ | |
| 122 | +| failed-callback | string or function | Der Name der Window-Funktion oder eine Funktion, die aufgerufen wird, wenn die CAPTCHA-Herausforderung fehlschlägt. | ✗ | |
| 123 | +| reset-callback | string or function | Der Name der Window-Funktion oder eine Funktion, die aufgerufen wird, wenn das CAPTCHA zurückgesetzt wird. | ✗ | |
| 124 | +| language | string | Die Sprache des CAPTCHA-Widgets. Der Standard ist `en`. Alle Sprachen finden Sie [hier](https://github.com/prosopo/captcha/tree/main/packages/locale/src/locales). | ✗ | |
| 125 | + |
| 126 | +### Datenattribute |
| 127 | + |
| 128 | +Die gleichen Optionen können der impliziten Rendering-Methode übergeben werden, indem sie als Datenattribute zum `.procaptcha`-Container hinzugefügt werden. |
| 129 | +Um beispielsweise das Theme auf dark zu setzen, würden Sie `data-theme="dark"` zum `.procaptcha`-Container hinzufügen. |
| 130 | + |
| 131 | +```html |
| 132 | +<div class="procaptcha" data-sitekey="your_site_key" data-theme="dark"></div> |
| 133 | +``` |
| 134 | + |
| 135 | +Um einen Callback mit einem Daten-Tag zu setzen, würden Sie `data-callback="yourCallbackFunction"` zum `.procaptcha`-Container hinzufügen |
| 136 | +und die Callback-Funktion am Window-Objekt definieren. |
| 137 | + |
| 138 | +```html |
| 139 | +<div class="procaptcha" data-sitekey="your_site_key" data-callback="yourCallbackFunction"></div> |
| 140 | +``` |
| 141 | + |
| 142 | +### `captchaType` |
| 143 | + |
| 144 | +Sie können beim Rendern der Procaptcha-Komponente jeden der folgenden CAPTCHA-Typen implementieren: |
| 145 | + |
| 146 | +| Type | Beschreibung | |
| 147 | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 148 | +| `frictionless` | Der Standard-CAPTCHA-Typ ist `frictionless`. Dieser CAPTCHA-Typ ist für den Benutzer unsichtbar und erfordert nur die Durchführung einer unsichtbaren [Proof of Work-Herausforderung](https://en.wikipedia.org/wiki/Proof_of_work) (`pow`). Verdächtige Bots erhalten Bild-CAPTCHA-Herausforderungen (`image`). | |
| 149 | +| `pow` | Der `pow`-CAPTCHA-Typ erfordert, dass der Benutzer ein kryptografisches Puzzle löst. Dieses Puzzle erfordert einfach einen kleinen Betrag an Rechenarbeit und verlangsamt Bots erheblich, wodurch es für sie schwierig wird, in großen Mengen zu scrapen. | |
| 150 | +| `image` | Der `image`-CAPTCHA-Typ erfordert, dass der Benutzer ein einfaches Bild-CAPTCHA löst. Dies ist der CAPTCHA-Typ, mit dem die meisten Menschen vertraut sind, erstellt von Google reCAPTCHA. | |
| 151 | + |
| 152 | + |
| 153 | + |
| 154 | +**Bitte beachten Sie**, wenn Sie `image` oder `pow` verwenden, muss der clientseitige [CAPTCHA-Typ](/de/basics/captcha-types/) auf denselben Wert wie im [Portal](https://portal.prosopo.io) gesetzt werden: |
| 155 | +- Wenn Ihr Portal-CAPTCHA-Typ `image` ist, müssen Sie den clientseitigen CAPTCHA-Typ auf `image` setzen. |
| 156 | +- Wenn Ihr Portal-CAPTCHA-Typ `pow` ist, müssen Sie den clientseitigen CAPTCHA-Typ auf `pow` setzen. |
| 157 | +- Wenn Ihr Portal-CAPTCHA-Typ `frictionless` ist, müssen Sie den clientseitigen CAPTCHA-Typ auf `frictionless` setzen oder ihn leer lassen. |
| 158 | + |
| 159 | +### Framework-Integrationen |
| 160 | + |
| 161 | +Verschiedene Frameworks wurden mit Procaptcha integriert. Die Dokumentation für jedes Framework finden Sie unten: |
| 162 | + |
| 163 | +- [React Integration](/de/framework-integrations/angular-integration/) |
| 164 | +- [Vue Integration](/de/framework-integrations/vue-integration/) |
| 165 | +- [Angular Integration](/de/framework-integrations/angular-integration/) |
| 166 | +- [Svelte Integration](/de/framework-integrations/svelte-integration/) |
| 167 | + |
| 168 | + |
0 commit comments