Sari la conținut

Automatizare

Puppeteer și Playwright, direct în profilurile dvs.

Fiecare profil deschis are propria adresă de depanare. Conectați-vă codul exact la acel profil: cu amprenta lui, cookieurile lui, proxyul lui. Este inclus în fiecare plan, inclusiv cel gratuit.

  1. 1Porniți interfața locală în aplicație: setări, secțiunea «API local». Copiați cheia.
  2. 2Cereți deschiderea unui profil. Răspunsul conține o adresă care îi aparține doar lui.
  3. 3Conectați-vă codul la acea adresă ca la un navigator obișnuit.
  4. 4Lucrați ca de obicei. Amprenta, cookieurile și proxyul sunt deja la locul lor.

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")

Un lucru de știut înainte de conectare

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.

Sau faceți-o fără niciun rând de cod

Șaisprezece feluri de pas într-o fereastră: deschide, apasă, scrie, așteaptă, citește, ramifică. Niciun observator detectabil și nimic de instalat.

Vedeți ce știe aplicația