این مخزن یک مونوریپو شامل سه پکیج اصلی است:
/workspace/backend— بکاند Fastify + TypeScript + WebSocket + Playwright/workspace/extension— افزونه Firefox (Manifest V2) با TypeScript (bundled via esbuild)/workspace/shared— typeها و JSON Schema پروتکل WebSocket
- Node.js (ترجیحاً 20+)
- برای Playwright: وابستگیهای سیستمعامل (در devcontainer نصب میشود)
در ریشه:
npm installnpm run dev- بکاند:
http://localhost:8080و WS رویws://localhost:8080/ws - افزونه: خروجی build در
/workspace/extension/dist
npm run buildبکاند بهصورت پیشفرض deny-by-default است و فقط دامنههایی که در allowlist هستند را قبول میکند:
- فایل نمونه:
/workspace/backend/.env.example - متغیر:
ALLOWLIST_DOMAINS=example.com,*.example.com - برای توسعه (خطرناک):
ALLOWLIST_ALL=true
جزئیات بیشتر در:
/workspace/docs/security.md
برای جلوگیری از سوءاستفاده، میتوانید یک توکن ثابت فعال کنید:
- در بکاند:
SHARED_SECRET=...(درbackend/.env.example) - برای WebSocket: افزونه بعد از اتصال، پیام
authرا ارسال میکند. - برای HTTP (endpointهای تست): باید یکی از اینها را بفرستید:
x-solo-secret: <token>- یا
Authorization: Bearer <token>
typeها در:
/workspace/shared/src/ws-protocol.ts
و JSON Schema در:
/workspace/shared/schema/ws-protocol.schema.json
درخواست HTTP ساده از سمت بکاند (با redirect=manual)، خروجی به صورت bodyBase64.
با Playwright صفحه باز میشود، سپس:
src/hrefنسبی → absolute rewrite میشود- HTML با
sanitize-htmlامنسازی میشود (حذفscriptو handlerها و …)
یک session در Playwright ساخته میشود و سپس فریمها به صورت پیامهای frame (JPEG base64) روی WS ارسال میشوند.
- ابتدا
npm run buildرا اجرا کنید. - در Firefox:
about:debugging#/runtime/this-firefox→Load Temporary Add-on… - فایل
manifest.jsonرا از مسیر زیر انتخاب کنید:/workspace/extension/dist/manifest.json
در popup:
- Fetch / Render / Stream
/workspace/docs/troubleshooting.md/workspace/docs/security.md/workspace/docs/diagrams.md