Morpho Browser

API d’automatisation

Lancez des profils Morpho Browser depuis vos propres scripts et contrôlez-les avec Playwright, Puppeteer ou Selenium.

Principes de base

L’API s’exécute dans l’application de bureau à l’adresse http://127.0.0.1:7777 et n’accepte que les connexions provenant de votre propre PC. Copiez la clé d’API depuis la page « Automation API » de l’application et envoyez-la avec chaque requête, dans l’un des en-têtes suivants :

Authorization: Bearer YOUR_API_KEY
X-Morpho-Token: YOUR_API_KEY

Points de terminaison

MéthodeCheminFonction
GET/api/v1/profilesListe les profils : ID, nom, moteur et état (ouvert ou non).
POST/api/v1/profiles/{id}/startDémarre un profil et renvoie son ws_endpoint. Attend jusqu’à ?timeout=60 secondes, 180 au maximum.
GET/api/v1/profiles/{id}Affiche l’état, avec l’adresse de connexion lorsque le profil est ouvert.
POST/api/v1/profiles/{id}/stopFerme le profil.

Démarrer un profil avec curl

curl -X POST -H "Authorization: Bearer $MORPHO_KEY" \
  "http://127.0.0.1:7777/api/v1/profiles/PROFILE_ID/start?timeout=60"
# -> {"ws_endpoint": "ws://127.0.0.1:<port>/devtools/browser/...", ...}

Se connecter avec Playwright (Python)

import requests
from playwright.sync_api import sync_playwright

API = "http://127.0.0.1:7777/api/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

ws = requests.post(f"{API}/profiles/PROFILE_ID/start", headers=HEADERS,
                   params={"timeout": 60}).json()["ws_endpoint"]

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(ws)
    context = browser.contexts[0]          # the profile's own context
    page = context.new_page()
    page.goto("https://example.com")
    print(page.title())

requests.post(f"{API}/profiles/PROFILE_ID/stop", headers=HEADERS)

Se connecter avec Puppeteer (Node.js)

import puppeteer from "puppeteer-core";

const API = "http://127.0.0.1:7777/api/v1";
const headers = { Authorization: "Bearer YOUR_API_KEY" };

const res = await fetch(`${API}/profiles/PROFILE_ID/start?timeout=60`, { method: "POST", headers });
const { ws_endpoint } = await res.json();

const browser = await puppeteer.connect({ browserWSEndpoint: ws_endpoint });
const page = await browser.newPage();
await page.goto("https://example.com");
console.log(await page.title());
browser.disconnect();   // leaves the profile running; stop it with POST .../stop

Remarques

  • Seuls les profils Chromium renvoient un point de terminaison DevTools.
  • Le profil conserve sa propre empreinte et son proxy pendant que votre script le pilote.
  • Pour Selenium, rattachez ChromeDriver à l’hôte et au port indiqués dans le ws_endpoint (debuggerAddress).
  • Vous pouvez remplacer la clé d’API dans l’application à tout moment ; l’ancienne clé cesse immédiatement de fonctionner.