انتقل إلى المحتوى
Chromium كعنوان URL
انتحال بصمة المتصفح
التحكم في علامات التبويب
Screenshot API
تنفيذ JavaScript
اعتراض الشبكة
Chrome DevTools Protocol
متوافق مع Puppeteer
Chromium كعنوان URL
انتحال بصمة المتصفح
التحكم في علامات التبويب
Screenshot API
تنفيذ JavaScript
اعتراض الشبكة
Chrome DevTools Protocol
متوافق مع Puppeteer
Chromium كعنوان URL
انتحال بصمة المتصفح
التحكم في علامات التبويب
Screenshot API
تنفيذ JavaScript
اعتراض الشبكة
Chrome DevTools Protocol
متوافق مع Puppeteer
Chromium كعنوان URL
انتحال بصمة المتصفح
التحكم في علامات التبويب
Screenshot API
تنفيذ JavaScript
اعتراض الشبكة
Chrome DevTools Protocol
متوافق مع Puppeteer
Browserخدمة Kit

Chromium على عنوان URL

Chromium بلا واجهة أو مرئي، قابل للتحكم عبر HTTP API مسطح. وضع التخفي افتراضياً، CDP WebSocket متاح، يعمل مع Puppeteer.

abc123-def456-browser-1.node-us-1.containers.hoody.com
GET /start?browser_id=main&stealth=true&timezoneId=America/New_York
200 OK

1 · إطلاق نسخة متخفية من Chromium

$ curl "/start?browser_id=main&stealth=true&timezoneId=America/New_York&locale=en-US"

{ "browser_id": "main",

"webSocketDebuggerUrl": "ws://.../devtools/browser/...",

"stealth": true }

 

2 · انتقل إلى أي عنوان URL

$ curl "/browse?browser_id=main&url=https://hoody.com"

200 OK

 

3 · التقاط لقطة شاشة لكامل الصفحة

$ curl "/screenshot?browser_id=main&format=png" -o shot.png

1920x1080 PNG

ثلاث فئات نقاط نهاية، عنوان URL واحد

تشغيل متصفح حقيقي والمراقبة والفحص عبر HTTP

كل نسخة متصفح تكشف نفس الأوليات التي يعتمد عليها Puppeteer وPlaywright — تنقل، DOM، لقطات شاشة، CDP.

01 / 05

ابدأ نسخة، وجّهها نحو عنوان URL

GET /start spawns a stealth Chromium with your fingerprint. GET /browse?url=… loads a page. One HTTP roundtrip, no driver install, no docker image to maintain.

curl /start?stealth=true → ready
02 / 05

نفّذ JS في الصفحة، أعِد بيانات منظمة

اسحب المحتوى باستخدام /eval أو /html أو /text — اقرأ document.title أو اكشط DOM بالكامل.

POST /eval → [ "Headline 1", "Headline 2", … ]
03 / 05

التقط لقطة شاشة أو PDF للصفحة الحالية

التقط لقطة للصفحة بصيغة PNG أو JPEG أو PDF، لكامل الصفحة أو لإطار العرض فقط.

GET /screenshot?fullPage=true → PNG binary
04 / 05

احصل على عناوين CDP، مرّرها لأي شيء

اقرأ مخزني console والشبكة المؤقتين بسعة 500 إدخال إضافةً إلى البيانات الوصفية للنسخة بغرض التصحيح.

GET /devtools-url → [ ws, http, frontend ]
05 / 05

لقطة شاشة ← قرار ← نقر، في حلقة

الشكل الذي تتوقعه كل نماذج Computer-Use: لقطة شاشة، لقطة DOM، طريقة للنقر على (x, y). المتصفح يعرض هذه عبر HTTP عادي — ضعه خلف Claude Computer Use أو Operator من OpenAI أو وكيلك الخاص.

حلقة: لقطة شاشة ← eval('click(x,y)')
قبل· متصفح بلا واجهة تقليدي

docker run chromium + fonts + fingerprint patches

بعد· Hoody Browser

curl /start?stealth=true → ready

API

تشغيل Chromium وتشغيله وإيقافه عبر HTTP

كل نقطة نهاية تعيد JSON حتمياً أو ثنائياً. بلا تحليل stderr، بلا ملفات /tmp، بلا ظروف تسابق.

browser-api.sh

# Full Browser flow — start, navigate, extract, shutdown

 

URL="https://abc123-def456-browser-1.node-us-1.containers.hoody.com"

ID="main"

 

# 1. Spawn a stealth Chromium (Patchright)

curl -s "$URL/start?browser_id=$ID&stealth=true"

 

# 2. Navigate to a page

curl -s "$URL/browse?browser_id=$ID&url=https://example.com"

 

# 3. Read the page title back

curl -s -X POST "$URL/eval?browser_id=$ID" \

-H 'Content-Type: application/json' \

-d '{"script":"document.title"}'

# > { "result": "Example Domain" }

 

# 4. Release the slot

