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.
- 1Ligue a interface local no aplicativo: ajustes, seção «API local». Copie a chave.
- 2Peça para abrir um perfil. A resposta traz um endereço que pertence só a ele.
- 3Conecte o seu código a esse endereço como a um navegador comum.
- 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
O Puppeteer e o Playwright ligam Runtime.enable e Page.enable assim que se conectam. Esses domínios colocam observadores dentro do Chromium que os scripts da página conseguem perceber. O nosso próprio construtor de automações nunca os liga, e por isso um perfil conduzido por ele parece igual a um conduzido à mão. Se o site com que você trabalha verifica isso, monte a sequência dentro do aplicativo.
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