Saltar al contenido

Automatización

Puppeteer y Playwright, directo a tus perfiles

Cada perfil abierto tiene su propia dirección de depuración. Conecta tu código a ese perfil exacto: con su huella, sus cookies, su proxy. Está en todos los planes, incluido el gratuito.

  1. 1Activa la interfaz local en la aplicación: ajustes, sección «API local». Copia la clave.
  2. 2Pídele que abra un perfil. Responde con una dirección que pertenece solo a ese perfil.
  3. 3Conecta tu código a esa dirección como si fuera un navegador cualquiera.
  4. 4Trabaja como siempre. La huella, las cookies y el proxy ya están puestos.

JavaScript (puppeteer-core)

const puppeteer = require('puppeteer-core');

(async () => {
  // 1. Ask the app for this profile's debugging endpoint.
  const started = await fetch(
    'http://127.0.0.1:50325/api/v1/browser/start?profileId=YOUR_PROFILE_ID',
    { method: 'POST', headers: { 'x-api-token': 'YOUR_API_TOKEN' } },
  ).then((r) => r.json());

  // 2. Attach to it like to any other browser.
  const browser = await puppeteer.connect({
    browserWSEndpoint: started.data.ws,
    defaultViewport: null,
  });

  const [page] = await browser.pages();
  await page.goto('https://example.com');
})();

Python (Playwright)

import requests
from playwright.sync_api import sync_playwright

# 1. Ask the app for this profile's debugging endpoint.
started = requests.post(
    "http://127.0.0.1:50325/api/v1/browser/start",
    params={"profileId": "YOUR_PROFILE_ID"},
    headers={"x-api-token": "YOUR_API_TOKEN"},
).json()

# 2. Attach to it like to any other browser.
with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(started["data"]["ws"])
    page = browser.contexts[0].pages[0]
    page.goto("https://example.com")

Algo que conviene saber antes de conectar

Puppeteer and Playwright turn on Runtime.enable and Page.enable the moment they attach. Runtime.enable puts observers inside Chromium that page scripts can notice. Our own automation builder never turns it on. It turns on Page.enable only while a flow runs, on the tabs the flow uses, so it can answer a page's alert or confirm; a test page that looks for traces saw nothing from it on either engine. If the site you work with checks for this, build the sequence in the app instead.

O hazlo sin escribir código

Dieciséis tipos de paso en una ventana: abrir, pulsar, escribir, esperar, leer, ramificar. Sin observadores detectables y sin instalar nada.

Ver qué hace la aplicación