@onkernel/create-kernel-app
Version:
Create Kernel sample applications
49 lines (43 loc) • 1.7 kB
text/typescript
import { Kernel, type KernelContext } from "@onkernel/sdk";
import { chromium } from "playwright";
const kernel = new Kernel();
const app = kernel.app("ts-advanced");
/**
* Example showing Kernel's auto-CAPTCHA solver
* Visit the live view url to see the Kernel browser auto-solve the CAPTCHA on the site
*
* Args:
* ctx: Kernel context containing invocation information
* Returns:
* None
*
* Invoke this via CLI:
* kernel login # or: export KERNEL_API_KEY=<your_api_key>
* kernel deploy index.ts # If you haven't already deployed this app
* kernel invoke ts-advanced test-captcha-solver
* kernel logs ts-advanced -f # Open in separate tab
*/
app.action("test-captcha-solver", async (ctx: KernelContext): Promise<void> => {
const kernelBrowser = await kernel.browsers.create({
invocation_id: ctx.invocation_id,
stealth: true,
persistence: {
id: "captcha-solver",
},
});
const browser = await chromium.connectOverCDP(kernelBrowser.cdp_ws_url);
// Access the live view. Retrieve this live_view_url from the Kernel logs in your CLI:
// kernel login # or: export KERNEL_API_KEY=<Your API key>
// kernel logs ts-advanced --follow
console.log(
"Kernel browser live view url: ",
kernelBrowser.browser_live_view_url
);
// Navigate to a site with a CAPTCHA
const context = browser.contexts()[0] || (await browser.newContext());
const page = context.pages()[0] || (await context.newPage());
await page.waitForTimeout(10000); // Add a delay to give you time to visit the live view url
await page.goto("https://www.google.com/recaptcha/api2/demo");
// Watch Kernel auto-solve the CAPTCHA!
await browser.close();
});