File size: 955 Bytes
4b9ee07
9c4c3ff
4b9ee07
 
 
6b88740
49f4a83
52a1756
d6e7528
6b88740
49f4a83
d6e7528
49f4a83
 
 
a343199
49f4a83
a343199
49f4a83
52a1756
49f4a83
 
4b9ee07
49f4a83
 
8f62fdf
49f4a83
58d4f83
a343199
49f4a83
52a1756
4b9ee07
 
e14e089
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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"));