Hướng dẫn này bao gồm thiết lập ứng dụng Node.js bằng Puppeteer, ứng dụng này sẽ hoạt động như một API để chụp ảnh màn hình. Hãy cùng theo dõi nhé:
1. Cập nhật và nâng cấp hệ thống
Đầu tiên, hãy cập nhật và nâng cấp hệ thống của bạn để đảm bảo tất cả các gói đều được cập nhật.
sudo apt update && sudo apt upgrade -y
2. Cài đặt Node.js và NPM
Bạn sẽ cần Node.js và npm để chạy Puppeteer. Cài đặt chúng bằng kho lưu trữ Node.js chính thức.
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Xác minh cài đặt:
node -v
npm -v
3. Tạo một thư mục dự án
Tạo thư mục cho dự án Puppeteer của bạn.
mkdir puppeteer-screenshot-api
cd puppeteer-screenshot-api
4. Khởi tạo một dự án Node.js
Khởi tạo một dự án Node.js mới.
npm init -y
Thao tác này sẽ tạo một tệp package.json có 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 phần phụ thuộc cần thiết cho Puppeteer và Express để thiết lập API.
npm install express puppeteer
6. Viết API Ảnh chụp màn hình Puppeteer
Tạo một tệp có tên index.js trong thư mục dự án của bạn và thêm đoạn mã sau:
const express = require('express');
const puppeteer = require('puppeteer');
const app = express();
const port = 3000; // Screenshot endpoint
app.get('/screenshot', async (req, res) => { const { url } = req.query; if (!url) { return res.status(400).send('Please provide a URL'); } try { const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] // Necessary for running Puppeteer on Ubuntu }); const page = await browser.newPage(); await page.goto(url, { waitUntil: 'networkidle2' }); const screenshot = await page.screenshot({ fullPage: true }); await browser.close(); // Set content type and send screenshot res.setHeader('Content-Type', 'image/png'); res.send(screenshot); } catch (error) { console.error(error); res.status(500).send('Error capturing screenshot'); }
}); app.listen(port, () => { console.log(`Puppeteer Screenshot API is running on http://localhost:${port}`);
});
7. Chạy Puppeteer API
Chạy máy chủ bằng Node.js:
node index.js
Máy chủ hiện đang chạy trên http://localhost:3000. Bạn có thể kiểm tra bằng cách truy cập URL sau trong trình duyệt của bạn:
http://localhost:3000/screenshot?url=https://example.com
Nó sẽ trả về ảnh chụp màn hình PNG của URL được cung cấp.
8. Cài đặt các phụ thuộc của Puppeteer
Đôi khi Puppeteer yêu cầu các phụ thuộc bổ sung cho Ubuntu. Cài đặt chúng bằng cách chạy:
sudo apt install -y libxshmfence1 libasound2 libgbm-dev libgtk-3-0 libnss3 libxss1 libxtst6 xdg-utils
9. Chạy 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 khởi động lại, bạn có thể thiết lập nó như một dịch vụ systemd.
Đầu tiên, hãy tạo tệp dịch vụ cho API Puppeteer của bạn.
sudo nano /etc/systemd/system/puppeteer-screenshot.service
Tiếp theo, thêm nội dung này vào tệp:
[Unit] Description=Puppeteer Screenshot API 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
Thay thế /path/to/your/puppeteer-screenshot-api/index.js
bằng đường dẫn thực tế của dự án của bạn.
Kế đến, hãy kích hoạt và khởi động dịch vụ:
sudo systemctl enable puppeteer-screenshot sudo systemctl start puppeteer-screenshot
Cuối cùng, hãy kiểm tra lại trạng thái:
sudo systemctl status puppeteer-screenshot
10. Kiểm tra API
Bây giờ bạn có thể gửi yêu cầu đến máy chủ của mình để chụp ảnh màn hình.
curl "http://localhost:3000/screenshot?url=https://example.com" --output example.png
Thao tác này sẽ lưu ảnh chụp màn hình dưới dạng example.png.
Hy vọng các bạn thấy mẹo vặt trong bài viết này hữu ích.