curl -s "$URL/shutdown?browser_id=$ID"

browser-api.js

// Full Browser flow — start, navigate, extract, shutdown

const BASE = 'https://abc123-def456-browser-1.node-us-1.containers.hoody.com';

const id = 'main';

 

// 1. Spawn a stealth Chromium (Patchright)

const start = await fetch(`${BASE}/start?browser_id=${id}&stealth=true`);

const { webSocketDebuggerUrl } = await start.json();

 

// 2. Navigate to a page

await fetch(`${BASE}/browse?browser_id=${id}&url=https://example.com`);

 

// 3. Read the page title back

const r = await fetch(`${BASE}/eval?browser_id=${id}`, {

method: 'POST',

headers: { 'Content-Type': 'application/json' },

body: JSON.stringify({ script: 'document.title' })

});

const { result } = await r.json();

// => "Example Domain"

 

// 4. Release the slot

await fetch(`${BASE}/shutdown?browser_id=${id}`);

browser_api.py

# Full Browser flow — start, navigate, extract, shutdown

import requests

 

BASE = 'https://abc123-def456-browser-1.node-us-1.containers.hoody.com'

id = 'main'

 

# 1. Spawn a stealth Chromium (Patchright)

start = requests.get(f'{BASE}/start', params={'browser_id': id, 'stealth': 'true'})

ws = start.json()['webSocketDebuggerUrl']

 

# 2. Navigate to a page

requests.get(f'{BASE}/browse', params={'browser_id': id, 'url': 'https://example.com'})

 

# 3. Read the page title back

r = requests.post(f'{BASE}/eval',

params={'browser_id': id},

json={'script': 'document.title'})

title = r.json()['result']

# => "Example Domain"

 

# 4. Release the slot

requests.get(f'{BASE}/shutdown', params={'browser_id': id})

يُستخدم في

أين تنشر الفرق المتصفح

طبقة HTTP مسطحة فوق Chromium تفتح نقاط تكامل يستحيل تحقيقها بمتصفح بلا واجهة مثبت محلياً.

{01}

خطوط بيانات

استوعب HTML وJSON المعروضة في مستودعك. جدوِل استدعاءات /eval، مرّر النتائج إلى Snowflake أو BigQuery.

{02}

أطر وكلاء الذكاء الاصطناعي

اندمج مع Claude Computer Use أو OpenAI Operator أو أدوات المتصفح في LangChain. لقطة شاشة + eval هو الواجهة.

{03}

سير عمل بمصادقة

شغّل لوحات التحكم المسجّلة — لوحات SaaS وبوابات بنوك وأدوات داخلية. POST /cookies تثبّت الجلسة عبر الطلبات.

{04}

تطبيقات مراجعة

معاينات المتصفح لكل طلب سحب. CI ينشئ نسخة متصفح على البناء المُدرج ويعيد لقطة /devtools.

{05}

مراقبة مجدولة

التقاطات /screenshot و/network مُشغَّلة بـ Cron لرصد وقت التشغيل ومستوى الخدمة ولوحات الأداء.

{06}

لقطات الامتثال

التقاطات موقوتة ومُثبَّتة البصمة لصفحات طرف ثالث للأغراض القانونية والتدقيق والأدلة.

API

23 عملية، 4 مجموعات نقاط نهاية

كل قدرة في المتصفح هي استدعاء HTTP مسطح. متغيرات الطريقة على نفس المسار مُدرجة بشكل منفصل.

التفاعل

8 نقطة نهاية

curl /browse?browser_id=main&url=https://example.com → { tabId, url, created, reused }

GET
/browse?url=إنشاء أو استئناف نسخة مع browser_id والبصمة والتخفي والوكيل وإعدادات العرض.
POST
/browseإيقاف نسخة مؤقتاً — الحالة تبقى. استخدم /restart للاستئناف.
GET
/eval?script=إيقاف وإعادة تشغيل مع ضبط اختياري محدَّث.
POST
/evalإنهاء النسخة وتحرير الفتحة. ?force=true يقتل النسخ العالقة.
GET
/htmlتنقّل بـ JSON body — waitUntil والمهلة والمرجع والترويسات.
GET
/textتنقل مختصر لاستخدام curl من الصدفة.
GET
/screenshotتنفيذ JavaScript (عادي أو base64) في سياق الصفحة، إعادة النتيجة.
GET
/pdfتنفيذ سكريبت مضمّن لقراءات مفردة مثل document.title.

حالة الجلسة

5 نقطة نهاية

curl -X POST /cookies -d '{ cookies: [{ name, value, url }] }' → { added: 2 }

GET
/cookiesإعادة document.documentElement.outerHTML — معروض، لا خام.
POST
/cookiesإعادة document.body.innerText — ما يقرأه الإنسان.
DELETE
/cookiesPNG / JPEG / base64 — fullPage مدعوم، جودة JPEG 0-100.
GET
/historyتحويل إلى PDF — A4/Letter، أفقي، هوامش، printBackground.
DELETE
/historyسرد ملفات تعريف الارتباط، مصفّاة اختياريًا حسب عنوان URL.

