ARMANOS

Automation

Puppeteer and Playwright, straight into your profiles

Every open profile has its own debugging endpoint. Connect your own code to exactly that profile: its fingerprint, its cookies, its proxy. This is in every plan, including the free one.

  1. 1Turn the local interface on in the app: Settings, then Local API. Copy the key.
  2. 2Ask it to open a profile. It answers with an address for that profile alone.
  3. 3Connect your code to that address as if it were an ordinary browser.
  4. 4Work as usual. The fingerprint, cookies and proxy are already in place.

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

One thing to know before you connect

Puppeteer and Playwright turn on Runtime.enable and Page.enable the moment they attach. Those put observers inside Chromium that page scripts can notice. Our own automation builder never turns them on, which is why a profile it drives looks exactly like one driven by hand. If the site you work with checks for this, build the sequence in the app instead.

Or build it without code at all

Sixteen kinds of step in a window: open, click, type, wait, read, branch. No detectable observers, and nothing to install.

See what the app can do