Skip to main content

Python SDK for BaaS (Browser as a Service) - managed headless browsers via CDP

Project description

dawg-baas

Minimal Python SDK for BaaS (Browser as a Service).

Get browser access via CDP WebSocket URL. Use with any automation framework.

Installation

pip install dawg-baas

Usage

from dawg_baas import Baas

# Create browser, get ws_url
baas = Baas(api_key="your_key")
ws_url = baas.create()

# Use with your framework (Playwright, Puppeteer, Selenium, etc.)
browser = playwright.chromium.connect_over_cdp(ws_url)
# ... your code ...

# Release when done
baas.release()

Context Manager

from dawg_baas import Baas

with Baas(api_key="your_key") as ws_url:
    browser = playwright.chromium.connect_over_cdp(ws_url)
    # ... your code ...
# auto-released

With Proxy

baas = Baas(api_key="your_key")
ws_url = baas.create(proxy="socks5://user:pass@host:port")

Async

from dawg_baas import AsyncBaas

async with AsyncBaas(api_key="your_key") as ws_url:
    browser = await playwright.chromium.connect_over_cdp(ws_url)
    # ...

Or manually:

baas = AsyncBaas(api_key="your_key")
ws_url = await baas.create()
# ...
await baas.release()

API

Baas(api_key, base_url=None, timeout=60, poll_interval=2)

  • api_key - Your API key (required)
  • base_url - Service URL (default: http://37.195.230.102:8000)
  • timeout - Max seconds to wait for browser (default: 60)
  • poll_interval - Seconds between ready checks (default: 2)

Methods

  • create(proxy=None) -> str - Create browser, returns ws_url
  • release() - Release browser back to pool
  • close() - Close HTTP session

Properties

  • browser_id - Current browser ID
  • session_id - Current session ID

AsyncBaas

Same as Baas, but async.

Exceptions

from dawg_baas import BaasError, AuthError, RateLimitError, BrowserNotReadyError

try:
    with Baas(api_key="bad_key") as ws_url:
        pass
except AuthError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limit, retry after {e.retry_after}s")
except BrowserNotReadyError:
    print("Browser didn't start in time")

Examples

Playwright

from playwright.sync_api import sync_playwright
from dawg_baas import Baas

with Baas(api_key="your_key") as ws_url:
    with sync_playwright() as p:
        browser = p.chromium.connect_over_cdp(ws_url)
        page = browser.contexts[0].pages[0]
        page.goto("https://example.com")
        print(page.title())
        browser.close()

Selenium (with CDP)

from selenium import webdriver
from dawg_baas import Baas

with Baas(api_key="your_key") as ws_url:
    options = webdriver.ChromeOptions()
    options.debugger_address = ws_url.replace("ws://", "").split("/")[0]
    driver = webdriver.Chrome(options=options)
    driver.get("https://example.com")
    print(driver.title)
    driver.quit()

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dawg_baas-0.1.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file dawg_baas-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dawg_baas-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for dawg_baas-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a6d0941339abfc11e330ac5f5bbfcdef7930e8225c77e7573075e27b64a4364f
MD5 34c8e322d6b559f7005435c57c5970c7
BLAKE2b-256 320a364feb19f1d85c62dbef256518cf99c0ad842f0b06d79e622ae7307a8bb2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page