| 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")); |