import express from "express"; import { chromium } from "playwright"; const app = express(); app.use(express.json()); app.post("/search", async (req, res) => { // Validate query const { query } = req.body; if (!query) return res.status(400).json({ error: "Missing query" }); // Start new browser sesion let browser; try { browser = await chromium.launch({ headless: true }); const context = await browser.newContext({ userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", viewport: { width: 1280, height: 800 }, locale: "en-US", }); // Open new page with Bing's HTML search endpoint const page = await context.newPage(); await page.goto( "https://www.bing.com/search?q=" + encodeURIComponent(query), { waitUntil: "domcontentloaded" } ); await page.waitForTimeout(1200 + Math.floor(Math.random() * 800)); // Random delay // Retrive text from the results const visibleText = await page.evaluate(() => document.body.innerText); res.json({ result: visibleText }); } catch (e) { console.error("Playwright error:", e); res.status(500).json({ error: e.message }); } finally { if (browser) await browser.close(); } }); // Start express server const PORT = process.env.PLAYWRIGHT_PORT || 5000; app.listen(PORT, () => { console.log(`Playwright service running on port ${PORT}`); });