JavaScript-Webseiten rendern
Diese Funktion lädt eine Internetadresse in einem echten Browser, führt das enthaltene JavaScript aus und liefert das fertige HTML zurück, so wie es nach dem vollständigen Laden im Browser aussieht. Gedacht für Seiten, deren eigentlicher Inhalt erst nach dem Ausführen von Skripten erscheint und die ein einfacher Seitenabruf nur leer zeigt.
Online ausführen
Führen Sie dies mit Ihrem Konto auf unseren Servern aus. Kostenlose Tools laufen in Ihrem Browser; dieses wird zum oben genannten Preis von Ihrem KIT-Guthaben abgebucht.
Das Problem mit modernen Webseiten
Viele moderne Webseiten liefern beim ersten Abruf nur ein leeres Gerüst; der eigentliche Inhalt – Text, Preise, Produktkarten – wird erst nachträglich per JavaScript im Browser eingefügt. Ein einfacher Abruf ohne Browser sieht davon nichts und liefert nur ein paar Zeilen HTML ohne erkennbaren Inhalt. Diese Funktion führt genau diesen fehlenden Schritt aus: Sie lädt die Seite wie ein echter Besucher und liefert erst danach das vollständige HTML zurück.
Was Sie mit dem Ergebnis anfangen können
Das zurückgegebene HTML lässt sich weiterverarbeiten, etwa mit einem eigenen Selektor-Skript durchsuchen oder in ein internes System einspeisen, das selbst kein JavaScript ausführen kann. Für viele Alltagsfälle – Text extrahieren, Tabellen auslesen, in Markdown umwandeln – gibt es dafür eigene, direktere Funktionen dieser Kategorie; diese hier liefert bewusst das rohe, fertig geladene HTML für alles, was über diese vorgefertigten Formate hinausgeht.
Grenzen
Seiten hinter einer Anmeldung oder mit aktiver Bot-Abwehr lassen sich nicht in jedem Fall vollständig laden, da solche Schutzmechanismen gezielt automatisierte Zugriffe erschweren sollen. Nach 30 Sekunden bricht die Anfrage ab, wenn die Seite bis dahin nicht fertig geladen hat; bei sehr komplexen Anwendungen mit vielen Nachladeschritten kann das vorkommen, ist bei gewöhnlichen Webseiten aber die Ausnahme. Auch eine Weiterleitung auf eine andere Adresse wird dabei mitverfolgt, das Ergebnis bezieht sich dann auf die Zielseite nach der Weiterleitung.
Preis pro Anfrage
$0.040 pro Anfrage zuzüglich $0.001 pro URL, unabhängig von der Größe des zurückgegebenen HTML oder der Anzahl der auf der Seite ausgeführten Skripte. Ein Abonnement ist dafür nicht nötig, abgerechnet wird ausschließlich die tatsächlich verarbeitete Anfrage, egal ob die Seite schlank oder technisch aufwendig aufgebaut ist. Für dieselbe Adresse mehrfach hintereinander abgerufenes HTML wird jedes Mal neu geladen und nicht aus einem vorherigen Ergebnis wiederverwendet, damit Sie stets den aktuellen Zustand der Seite erhalten.
Anwendungsfälle
Preise aus einer JavaScript-Anwendung auslesen
Ein IT-Dienstleister lädt eine Web-Anwendung, deren Preistabelle erst nach dem Laden per Skript erscheint, um das fertige HTML anschließend selbst auszuwerten.
Internes System ohne eigenen Browser anbinden
Schneider IT-Systeme GmbH & Co. KG speist das gerenderte HTML einer Partnerseite in ein internes Altsystem ein, das selbst kein JavaScript ausführen kann.
Fehlerhafte Darstellung nach einem Update prüfen
Lukas Fischer prüft nach einem Update der eigenen Web-Anwendung, ob der Inhalt nach dem Laden tatsächlich im HTML ankommt, statt leer zu bleiben.
Häufige Fragen
Was unterscheidet das von einem einfachen Seitenabruf?
Ein einfacher Abruf liefert nur das ursprüngliche HTML ohne ausgeführtes JavaScript; diese Funktion führt die Seite in einem echten Browser aus und liefert erst das Ergebnis danach.
Bekomme ich ein Bild oder Text zurück?
HTML als Text – für ein Bild gibt es die Screenshot-Funktionen, für lesbaren Text oder Markdown die jeweils eigenen Funktionen dieser Kategorie.
Funktioniert das auch bei Seiten hinter einer Anmeldung?
Nicht zuverlässig: Seiten, die eine Anmeldung oder aktive Bot-Abwehr voraussetzen, lassen sich nicht in jedem Fall vollständig laden.
Was kostet das Rendern einer einzelnen Seite?
$0.040 pro Anfrage plus $0.001 pro URL, unabhängig von der Größe des HTML.
Wie lange darf das Laden dauern?
Bis zu 30 Sekunden; lädt die Seite bis dahin nicht fertig, bricht die Anfrage ab.
Wird das JavaScript der Seite bei Ihnen gespeichert?
Nein, die Seite wird ausschließlich zum Erzeugen des Ergebnisses geladen und danach nicht dauerhaft vorgehalten.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/web/render \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/render", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/render",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/render", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/render", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"url": "https://ejemplo.com"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.render",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
timeout_sec | 30 |
max_crawl_pages | 25 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
422 | task_failed | Die Aufgabe ist fehlgeschlagen und wird nicht berechnet. |