Zum Inhalt springen

Optionen und Identitäten

Was Sie beim Start eines gehosteten Browsers festlegen können: die Optionen, die Stealth-Defaults und Identitäten, Profile, die Sie angemeldet halten, ein gepinntes Release und die Startseite.

Optionen

Alle optional. Senden Sie sie als JSON-Body des Create-Aufrufs.

FeldTypBedeutung
identitystringOne label per account you run: the same device fingerprint AND the same residential IP, for as long as that IP stays online.
fingerprintstringDevice seed only (no IP pinning). The same seed gives the same device profile every time; with lightStealth on it picks from a small set of metadata profiles.
lightStealthbooleanDefault true: varies only the metadata axes the host can back up. Set false to turn it off.
platformwindows | macos | linux | androidOperating system the persona presents.
brandChrome | Edge | Opera | VivaldiBrowser brand the persona presents.
timezoneIANA namee.g. America/New_York. Use geoip instead to follow the exit IP.
localestringAccept-Language, e.g. en-US,en.
geoipbooleanTimezone and language follow the exit IP. Default true unless you set timezone or locale yourself.
proxy"managed" | { server, username?, password? }Omitted = managed residential pool. Or your own proxy: http://, socks5:// or socks5h:// (rules below).
country2-letter codeManaged pool: exit country, e.g. us, de, gb.
stateregion codeManaged pool: exit state/region, e.g. ca, ny. Needs country.
citycity nameManaged pool: exit city, e.g. "los angeles". Needs state.
proxySessionstringManaged pool: sticky label. The same label returns the same exit IP later (kept for 24 hours).
timeoutSecnumberHard limit on the session length, in seconds (10 up to the account maximum below).
idleTimeoutSecnumberEnd the session after this long without a CDP command (10–1800).
maxGbnumberStop the session after this much traffic (0.001–1000).
headlessbooleanDefault true.
keepAlivebooleanDefault false. Keep the browser running when your client disconnects, until you end it (DELETE, or the CDP command Browser.close) or a limit does; reconnect with POST /api/v1/browsers/<id>/connect.
versionstringRun a specific Clearcote release, e.g. "152.0.7977.82-r21" or "r21". Omitted = the current release. See "Pinning a release".
profile"name" | { name, persist? }Load a saved profile (cookies + site storage). With persist: true, save it back when the session ends. See "Profiles".
urlhttp(s) URLOpened in the first tab before you connect: you find it already loading.
adblockbooleanRefuse known ad and tracker hosts before they load, so they are never billed. Default false.
solveSlidersbooleanDefault true. Slide-to-verify challenges are dragged for you, in any tab or frame; false leaves them to your script. See "Slider challenges".
solveCheckboxesbooleanDefault true. "Verify you are human" checkboxes are clicked for you, in any tab or frame; false leaves them to your script. See "Checkbox challenges".
challengeServicetrue | { categories?, sites?, key?, apiKey?, mode?, maxSolves?, maxSpendEur? }Default off. Challenges the free actions cannot clear go to a solving service, with your own key or ours (billed per solve). true (or no categories) auto-selects: every challenge it recognises, in token, clearance, block-page and image; or list categories and sites yourself. See "Challenge service".
recordbooleanDefault false. Record the session as an MP4; GET /api/v1/browsers/<id>/recording once it is ready (kept 14 days).
notestringYour label for the session (at most 256 characters). Shown in the dashboard; filter by it in the list.
workerstringPlace the session on the same server as an earlier one (its worker). 503 if that server is full.

Stealth-Defaults und Identitäten

Jede Session startet mit den Einstellungen von der Seite Empfohlene Einstellungen: lightStealth an, ein Seed sowie Zeitzone und Sprache passend zur Exit-IP. Mit lightStealth (dem Standard) wählt der Seed das Geräteprofil aus einer kleinen Auswahl, die CPU-Kerne, Arbeitsspeicher und Pixel-Ratio variiert; Canvas, WebGL und Audio sind die der Maschine, auf der die Session läuft. Setzen Sie lightStealth: false für eine vollständige Persona pro Seed: Canvas- und WebGL-Readbacks bekommen aus dem Seed ein Rauschen pro Site, und GPU-Strings, Bildschirm und Audio-Einstellungen (Sample-Rate, Latenz) folgen der Persona. Ohne identity oder fingerprint erhält jede Session einen zufälligen Seed und eine neue IP.

Mit identity: "account-42" kommen Sie in späteren Sessions mit demselben Geräteprofil zurück, und zwar auf derselben IP, solange diese Residential-IP online bleibt – genau das erwartet ein eingeloggter Account. Identitäten gelten nur innerhalb Ihres Accounts: Ein anderer Kunde mit demselben Label erhält seinen eigenen Seed und seine eigene IP. Eine Identität allein speichert keine Cookies; dafür verwenden Sie ein Profil.

Profile: einmal anmelden

