| title | Create a Browser |
|---|
import CreateBrowserSnippet from '/snippets/openapi/post-browsers.mdx'; import DeleteBrowserSnippet from '/snippets/openapi/delete-browsers-id.mdx';
Kernel browsers were designed to be lightweight, fast, and efficient for cloud-based browser automations at scale. They can be used as part of the Kernel app platform or connected to from another service with the Chrome DevTools Protocol.
First, install the Kernel SDK: - JavaScript/TypeScript: `npm install @onkernel/sdk` - Python: `pip install kernel`Use our SDK to create a browser:
Then, you can connect to the browser with any Chrome DevTools Protocol framework, such as Playwright or Puppeteer.
// Playwright
const browser = await chromium.connectOverCDP(kernelBrowser.cdp_ws_url);
// Puppeteer
const browser = await puppeteer.connect({
browserWSEndpoint,
defaultViewport: null, // Optional: inherit viewport from the browser
});browser = playwright.chromium.connect_over_cdp(kernel_browser.cdp_ws_url)When you're finished with the browser, you can delete it:
You can also delete the browser by specifiying a timeout when you create the browser.
Once you've connected to the Kernel browser, you can do anything with it.
Kernel browsers launch with a default context and page. Make sure to access the [existing context and page](https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp) (`contexts()[0]` and `pages()[0]`), rather than trying to create a new one. ```typescript Typescript/Javascript import { Kernel } from '@onkernel/sdk'; const kernel = new Kernel();const kernelBrowser = await kernel.browsers.create(); const browser = await chromium.connectOverCDP(kernelBrowser.cdp_ws_url); try { const context = await browser.contexts()[0] || (await browser.newContext()); const page = await context.pages()[0] || (await context.newPage()); await page.goto("https://www.google.com"); const title = await page.title(); } catch (error) { console.error(error); } finally { await browser.close(); await kernel.browsers.deleteByID(kernelBrowser.session_id); }
```Python Python
import kernel
client = Kernel()
kernel_browser = client.browsers.create()
browser = playwright.chromium.connect_over_cdp(kernel_browser.cdp_ws_url)
try:
context = browser.contexts[0] if browser.contexts else await browser.new_context()
page = context.pages[0] if context.pages else await context.new_page()
await page.goto(url)
title = await page.title()
except Exception as e:
print(e)
finally:
await browser.close()
await client.browsers.delete_by_id(kernel_browser.session_id)