Skip to content

Commit 29f10c9

Browse files
committed
starting to add examples
1 parent b201252 commit 29f10c9

8 files changed

+8910
-625
lines changed

.env.example

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
BROWSERBASE_API_KEY="your-api-key-here"
2+
BROWSERBASE_PROJECT_ID="your-project-id-here"

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ dist
88
/*.tgz
99
.idea/
1010

11+
.env

examples/playwright-basic.ts

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { chromium } from 'playwright-core';
2+
import Browserbase from 'browserbase/index';
3+
4+
const BROWSERBASE_API_KEY = process.env['BROWSERBASE_API_KEY']!;
5+
const BROWSERBASE_PROJECT_ID = process.env['BROWSERBASE_PROJECT_ID']!;
6+
7+
const bb = new Browserbase({
8+
apiKey: BROWSERBASE_API_KEY,
9+
});
10+
11+
(async () => {
12+
// Create a new session
13+
const session = await bb.sessions.create({
14+
projectId: BROWSERBASE_PROJECT_ID,
15+
});
16+
17+
// Connect to the session
18+
const browser = await chromium.connectOverCDP(session.connectUrl);
19+
20+
// Getting the default context to ensure the sessions are recorded.
21+
const defaultContext = browser.contexts()[0];
22+
const page = defaultContext?.pages()[0];
23+
24+
await page?.goto('https://browserbase.com/');
25+
await page?.close();
26+
await browser.close();
27+
console.log(`Session complete! View replay at https://browserbase.com/sessions/${session.id}`);
28+
})().catch((error) => console.error(error.message));
+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import Browserbase from 'browserbase/index';
2+
import { chromium } from 'playwright-core';
3+
4+
// Configuration
5+
const DEFAULT_CAPTCHA_URL = 'https://2captcha.com/demo/recaptcha-v2';
6+
const OVERRIDE_TIMEOUT = 60000; // 1 minute in milliseconds
7+
8+
// Type declarations
9+
declare global {
10+
interface Window {
11+
captchaSolvingFinished?: boolean;
12+
}
13+
}
14+
15+
const bb = new Browserbase({
16+
apiKey: process.env['BROWSERBASE_API_KEY']!,
17+
});
18+
19+
async function createSession(options: { browserSettings: { solveCaptchas: boolean }; proxies: boolean }) {
20+
const session = await bb.sessions.create({
21+
projectId: process.env['BROWSERBASE_PROJECT_ID']!,
22+
browserSettings: options.browserSettings,
23+
proxies: options.proxies,
24+
});
25+
return session;
26+
}
27+
28+
async function solveCaptcha() {
29+
// Create a session with captcha solving enabled
30+
const session = await createSession({
31+
browserSettings: {
32+
solveCaptchas: true,
33+
},
34+
proxies: true,
35+
});
36+
try {
37+
// Connect to the browser
38+
const browser = await chromium.connectOverCDP(session.connectUrl);
39+
40+
const context = browser.contexts()[0]!;
41+
const page = context.pages()[0]!;
42+
43+
let captchaSolvingStarted = false;
44+
let captchaSolvingFinished = false;
45+
46+
// Listen for console messages
47+
page.on('console', (msg) => {
48+
if (msg.text() === 'browserbase-solving-started') {
49+
captchaSolvingStarted = true;
50+
console.log('Captcha solving started...');
51+
page.evaluate(() => {
52+
// @ts-ignore
53+
window.captchaSolvingFinished = false;
54+
});
55+
} else if (msg.text() === 'browserbase-solving-finished') {
56+
captchaSolvingFinished = true;
57+
console.log('Captcha solving finished!');
58+
page.evaluate(() => {
59+
// @ts-ignore
60+
window.captchaSolvingFinished = true;
61+
});
62+
}
63+
});
64+
65+
// Navigate to the captcha page
66+
console.log('Navigating to captcha page...');
67+
await page.goto(DEFAULT_CAPTCHA_URL, { waitUntil: 'networkidle' });
68+
69+
// Wait for captcha to be solved
70+
// @ts-ignore
71+
await page.waitForFunction(() => window.captchaSolvingFinished === true, null, {
72+
timeout: OVERRIDE_TIMEOUT,
73+
});
74+
75+
// Cleanup
76+
await page.close();
77+
await browser.close();
78+
79+
console.log('Captcha solving started:', captchaSolvingStarted);
80+
console.log('Captcha solving finished:', captchaSolvingFinished);
81+
} catch (error) {
82+
console.error('An error occurred:', error);
83+
process.exit(1);
84+
} finally {
85+
console.log(`View replay at https://browserbase.com/sessions/${session.id}`);
86+
}
87+
}
88+
89+
// Run the script
90+
solveCaptcha();

examples/playwright-captcha.ts

Whitespace-only changes.

0 commit comments

Comments
 (0)