Sản phẩm
Cách xây dựng JSON API kiểu shot-scraper với Bun.WebView trong Bun 1.4
(giờ Việt Nam)
Tóm tắt AI
Khám phá cách tận dụng Bun.WebView để tạo dịch vụ web scraping gọn nhẹ, cho phép thực thi JavaScript và chụp ảnh màn hình mà không cần phụ thuộc vào Puppeteer hay Playwright.
Bản dịch AI
Nghiên cứu một JSON API theo phong cách shot-scraper trên Bun.WebView mới của Bun 1.4 — Một dịch vụ TypeScript không phụ thuộc (zero-dependency) dài khoảng 150 dòng mã cho thấy `Bun.WebView` thử nghiệm của Bun 1.4 có thể cung cấp JSON API theo phong cách shot-scraper để thực thi JavaScript và chụp ảnh màn hình định dạng PNG/JPEG/WebP mà không cần đến Puppeteer hay Playwright. Nó tạo ra một tab trình duyệt cho mỗi yêu cầu, hỗ trợ xử lý đồng thời trong khi trả về kết quả trang và lỗi dưới dạng JSON thông qua `/javascript`, `/screenshot` và `/healthz`.
Hôm nay đánh dấu sự ra mắt được mong đợi từ lâu của Bun 1.4, phiên bản ổn định đầu tiên kể từ cuộc tái cấu trúc bằng Rust đầy tai tiếng vài tháng trước.
Điều thú vị là cuộc tái cấu trúc bằng Rust đã được giảm nhẹ trong ghi chú phát hành, nơi giới thiệu một loạt các tính năng mới gây choáng ngợp và tuyên bố đã sửa thêm 2.900 lỗi:
Bun 1.4 bổ sung thêm 1.517 bài kiểm tra từ bộ kiểm thử của Node.js - bước tiến lớn nhất của chúng tôi về khả năng tương thích với Node.js kể từ Bun 1.0. Bun v1.4 cũng sửa hơn 2.900 vấn đề. Nó giảm mức sử dụng CPU khi nhàn rỗi xuống 5 lần, giảm mức sử dụng bộ nhớ lên đến 35% và khởi động nhanh hơn 50% trên Linux. Nó bổ sung Bun.Image, Bun.WebView, Bun.markdown, Bun.cron, Bun.Terminal, bun run --parallel, bun test --parallel, bun audit fix, bun dedupe và bun prune. Đồng thời, nó viết lại Bun từ Zig sang Rust.
Trong số đó, tính năng thu hút sự chú ý của tôi nhất là Bun.WebView, bổ sung hỗ trợ hạng nhất cho tự động hóa trình duyệt vào nhân Bun bằng cách sử dụng WebKit trên macOS hoặc điều khiển một tiến trình Chromium cục bộ thông qua Chrome DevTools Protocol (CDP).
Tôi đã nhờ Claude Code for web xây dựng một nguyên mẫu web API cung cấp khả năng tải một trang web và sau đó thực thi JavaScript trên đó, lấy cảm hứng từ công cụ CLI javascript shot-scraper của tôi - một phần để xem dịch vụ như vậy sẽ cần bao nhiêu RAM.
Đây là bản triển khai máy chủ TypeScript đó, có vẻ cần một container từ 192MB-256MB để chạy Chrome đầy đủ trên các trang web phức tạp - đã được kiểm thử bằng cgroups.
Bài viết được AI dịch và tổng hợp tự động từ Simon Willison Blog. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.