انتقل إلى المحتوى
الرئيسية / Kit / المتصفح
Browserخدمة Kit

Chromium على عنوان URL

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

PROJECT-CONTAINER-browser-1.SERVER.containers.hoody.com
GET /start?browser_id=main&stealth=true&timezoneId=America/New_York
200 OK

# Spawn a stealth Chromium with a fingerprint

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

[ "browser_id": "main",

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

"stealth": true ]

 

# Navigate — or pass the WS URL to Puppeteer

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

200 OK

 

# Capture; already works with your existing CDP client

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

1920x1080 PNG

الرئيسية / Kit / المتصفح / عرض
ثلاث فئات نقاط نهاية، عنوان 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 في الصفحة، أعِد بيانات منظمة

POST /eval runs arbitrary JavaScript in page context. GET /html and GET /text return the rendered DOM and visible text. No selector library, no headless-browser SDK.

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

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

GET /screenshot returns PNG, JPEG, or base64 — fullPage or viewport. GET /pdf renders to A4/Letter with landscape + margins. Binary comes back directly; no headless-Chrome flags to wrangle.

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

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

GET /devtools-url returns three URLs: the CDP WebSocket (for Puppeteer / Playwright / any CDP client), the DevTools HTTP API, and the DevTools frontend UI. Open the frontend URL in a browser tab to watch what the headless instance sees.

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

الرئيسية / Kit / المتصفح / API
API

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

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

browser-api.sh

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

 

URL="https://proj-dev-browser-1.hoody.com"

ID="main"

 

# 1. Spawn a stealth Chromium

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

 

# 2. Navigate

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

 

# 3. Extract structured data

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

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

-d '["script":"document.title"]'

# > "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://proj-dev-browser-1.hoody.com';

const id = 'main';

 

// 1. Spawn a stealth Chromium

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

const [ webSocketDebuggerUrl ] = await start.json();

 

// 2. Navigate

await fetch(`$[BASE]/browse?browser_id=$[id]&url=https://hoody.com`);

 

// 3. Extract structured data

const r = await fetch(`$[BASE]/eval?browser_id=$[id]`, [

method: 'POST',

headers: [ 'Content-Type': 'application/json' ],

body: JSON.stringify([ script: 'document.title' ])

]);

const title = 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://proj-dev-browser-1.hoody.com'

id = 'main'

 

# 1. Spawn a stealth Chromium

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

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

 

# 2. Navigate

requests.get(f'[BASE]/browse', params=['browser_id': id, 'url': 'https://hoody.com'])

 

# 3. Extract structured data

r = requests.post(f'[BASE]/eval',

params=['browser_id': id],

json=['script': 'document.title'])

title = r.json()

# => "Example Domain"

 

# 4. Release the slot

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

الرئيسية / Kit / المتصفح / الاستخدام
يُستخدم في

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

طبقة 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}

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

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

الرئيسية / Kit / المتصفح / نقاط النهاية
API

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

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

التفاعل

