jljiu commited on
Commit
d7c3d87
·
verified ·
1 Parent(s): 378e2d6

Update main.js

Browse files
Files changed (1) hide show
  1. main.js +21 -8
main.js CHANGED
@@ -2,15 +2,30 @@ const http = require('http');
2
  const puppeteer = require('puppeteer');
3
  const urlModule = require('url');
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  const server = http.createServer(async (req, res) => {
6
  const parsedUrl = urlModule.parse(req.url, true); // 第二个参数为true表示解析查询参数
7
  const pathname = parsedUrl.pathname;
8
  console.log(pathname)
9
  const query = parsedUrl.query;
10
  console.log(query)
 
11
  if (pathname === '/screenshot' && req.method.toUpperCase() === 'GET') {
12
  const targetUrl = query.url;
13
- console.log(targetUrl)
14
  if (!targetUrl) {
15
  res.statusCode = 400;
16
  res.end('Missing url parameter');
@@ -18,20 +33,18 @@ const server = http.createServer(async (req, res) => {
18
  }
19
 
20
  try {
21
- // 启动浏览器
22
- const browser = await puppeteer.launch({
23
- headless: true,
24
- args: ["--no-sandbox"],
25
- executablePath: '/app/chrome/chrome-linux64/chrome'
26
- });
27
  try {
28
  const page = await browser.newPage();
29
  // 这里确保传入完整协议的网址,比如 http:// 或 https:// 开头的
30
  await page.goto(targetUrl);
31
  const screenshotBuffer = await page.screenshot();
32
- await browser.close();
33
 
34
  res.statusCode = 200;
 
35
  res.setHeader('Content-Type', 'image/png');
36
  res.end(screenshotBuffer);
37
  } catch (pageError) {
 
2
  const puppeteer = require('puppeteer');
3
  const urlModule = require('url');
4
 
5
+ // 用于存储浏览器实例,避免每次请求都重新启动浏览器
6
+ let browser;
7
+
8
+ const initBrowser = async () => {
9
+ browser = await puppeteer.launch({
10
+ headless: true,
11
+ args: ["--no-sandbox"],
12
+ executablePath: '/app/chrome/chrome-linux64/chrome'
13
+ });
14
+ };
15
+
16
+ initBrowser();
17
+ let number = 0
18
+
19
  const server = http.createServer(async (req, res) => {
20
  const parsedUrl = urlModule.parse(req.url, true); // 第二个参数为true表示解析查询参数
21
  const pathname = parsedUrl.pathname;
22
  console.log(pathname)
23
  const query = parsedUrl.query;
24
  console.log(query)
25
+ console.log(number)
26
  if (pathname === '/screenshot' && req.method.toUpperCase() === 'GET') {
27
  const targetUrl = query.url;
28
+ console.log(targetUrl)
29
  if (!targetUrl) {
30
  res.statusCode = 400;
31
  res.end('Missing url parameter');
 
33
  }
34
 
35
  try {
36
+ if (!browser) {
37
+ await initBrowser();
38
+ }
 
 
 
39
  try {
40
  const page = await browser.newPage();
41
  // 这里确保传入完整协议的网址,比如 http:// 或 https:// 开头的
42
  await page.goto(targetUrl);
43
  const screenshotBuffer = await page.screenshot();
44
+ await page.close();
45
 
46
  res.statusCode = 200;
47
+ number = number++
48
  res.setHeader('Content-Type', 'image/png');
49
  res.end(screenshotBuffer);
50
  } catch (pageError) {