الاستبطان

6 نقطة نهاية

curl /devtools-url?browser_id=main → { webSocketDebuggerUrl, devtoolsHttpUrl, devtoolsFrontendUrl }

GET
/metadataإضافة ملفات تعريف ارتباط — اسم، قيمة، نطاق، مسار، httpOnly، secure، sameSite.
GET
/tabsمسح جميع ملفات تعريف الارتباط للنسخة.
POST
/tab/closeبيانات النسخة الكاملة — الجلسة، إعدادات العرض، عناوين DevTools، قائمة علامات التبويب.
GET
/devtools-urlسرد علامات التبويب المفتوحة مع id وurl وtitle وisActive.
GET
/consoleإغلاق علامة تبويب بالمعرّف — أو علامة التبويب النشطة إن لم تُحدَّد.
GET
/networkإعادة CDP WebSocket + DevTools HTTP + عناوين URL واجهة المستخدم.

دورة الحياة

5 نقطة نهاية

curl /start?browser_id=main&stealth=true → { browser_id, webSocketDebuggerUrl, stealth: true }

GET
/startآخر 500 إدخال في وحدة التحكم — log، error، warn، info.
GET
/stopآخر 500 إدخال شبكة — الطريقة، URL، الحالة، نوع المورد.
GET
/restartسجل تصفح مستمر مقسّم على صفحات مع فلاتر النطاق والوقت.
GET
/shutdownحذف إدخالات المحفوظات المطابقة للفلتر.
GET
/api/v1/browser/healthفحص الحيوية والجاهزية — يُقدَّم من الـ API المركزي (api.hoody.com)، وليس من عنوان الحاوية.

24 نقطة نهاية موزّعة على أربعة مجالات وظيفية. 23 منها تعمل على عنوان حاوية الـ browser باستخدام المسارات القصيرة المعروضة؛ أما فحص السلامة فهو الاستثناء الوحيد، ويُقدَّم من الـ API المركزي على api.hoody.com/api/v1/browser/health. تتبع الطرق ما في الوثائق: browse و eval يقبلان GET و POST؛ و cookies يضيف GET و POST و DELETE.

القدرات

التخفي وبصمة المتصفح وCDP — بدون تكاليف الإعداد

المتصفح هو طبقة رفيعة فوق Chromium — كل ما ستثبّته وترقّعه وتراقبه هو معامل استعلام.

Patchright stealth
Fingerprint profiles
CDP WebSocket
Proxy SOCKS5 / HTTP
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Patchright stealth
Fingerprint profiles
CDP WebSocket
Proxy SOCKS5 / HTTP
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Patchright stealth
Fingerprint profiles
CDP WebSocket
Proxy SOCKS5 / HTTP
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Patchright stealth
Fingerprint profiles
CDP WebSocket
Proxy SOCKS5 / HTTP
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Cookie injection
JS eval in page
PNG / JPEG / PDF export
Viewport + DPR
Timezone + locale
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Per-instance browser_id
Cookie injection
JS eval in page
PNG / JPEG / PDF export
Viewport + DPR
Timezone + locale
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Per-instance browser_id
Cookie injection
JS eval in page
PNG / JPEG / PDF export
Viewport + DPR
Timezone + locale
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Per-instance browser_id
Cookie injection
JS eval in page
PNG / JPEG / PDF export
Viewport + DPR
Timezone + locale
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Per-instance browser_id

انتحال بصمة المتصفح

اضبط UA وإعدادات العرض والمنطقة الزمنية واللغة والموقع الجغرافي على /start — أو أشِر إلى fingerprintId.

وضع التخفي

الكشف المضاد Patchright مفعّل بشكل افتراضي لـ Chromium. ليس منيعاً ضد كل موردي الكشف.

مرور CDP

تعيد نقطة النهاية /devtools-url اتصال WebSocket يمكنك التحكم به عبر Puppeteer أو Playwright أو أي عميل CDP.

الوكيل وDoH

بروكسيات SOCKS5 وSO CKS5h وHTTP وHTTPS مع المصادقة وقوائم الاستثناء. DNS-over-HTTPS عبر Cloudflare افتراضياً.

قنوات Chromium

ثبّت أي بناء Chromium — سلسلة الإصدار الكاملة، الإصدار الرئيسي، أو القناة (stable / beta / dev / canary).

مخازن حلقية للتصحيح

آخر 500 إدخال في وحدة التحكم و500 إدخال شبكة لكل نسخة، بالإضافة إلى سجل تصفح مستمر.

أضف متصفحاً حقيقياً إلى حزمتك

المتصفح هو إحدى خدمات Kit المُدرجة مع كل حاوية. بلا تثبيت برامج تشغيل، بلا Puppeteer، بلا إعداد.

اقرأ التوثيق