Ir para o conteúdo

Automação

Puppeteer e Playwright, direto nos seus perfis

Cada perfil aberto tem o seu próprio endereço de depuração. Conecte o seu código exatamente a esse perfil: com a impressão digital dele, os cookies dele, o proxy dele. Está em todos os planos, inclusive o gratuito.

  1. 1Ligue a interface local no aplicativo: ajustes, seção «API local». Copie a chave.
  2. 2Peça para abrir um perfil. A resposta traz um endereço que pertence só a ele.
  3. 3Conecte o seu código a esse endereço como a um navegador comum.
  4. 4Trabalhe como sempre. A impressão digital, os cookies e o proxy já estão lá.

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

Ou monte sem escrever código

Dezesseis tipos de passo numa janela: abrir, clicar, digitar, esperar, ler, ramificar. Sem observadores detectáveis e sem instalar nada.

Ver o que o aplicativo faz