Morpho Browser

自动化 API

通过你自己的脚本启动 Morpho Browser 环境,并使用 Playwright、Puppeteer 或 Selenium 进行控制。

基础知识

API 运行在桌面应用内部,地址为 http://127.0.0.1:7777,只接受来自你自己电脑的连接。请从应用的“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

说明

  • 只有 Chromium 环境会返回 DevTools 端点。
  • 在脚本控制期间,环境保持其自身的指纹和代理。
  • 对于 Selenium,请将 ChromeDriver 连接到 ws_endpoint 中的主机和端口(debuggerAddress)。
  • 你可以随时在应用中更换 API 密钥;旧密钥会立即失效。