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, returnsws_urlrelease()- Release browser back to poolclose()- Close HTTP session
Properties
browser_id- Current browser IDsession_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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
016274403c11b5e1a6aecf05c95815c92fc714aa146b4b737b382799a83a681c
|
|
| MD5 |
44df8efc46199f026682b1415a4e8819
|
|
| BLAKE2b-256 |
c178daa6b15b780d66f8e03a765a151c634506871679b69a72e715595926e7dc
|