Ein Profil speichert Cookies, localStorage und IndexedDB einer Session unter einem Namen, sodass die nächste Session mit diesem Namen bereits angemeldet startet. Übergeben Sie profile: { name: "shop-account", persist: true }, um es zu laden und beim Ende der Session zurückzuspeichern, oder nur profile: "shop-account", um es schreibgeschützt zu laden. Die erste Session mit einem neuen Namen startet leer und legt das Profil an.

javascript
// Every run: the same body. The first one starts signed out; sign in, then close the browser
// and the session saves the cookies and site storage. Every later run starts signed in.
const res = await fetch("https://www.clearcotelabs.com/api/v1/browsers", {
  method: "POST",
  headers: { authorization: "Bearer cc_live_...", "content-type": "application/json" },
  body: JSON.stringify({ profile: { name: "shop-account", persist: true }, country: "de" }),
});
  • Gleiches Gerät, gleiche IP. Ein Profil bringt seine eigene Identität mit (profile:<name>), sodass die Site denselben Fingerprint sieht und, solange diese IP online bleibt, dieselbe Residential-IP – wie bei einem wiederkehrenden Kunden. Übergeben Sie selbst identity oder fingerprint, wenn Sie etwas anderes wollen, und behalten Sie zwischen den Läufen dasselbe Land bei.
  • Immer nur ein Schreiber. Nur eine laufende Session darf in ein Profil speichern; eine zweite mit persist: true erhält 409 PROFILE_IN_USE. Schreibgeschützte Sessions können parallel laufen und sehen den zuletzt gespeicherten Stand.
  • Gespeichert wird beim Ende der Session, egal ob Sie den Browser schließen, die Verbindung trennen, ihn stoppen oder ein Limit die Session beendet. Ist der Browser abgestürzt, bleibt der zuvor gespeicherte Stand erhalten, statt durch einen unvollständigen ersetzt zu werden. Session-Cookies (ohne Ablaufdatum) werden verworfen, so wie ein echter Browser sie beim Neustart verwirft.
  • Bis etwa 3,5 MB komprimiert. Wird es durch die IndexedDB einer Site größer, bleibt die IndexedDB außen vor; Cookies und localStorage werden trotzdem gespeichert.
  • Privat. Ein Profil gehört nur Ihnen („shop-account“ eines anderen Kunden ist ein anderes Profil), wird verschlüsselt gespeichert und nur an den Server übergeben, auf dem Ihre Session läuft. Auflisten mit GET /api/v1/browsers/profiles, löschen mit DELETE /api/v1/browsers/profiles/<name>, oder Sie nutzen das Dashboard.

Schon anderswo angemeldet? Cookie-Sync kopiert diese Cookies in ein Profil, sodass auch die erste Session angemeldet startet.

Release pinnen

Sessions laufen mit dem aktuellen Clearcote-Release. Für ein älteres übergeben Sie version: das vollständige Release ("152.0.7977.82-r21"), nur den Rebuild ("r21"), eine Chromium-Version oder Major-Version ("152" wählt deren neuesten Build) oder "latest". Es sind dieselben Releases, die die SDK-Option version herunterlädt – eine gehostete Session und ein lokaler Lauf mit demselben Pin verwenden also denselben Build.

javascript
const res = await fetch("https://www.clearcotelabs.com/api/v1/browsers", {
  method: "POST",
  headers: { authorization: "Bearer cc_live_...", "content-type": "application/json" },
  body: JSON.stringify({ identity: "account-1", version: "152.0.7977.82-r21" }),
});
const { connectUrl, engine, warnings } = await res.json();
// engine   -> { version: "152.0.7977.82", revision: "r21", pinned: true }
// warnings -> [ "This session runs 152.0.7977.82-r21, older than the current ... " ]
  • Prüfen Sie warnings. Einem älteren Release fehlt, was spätere Releases hinzugefügt haben. Optionen und Fixes, die danach kamen, können fehlen oder stillschweigend ignoriert statt abgelehnt werden. Eine Einstellung, die auf dem aktuellen Release funktioniert, kann auf einem gepinnten also unbemerkt wirkungslos bleiben.
  • engine in der Antwort nennt immer das Release, mit dem die Session läuft, ob gepinnt oder nicht.
  • Ein Release, das es nicht gibt, ergibt einen 400 mit dem Code UNKNOWN_VERSION, und die Meldung listet die Releases auf, die Sie wählen können.
  • Die erste Session auf einem Release, das unsere Server noch nicht verwendet haben, kann bis zu einer Minute länger zum Starten brauchen, während der Build geladen wird. Weitere Sessions darauf starten so schnell wie jede andere.

Startseite und Werbeblocker

  • url öffnet eine Seite im ersten Tab, bevor Sie sich verbinden – sie lädt also schon, wenn sich Ihr Skript anhängt.
  • adblock: true lehnt Requests an bekannte Werbe-, Ad-Verification- und Analytics-Hosts ab, bevor sie überhaupt gestellt werden, sodass sie nie berechnet werden. Die Liste ist bewusst konservativ (Tag-Manager, Consent-Tools, Login-SDKs und CAPTCHAs bleiben unangetastet), aber einige Sites bemerken fehlende Werbung; lassen Sie die Option dort aus, wo das eine Rolle spielt.