Morpho Browser

自動化API

独自のスクリプトからMorpho Browserのプロファイルを起動し、Playwright、Puppeteer、Seleniumで操作できます。

基本

APIはデスクトップアプリ内の http://127.0.0.1:7777 で動作し、お使いのPCからの接続のみを受け付けます。アプリの「Automation API」ページからAPIキーをコピーし、すべてのリクエストで次のいずれかのヘッダーに含めて送信してください。

Authorization: Bearer YOUR_API_KEY
X-Morpho-Token: YOUR_API_KEY

エンドポイント

メソッドパス機能
GET/api/v1/profilesプロファイルの一覧を返します:ID、名前、エンジン、起動中かどうか。
POST/api/v1/profiles/{id}/startプロファイルを起動し、そのws_endpointを返します。?timeout=60で指定した秒数まで待機します(最大180秒)。
GET/api/v1/profiles/{id}ステータスを表示します。プロファイルが起動中の場合は接続アドレスも表示します。
POST/api/v1/profiles/{id}/stopプロファイルを閉じます。

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/...", ...}

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)

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

注意事項

  • DevToolsエンドポイントを返すのはChromiumプロファイルのみです。
  • スクリプトで操作している間も、プロファイルは独自のフィンガープリントとプロキシを維持します。
  • Seleniumの場合は、ws_endpointのホストとポート(debuggerAddress)にChromeDriverを接続してください。
  • APIキーはアプリでいつでも再発行できます。古いキーは即座に使用できなくなります。