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: https://dawgswarm.ru)
  • 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.1-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dawg_baas-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.3 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 016274403c11b5e1a6aecf05c95815c92fc714aa146b4b737b382799a83a681c
MD5 44df8efc46199f026682b1415a4e8819
BLAKE2b-256 c178daa6b15b780d66f8e03a765a151c634506871679b69a72e715595926e7dc

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