Saltar al contenido

Opciones e identidades

Lo que puedes configurar al iniciar un navegador alojado: las opciones, la configuración stealth predeterminada y las identidades, los perfiles que mantienen tu sesión iniciada, una versión fijada y la página de inicio.

Opciones

Todas son opcionales. Envíalas como cuerpo JSON de la llamada de creación.

CampoTipoSignificado
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.

Configuración stealth predeterminada e identidades

Cada sesión parte de los ajustes de la página de configuración recomendada: lightStealth activado, un seed, y zona horaria e idioma que siguen a la IP de salida. Con lightStealth (el valor por defecto), el seed elige el perfil de dispositivo dentro de un conjunto pequeño que varía los núcleos de CPU, la memoria y el pixel ratio; canvas, WebGL y audio son los de la máquina donde corre la sesión. Define lightStealth: false para tener una persona completa por seed: las lecturas de canvas y WebGL reciben ruido por sitio derivado del seed, y las cadenas de la GPU, la pantalla y la configuración de audio (frecuencia de muestreo, latencia) siguen a la persona. Sin identity ni fingerprint, cada sesión recibe un seed aleatorio y una IP nueva.

Pasa identity: "account-42" para volver en sesiones posteriores con el mismo perfil de dispositivo, y con la misma IP mientras esa IP residencial siga en línea, que es lo que espera una cuenta con la sesión iniciada. Las identidades son privadas de tu cuenta: otro cliente que use la misma etiqueta recibe su propio seed y su propia IP. Por sí sola, una identidad no conserva cookies: para eso, usa un perfil.

Perfiles: inicia sesión una sola vez

Un perfil guarda las cookies, el localStorage y el IndexedDB de una sesión bajo un nombre, así la siguiente sesión con ese nombre arranca ya autenticada. Pasa profile: { name: "shop-account", persist: true } para cargarlo y volver a guardarlo cuando termine la sesión, o simplemente profile: "shop-account" para cargarlo en modo de solo lectura. La primera sesión con un nombre nuevo empieza vacía y lo crea.

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" }),
});
  • Mismo dispositivo, misma IP. Un perfil trae su propia identidad (profile:<name>), así que el sitio ve la misma huella digital, y la misma IP residencial mientras esa IP siga en línea, como un cliente que regresa. Si prefieres otra cosa, pasa tú mismo identity o fingerprint, y mantén el mismo país entre ejecuciones.
  • Un solo escritor a la vez. Solo una sesión en ejecución puede guardar en un perfil; una segunda con persist: true recibe 409 PROFILE_IN_USE. Las sesiones de solo lectura pueden correr en paralelo y ven el último estado guardado.
  • Se guarda cuando termina la sesión, ya sea que cierres el navegador, te desconectes, lo detengas o lo termine un límite. Si el navegador se cae, se conserva el estado guardado anterior en lugar de reemplazarlo por uno parcial. Las cookies de sesión (las que no tienen vencimiento) se descartan, igual que las descarta un navegador real al reiniciarse.
  • Hasta unos 3.5 MB comprimidos. Si el IndexedDB de un sitio lo hace más grande, el IndexedDB queda fuera; las cookies y el localStorage se siguen guardando.
  • Privado. Un perfil es solo tuyo (el “shop-account” de otro cliente es un perfil distinto), se almacena cifrado y solo se entrega al servidor que ejecuta tu sesión. Lístalos con GET /api/v1/browsers/profiles, borra uno con DELETE /api/v1/browsers/profiles/<name> o usa el panel.

¿Ya iniciaste sesión en otro lugar? La sincronización de cookies copia esas cookies a un perfil, así que la primera sesión también empieza con la sesión iniciada.

Fijar una versión

Las sesiones ejecutan la versión actual de Clearcote. Para ejecutar una anterior, pasa version: la versión completa ("152.0.7977.82-r21"), solo la recompilación ("r21"), una versión de Chromium o solo su versión mayor ("152" elige el build más reciente de esa versión), o "latest". Son las mismas versiones que descarga la opción version del SDK, así que una sesión alojada y una ejecución local fijadas a la misma versión usan el mismo 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 ... " ]
  • Revisa warnings. Una versión anterior no tiene lo que agregaron las versiones posteriores. Las opciones y correcciones que llegaron después pueden faltar, o ignorarse en silencio en lugar de rechazarse, así que un ajuste que funciona en la versión actual puede no hacer nada, sin avisar, en una versión fijada.
  • El engine de la respuesta siempre indica qué versión ejecuta la sesión, esté fijada o no.
  • Una versión que no existe da un 400 con el código UNKNOWN_VERSION, y el mensaje lista las versiones que puedes elegir.
  • La primera sesión con una versión que nuestros servidores todavía no han usado puede tardar hasta un minuto más en iniciar mientras se descarga el build. Las siguientes sesiones con esa versión arrancan tan rápido como cualquier otra.

Página de inicio y bloqueo de anuncios

  • url abre una página en la primera pestaña antes de que te conectes, así que ya está cargando cuando tu script se conecta.
  • adblock: true rechaza las solicitudes a hosts conocidos de anuncios, de verificación de anuncios y de analítica antes de que se hagan, así que nunca se facturan. La lista es deliberadamente conservadora (no toca los gestores de etiquetas, las herramientas de consentimiento, los SDKs de login ni los CAPTCHAs), pero algunos sitios notan que faltan anuncios; déjalo desactivado donde eso importe.