0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng dẫn chi tiết thiết lập API chụp ảnh màn hình với Puppeteer trên Ubuntu

Đăng vào 4 tuần trước

• 4 phút đọc

Chủ đề:

Ubuntu

Hướng dẫn chi tiết thiết lập API chụp ảnh màn hình với Puppeteer trên Ubuntu

Bài viết này sẽ hướng dẫn bạn từng bước để thiết lập một ứng dụng Node.js sử dụng Puppeteer trên hệ điều hành Ubuntu. Ứng dụng này sẽ hoạt động như một API cho phép bạn chụp ảnh màn hình bất kỳ trang web nào. Hãy cùng bắt đầu nhé!

1. Cập nhật và nâng cấp hệ thống

Để đảm bảo rằng tất cả các gói phần mềm trên hệ thống của bạn đều được cập nhật, hãy chạy lệnh sau:

bash Copy
sudo apt update && sudo apt upgrade -y

2. Cài đặt Node.js và NPM

Để sử dụng Puppeteer, bạn cần cài đặt Node.js và npm. Thực hiện theo các bước sau để cài đặt chúng từ kho lưu trữ chính thức của Node.js:

bash Copy
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

Sau khi cài đặt hoàn tất, bạn có thể xác minh phiên bản cài đặt bằng các lệnh sau:

bash Copy
node -v
npm -v

3. Tạo thư mục cho dự án

Tạo một thư mục mới cho dự án chụp ảnh màn hình của bạn:

bash Copy
mkdir puppeteer-screenshot-api
cd puppeteer-screenshot-api

4. Khởi tạo dự án Node.js

Khởi động một dự án Node.js mới bằng cách chạy:

bash Copy
npm init -y

Lệnh này sẽ tạo một tệp package.json với các giá trị mặc định.

5. Cài đặt các phụ thuộc cần thiết

Cài đặt các thư viện cần thiết cho Puppeteer và Express để thiết lập API:

bash Copy
npm install express puppeteer

6. Viết mã cho API chụp ảnh màn hình

Tạo một tệp có tên index.js trong thư mục dự án và thêm đoạn mã sau:

javascript Copy
const express = require('express');
const puppeteer = require('puppeteer');
const app = express();
const port = 3000;

// Điểm cuối chụp ảnh màn hình
app.get('/screenshot', async (req, res) => {
    const { url } = req.query;

    if (!url) {
        return res.status(400).send('Vui lòng cung cấp một URL');
    }

    try {
        const browser = await puppeteer.launch({
            args: ['--no-sandbox', '--disable-setuid-sandbox']  // Cần thiết khi chạy Puppeteer trên Ubuntu
        });
        const page = await browser.newPage();
        await page.goto(url, { waitUntil: 'networkidle2' });
        const screenshot = await page.screenshot({ fullPage: true });

        await browser.close();

        // Thiết lập loại nội dung và gửi ảnh chụp màn hình
        res.setHeader('Content-Type', 'image/png');
        res.send(screenshot);
    } catch (error) {
        console.error(error);
        res.status(500).send('Có lỗi xảy ra khi chụp ảnh màn hình');
    }
});

app.listen(port, () => {
    console.log(`API chụp ảnh màn hình Puppeteer đang chạy trên http://localhost:${port}`);
});

7. Chạy API Puppeteer

Để khởi động máy chủ, chạy lệnh sau:

bash Copy
node index.js

Máy chủ hiện đã hoạt động tại http://localhost:3000. Bạn có thể kiểm tra tính năng bằng cách truy cập URL:

Copy
http://localhost:3000/screenshot?url=https://example.com

Kết quả sẽ là một ảnh chụp màn hình định dạng PNG của trang web mà bạn đã cung cấp.

8. Cài đặt các phụ thuộc bổ sung của Puppeteer

Đôi khi, Puppeteer yêu cầu các thư viện bổ sung để chạy trên Ubuntu. Bạn có thể cài đặt chúng bằng lệnh:

bash Copy
sudo apt install -y libxshmfence1 libasound2 libgbm-dev libgtk-3-0 libnss3 libxss1 libxtst6 xdg-utils

9. Cài đặt Puppeteer như một dịch vụ nền

Nếu bạn muốn API Puppeteer chạy ở chế độ nền và tự động khởi động sau khi reboot, hãy thiết lập nó như một dịch vụ systemd:

Tạo tệp dịch vụ cho API của bạn:

bash Copy
sudo nano /etc/systemd/system/puppeteer-screenshot.service

Thêm nội dung sau vào tệp:

Copy
[Unit]
   Description=API chụp ảnh màn hình Puppeteer
   After=network.target

[Service]
   ExecStart=/usr/bin/node /path/to/your/puppeteer-screenshot-api/index.js
   Restart=on-failure
   User=your-username
   Environment=NODE_ENV=production

[Install]
   WantedBy=multi-user.target

Lưu ý: Thay thế /path/to/your/puppeteer-screenshot-api/index.js bằng đường dẫn thực tế của tệp index.js trong dự án của bạn.

Kích hoạt và khởi động dịch vụ:

bash Copy
sudo systemctl enable puppeteer-screenshot
sudo systemctl start puppeteer-screenshot

Bạn có thể kiểm tra trạng thái dịch vụ bằng lệnh:

bash Copy
sudo systemctl status puppeteer-screenshot

10. Kiểm tra API

Giờ đây, bạn có thể gửi yêu cầu đến máy chủ để chụp ảnh màn hình dễ dàng bằng lệnh curl:

bash Copy
curl "http://localhost:3000/screenshot?url=https://example.com" --output example.png

Lệnh này sẽ lưu ảnh chụp màn hình dưới dạng example.png.

Hy vọng bài viết này sẽ giúp ích cho bạn trong việc thiết lập API chụp ảnh màn hình với Puppeteer trên Ubuntu!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào