UNPKG

test-wuying-agentbay-sdk

Version:

TypeScript SDK for interacting with the Wuying AgentBay cloud runtime environment

122 lines (102 loc) 4.06 kB
/** * Example demonstrating Browser Fingerprint basic usage with AgentBay SDK. * * This example shows how to use browser with random fingerprint to avoid detection * by anti-bot services. It will generate a random, realistic browser fingerprint * and make the browser behave more like a real user. * * This example will: * 1. Create AIBrowser session with random fingerprint and simulate a Windows desktop browser. * 2. Use playwright to connect to AIBrowser instance through CDP protocol * 3. Verify user agent and navigator properties */ // @ts-nocheck import { AgentBay, CreateSessionParams } from 'wuying-agentbay-sdk'; import { BrowserOption, BrowserFingerprint } from 'wuying-agentbay-sdk'; import { chromium } from 'playwright'; async function main(): Promise<void> { // Get API key from environment variable const apiKey = process.env.AGENTBAY_API_KEY; if (!apiKey) { console.log("Error: AGENTBAY_API_KEY environment variable not set"); return; } try { // Initialize AgentBay client console.log("Initializing AgentBay client..."); const agentBay = new AgentBay({ apiKey }); // Create a session console.log("Creating a new session..."); const params: CreateSessionParams = { imageId: "browser_latest", }; const sessionResult = await agentBay.create(params); if (!sessionResult.success) { console.log("Failed to create session"); return; } const session = sessionResult.session; console.log(`Session created with ID: ${session.sessionId}`); /** * Create browser fingerprint option * - devices: desktop or mobile * - operatingSystems: windows, macos, linux, android, ios * * You can specify one or multiple values for each parameter. * But if you specify devices as desktop and operatingSystems as android/ios, * the fingerprint feature will not work. */ const browserFingerprint: BrowserFingerprint = { devices: ["desktop"], operatingSystems: ["windows"], locales: ["zh-CN", "zh"] }; // Create browser option with stealth mode and fingerprint option limit. // Stealth mode helps to avoid detection by anti-bot services. It will // generate a random, realistic browser fingerprint and make the browser // behave more like a real user. const browserOption: BrowserOption = { useStealth: true, fingerprint: browserFingerprint }; const initialized = await session.browser.initializeAsync(browserOption); if (!initialized) { console.log("Failed to initialize browser"); return; } const endpointUrl = await session.browser.getEndpointUrl(); console.log("endpoint_url =", endpointUrl); // Connect to browser using Playwright const browser = await chromium.connectOverCDP(endpointUrl); const context = browser.contexts()[0]; const page = await context.newPage(); // Check user agent console.log("\n--- Check User Agent ---"); await page.goto("https://httpbin.org/user-agent"); const response = await page.evaluate(() => JSON.parse(document.body.textContent)); const userAgent = response["user-agent"] || ""; console.log(`User Agent: ${userAgent}`); // Check navigator properties console.log("\n--- Check Navigator Properties ---"); const navInfo = await page.evaluate(() => ({ platform: navigator.platform, language: navigator.language, languages: navigator.languages, webdriver: navigator.webdriver })); console.log(`Platform: ${navInfo.platform}`); console.log(`Language: ${navInfo.language}`); console.log(`Languages: ${navInfo.languages}`); console.log(`WebDriver: ${navInfo.webdriver}`); await page.waitForTimeout(3000); await browser.close(); // Clean up session await agentBay.delete(session); console.log("Session cleaned up successfully"); } catch (error) { console.error("Error in main function:", error); } } if (require.main === module) { main().catch(console.error); }