jljiu commited on
Commit
0edf4c9
·
verified ·
1 Parent(s): a893e85

Update main.js

Browse files
Files changed (1) hide show
  1. main.js +18 -21
main.js CHANGED
@@ -1,42 +1,39 @@
1
- const express = require('express');
2
  const puppeteer = require('puppeteer');
3
- const app = express();
4
 
5
- // 定义一个异步函数来处理截图并返回给客户端
6
- async function takeScreenshotAndReturn(req, res) {
7
  try {
 
 
 
 
8
  // 启动Puppeteer浏览器实例
9
  const browser = await puppeteer.launch({
10
  headless: true,
11
- args: ["--no-sandbox"]
12
  });
13
  const page = await browser.newPage();
14
 
15
- // 从请求参数中获取要截图的网址,默认为百度
16
- const url = req.query.url || 'https://www.baidu.com';
17
- await page.goto(url);
18
-
19
- // 进行截图
20
  const screenshot = await page.screenshot({ fullPage: true });
21
 
22
  // 关闭浏览器实例
23
  await browser.close();
24
 
25
- // 设置响应头,告诉客户端返回的是图片数据
26
- res.set('Content-Type', 'image/png');
27
- // 将截图数据作为响应返回给客户端
28
- res.send(screenshot);
29
  } catch (error) {
30
  console.error('截图操作出现错误:', error);
31
- res.status(500).send('截图失败:' + error.message);
 
32
  }
33
- }
34
-
35
- // 定义一个路由,当客户端访问 /screenshot 路径时,调用 takeScreenshotAndReturn 函数
36
- app.get('/screenshot', takeScreenshotAndReturn);
37
 
38
  // 启动服务器,监听3000端口
39
  const port = 7860;
40
- app.listen(port, () => {
41
  console.log(`服务器已启动,监听端口 ${port}`);
42
- });
 
1
+ const http = require('http');
2
  const puppeteer = require('puppeteer');
 
3
 
4
+ // 创建HTTP服务器
5
+ const server = http.createServer(async (req, res) => {
6
  try {
7
+ // 解析URL中的查询参数,获取要截图的网址
8
+ const url = new URL(req.url, 'http://localhost');
9
+ const targetUrl = url.searchParams.get('url') || 'https://www.baidu.com';
10
+
11
  // 启动Puppeteer浏览器实例
12
  const browser = await puppeteer.launch({
13
  headless: true,
14
+ args: ["--no - sandbox"]
15
  });
16
  const page = await browser.newPage();
17
 
18
+ // 导航到目标网址并进行截图
19
+ await page.goto(targetUrl);
 
 
 
20
  const screenshot = await page.screenshot({ fullPage: true });
21
 
22
  // 关闭浏览器实例
23
  await browser.close();
24
 
25
+ // 设置响应头,返回截图数据
26
+ res.writeHead(200, { 'Content - Type': 'image/png' });
27
+ res.end(screenshot);
 
28
  } catch (error) {
29
  console.error('截图操作出现错误:', error);
30
+ res.writeHead(500, { 'Content - Type': 'text/plain' });
31
+ res.end('截图失败:' + error.message);
32
  }
33
+ });
 
 
 
34
 
35
  // 启动服务器,监听3000端口
36
  const port = 7860;
37
+ server.listen(port, () => {
38
  console.log(`服务器已启动,监听端口 ${port}`);
39
+ });