const express = require("express"); const { chromium } = require("playwright"); const app = express(); app.get("/", async (req, res) => { let browser; try { let { url } = req.query; if (!url || !url.trim().startsWith("http")) return res.sendStatus(400); const viewport = { width: 1920, height: 1080 }; browser = await chromium.launch({ args: ["--incognito", "--single-process", "--no-sandbox", "--no-zygote", "--no-cache"], executablePath: process.env.CHROME_BIN, headless: true, }); const page = await browser.newPage(); await page.setViewportSize(viewport); await page.goto(url, { waitUntil: "load", timeout: 10000 }); const buffer = await page.screenshot(); res.setHeader("Content-Type", "image/png"); res.send(buffer); } catch { res.sendStatus(500); } finally { if (browser) await browser.close(); } }); app.listen(7860, () => console.log("Running on port 7860"));