Cơ bản
API chạy bên trong ứng dụng máy tính tại http://127.0.0.1:7777 và chỉ chấp nhận kết nối từ máy tính của bạn. Sao chép khóa API từ trang “Automation API” trong ứng dụng và gửi kèm theo mỗi yêu cầu, trong một trong các header sau:
Authorization: Bearer YOUR_API_KEY
X-Morpho-Token: YOUR_API_KEY
Endpoint
| Phương thức | Đường dẫn | Chức năng |
|---|---|---|
GET | /api/v1/profiles | Liệt kê hồ sơ: ID, tên, engine và trạng thái đang mở hay không. |
POST | /api/v1/profiles/{id}/start | Khởi chạy hồ sơ và trả về ws_endpoint của nó. Chờ tối đa ?timeout=60 giây, nhiều nhất là 180. |
GET | /api/v1/profiles/{id} | Hiển thị trạng thái, kèm địa chỉ kết nối khi hồ sơ đang mở. |
POST | /api/v1/profiles/{id}/stop | Đóng hồ sơ. |
Khởi chạy hồ sơ bằng 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/...", ...}
Kết nối bằng 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)
Kết nối bằng 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
Lưu ý
- Chỉ hồ sơ Chromium mới trả về endpoint DevTools.
- Hồ sơ vẫn giữ fingerprint và proxy riêng trong khi script của bạn điều khiển nó.
- Với Selenium, gắn ChromeDriver vào host và cổng lấy từ ws_endpoint (debuggerAddress).
- Bạn có thể thay khóa API trong ứng dụng bất cứ lúc nào; khóa cũ sẽ ngừng hoạt động ngay lập tức.