Morpho Browser

واجهة API للأتمتة

شغّل ملفات تعريف Morpho Browser من سكربتاتك الخاصة وتحكّم بها عبر Playwright أو Puppeteer أو Selenium.

الأساسيات

تعمل الواجهة داخل تطبيق سطح المكتب على العنوان http://127.0.0.1:7777 ولا تقبل الاتصالات إلا من جهازك. انسخ مفتاح API من صفحة «Automation API» في التطبيق وأرسله مع كل طلب، في إحدى هذه الترويسات:

Authorization: Bearer YOUR_API_KEY
X-Morpho-Token: YOUR_API_KEY

نقاط النهاية

الطريقةالمسارالوظيفة
GET/api/v1/profilesيعرض ملفات التعريف: المعرّف والاسم والمحرك وما إذا كان مفتوحًا.
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 في التطبيق في أي وقت؛ ويتوقف المفتاح القديم عن العمل فورًا.