[count, plural, zero [لا نقاط نهاية] one [# نقطة نهاية] two [# نقطة نهاية] few [# نقاط نهاية] many [# نقطة نهاية] other [# نقطة نهاية]]'

curl -X POST /eval -d '["script":"document.title"]' → "Example"

POST
/browseتنقّل بـ JSON body — waitUntil والمهلة والمرجع والترويسات.
GET
/browse?url=تنقل مختصر لاستخدام curl من الصدفة.
POST
/evalتنفيذ JavaScript (عادي أو base64) في سياق الصفحة، إعادة النتيجة.
GET
/eval?script=تنفيذ سكريبت مضمّن لقراءات مفردة مثل document.title.
GET
/htmlإعادة document.documentElement.outerHTML — معروض، لا خام.
GET
/textإعادة document.body.innerText — ما يقرأه الإنسان.
GET
/screenshotPNG / JPEG / base64 — fullPage مدعوم، جودة JPEG 0-100.
GET
/pdfتحويل إلى PDF — A4/Letter، أفقي، هوامش، printBackground.

حالة الجلسة

[count, plural, zero [لا نقاط نهاية] one [# نقطة نهاية] two [# نقطة نهاية] few [# نقاط نهاية] many [# نقطة نهاية] other [# نقطة نهاية]]'

curl -X POST /cookies -d '[[name,value,domain,...]]' → [ added: 4 ]

GET
/cookiesسرد ملفات تعريف الارتباط، مصفّاة اختياريًا حسب عنوان URL.
POST
/cookiesإضافة ملفات تعريف ارتباط — اسم، قيمة، نطاق، مسار، httpOnly، secure، sameSite.
DELETE
/cookiesمسح جميع ملفات تعريف الارتباط للنسخة.
GET
/metadataبيانات النسخة الكاملة — الجلسة، إعدادات العرض، عناوين DevTools، قائمة علامات التبويب.
GET
/tabsسرد علامات التبويب المفتوحة مع id وurl وtitle وisActive.
POST
/tab/closeإغلاق علامة تبويب بالمعرّف — أو علامة التبويب النشطة إن لم تُحدَّد.

الاستبطان

[count, plural, zero [لا نقاط نهاية] one [# نقطة نهاية] two [# نقطة نهاية] few [# نقاط نهاية] many [# نقطة نهاية] other [# نقطة نهاية]]'

curl /devtools-url?browser_id=main → [ ws, http, frontend ]

GET
/devtools-urlإعادة CDP WebSocket + DevTools HTTP + عناوين URL واجهة المستخدم.
GET
/consoleآخر 500 إدخال في وحدة التحكم — log، error، warn، info.
GET
/networkآخر 500 إدخال شبكة — الطريقة، URL، الحالة، نوع المورد.
GET
/historyسجل تصفح مستمر مقسّم على صفحات مع فلاتر النطاق والوقت.
DELETE
/historyحذف إدخالات المحفوظات المطابقة للفلتر.

دورة الحياة

[count, plural, zero [لا نقاط نهاية] one [# نقطة نهاية] two [# نقطة نهاية] few [# نقاط نهاية] many [# نقطة نهاية] other [# نقطة نهاية]]'

curl /start?browser_id=main&stealth=true → [ ws, stealth: true ]

GET
/startإنشاء أو استئناف نسخة مع browser_id والبصمة والتخفي والوكيل وإعدادات العرض.
GET
/stopإيقاف نسخة مؤقتاً — الحالة تبقى. استخدم /restart للاستئناف.
GET
/restartإيقاف وإعادة تشغيل مع ضبط اختياري محدَّث.
GET
/shutdownإنهاء النسخة وتحرير الفتحة. ?force=true يقتل النسخ العالقة.

بالإضافة إلى GET /health وGET /metrics الموروثة من المنصة على كل خدمة Kit في Hoody.

الرئيسية / Kit / المتصفح / القدرات
القدرات

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

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

Fingerprint spoofing
Patchright stealth
CDP WebSocket
Proxy (SOCKS5/HTTP)
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Fingerprint spoofing
Patchright stealth
CDP WebSocket
Proxy (SOCKS5/HTTP)
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Fingerprint spoofing
Patchright stealth
CDP WebSocket
Proxy (SOCKS5/HTTP)
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Fingerprint spoofing
Patchright stealth
CDP WebSocket
Proxy (SOCKS5/HTTP)
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
POST /cookies auth
JS eval in page
PNG / JPEG / PDF capture
Mobile fingerprints
Tablet viewports
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Persistent browser_id
POST /cookies auth
JS eval in page
PNG / JPEG / PDF capture
Mobile fingerprints
Tablet viewports
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Persistent browser_id
POST /cookies auth
JS eval in page
PNG / JPEG / PDF capture
Mobile fingerprints
Tablet viewports
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Persistent browser_id
POST /cookies auth
JS eval in page
PNG / JPEG / PDF capture
Mobile fingerprints
Tablet viewports
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Persistent browser_id

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

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

وضع التخفي

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

مرور CDP

GET /devtools-url returns the WebSocket URL, DevTools HTTP API, and frontend UI. Existing Puppeteer or Playwright code keeps working — connect, don't rewrite.

الوكيل وDoH

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

قنوات Chromium

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

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

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

الرئيسية / Kit / المتصفح / البدء

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

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

اقرأ التوثيق