jljiu commited on
Commit
62c2836
·
verified ·
1 Parent(s): 10ec244

Update main.js

Browse files
Files changed (1) hide show
  1. main.js +35 -20
main.js CHANGED
@@ -1,30 +1,45 @@
1
  const http = require('http');
2
  const puppeteer = require('puppeteer');
 
3
 
4
  const server = http.createServer(async (req, res) => {
5
- console.log('hello'+req.url)
6
- if (req.url === '/screenshot' && req.method === 'GET') {
 
 
 
 
 
 
 
 
 
 
 
 
7
  try {
8
- const url = req.query.url;
9
- console.log(url)
10
- if (!url) {
11
- res.statusCode = 400;
12
- res.end('Missing url parameter');
13
- return;
14
- }
15
  const browser = await puppeteer.launch();
16
- const page = await browser.newPage();
17
- await page.goto(url);
18
- const screenshotBuffer = await page.screenshot();
19
- await browser.close();
 
 
20
 
21
- res.statusCode = 200;
22
- res.setHeader('Content-Type', 'image/png');
23
- res.end(screenshotBuffer);
24
- } catch (error) {
25
- console.error('Error taking screenshot:', error);
 
 
 
 
 
 
26
  res.statusCode = 500;
27
- res.end('Error taking screenshot');
28
  }
29
  } else {
30
  res.statusCode = 404;
@@ -32,7 +47,7 @@ const server = http.createServer(async (req, res) => {
32
  }
33
  });
34
 
35
- const port = process.env.PORT || 7860;
36
  server.listen(port, () => {
37
  console.log(`Server running on port ${port}`);
38
  });
 
1
  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');
17
+ return;
18
+ }
19
+
20
  try {
21
+ // 启动浏览器
 
 
 
 
 
 
22
  const browser = await puppeteer.launch();
23
+ try {
24
+ const page = await browser.newPage();
25
+ // 这里确保传入完整协议的网址,比如 http:// https:// 开头的
26
+ await page.goto(targetUrl);
27
+ const screenshotBuffer = await page.screenshot();
28
+ await browser.close();
29
 
30
+ res.statusCode = 200;
31
+ res.setHeader('Content-Type', 'image/png');
32
+ res.end(screenshotBuffer);
33
+ } catch (pageError) {
34
+ console.error('Error accessing page:', pageError);
35
+ await browser.close();
36
+ res.statusCode = 500;
37
+ res.end('Error accessing page');
38
+ }
39
+ } catch (launchError) {
40
+ console.error('Error launching browser:', launchError);
41
  res.statusCode = 500;
42
+ res.end('Error launching browser');
43
  }
44
  } else {
45
  res.statusCode = 404;
 
47
  }
48
  });
49
 
50
+ const port = process.env.PORT || 3000;
51
  server.listen(port, () => {
52
  console.log(`Server running on port ${port}`);
53
  });