Bỏ qua đến nội dung chính
Về trang chủ
tools-cli Tech 5 phút đọc

Kage: 'Bóng Đổ' Web – Biến Mọi Website Thành Phiên Bản Offline, Tĩnh Gọn & Không Quảng Cáo! 🚀

Kage là một công cụ dòng lệnh được viết bằng Go, cho phép sao chép bất kỳ trang web nào thành phiên bản offline hoàn chỉnh, loại bỏ JavaScript và gói gọn chúng vào một thư mục hoặc tệp nhị phân duy nhất để đọc tiện lợi.

Tier 1 · nguồn 99% độ tin cậy Auto-priority
Nguồn gốc github.com

Kage: 'Bóng Đổ' Website Cho Trải Nghiệm Đọc Ngoại Tuyến Tĩnh Gọn 👻

Tại Kalera News, chúng tôi luôn tìm kiếm những công cụ độc đáo giúp tối ưu hóa trải nghiệm số. Hôm nay, chúng ta cùng khám phá kage (影, 'bóng đổ' trong tiếng Nhật) – một tiện ích dòng lệnh mạnh mẽ được viết bằng Go, có khả năng 'đổ bóng' các trang web, biến chúng thành các thư mục có thể duyệt ngoại tuyến hoàn chỉnh, đã được loại bỏ mọi đoạn mã JavaScript. Đây hứa hẹn là giải pháp lý tưởng cho việc lưu trữ nội dung sạch sẽ, không phiền nhiễu, hoặc phục hồi dữ liệu website đã bị xoá.

➡️ Nguồn gốc: tamnd/kage trên GitHubSố sao: 1.3k | 🍴 Số lượt fork: 29 | Giấy phép: MIT

---

Kage Hoạt Động Như Thế Nào? 🤔

Kage thực hiện một quy trình thông minh để biến một trang web động thành một bản sao tĩnh hoàn hảo:

1. Kết xuất (Render): Một nhóm các tab Chrome không giao diện người dùng (headless Chrome) sẽ kết xuất các trang mục tiêu, đảm bảo mọi nội dung động và các yếu tố tải chậm (lazy-loaded) đều được tải đầy đủ. 2. Chụp nhanh (Snapshot): Khi trang đã ổn định, kage sẽ chụp nhanh toàn bộ Cây mô hình đối tượng tài liệu (DOM) cuối cùng. 3. Lọc bỏ (Sanitize): Đây là bước quan trọng: mọi script, trình xử lý sự kiện nội dòng và URL javascript: đều bị loại bỏ khỏi DOM. Điều này mang lại một bản sao sạch sẽ, tập trung vào nội dung. 4. Nội địa hóa (Localize): Một nhóm công nhân riêng biệt tải xuống tất cả các tài nguyên (hình ảnh, font chữ, CSS) qua HTTP. Các tham chiếu url() trong CSS cũng được viết lại để trỏ đến các đường dẫn cục bộ. 5. Lưu trữ (Save): Các tệp được lưu bằng cách sử dụng ánh xạ URL-thành-đường dẫn được xác định trước, tạo ra một cấu trúc thư mục logic.

Kết quả là một tập hợp các tệp tĩnh, gọn gàng, có thể mở trực tiếp từ đĩa, đóng gói thành một tệp duy nhất hoặc biên dịch thành một tệp thực thi tự chứa.

---

Cài Đặt Kage 🛠️

Để sử dụng kage, bạn cần có Chrome hoặc Chromium đã cài đặt trên hệ thống. Kage sẽ tự động phát hiện, hoặc bạn có thể chỉ định đường dẫn thủ công.

* Cài đặt qua Go:

bash go install github.com/tamnd/kage/cmd/kage@latest

* Docker (đã bao gồm Chromium):

bash docker run --rm -v "$PWD/out:/out" ghcr.io/tamnd/kage clone paulgraham.com

* Tệp nhị phân dựng sẵn: Các gói cài đặt .deb, .rpm, .apk và các tệp lưu trữ đã được dựng sẵn có sẵn trên trang GitHub Releases.

---

Bắt Đầu Nhanh Với Kage ⚡

Bạn có thể sao chép một trang web, phục vụ nó cục bộ, đóng gói nó vào một kho lưu trữ ZIM nén duy nhất hoặc biên dịch nó thành một tệp thực thi tự chứa:

* 1. Sao chép trang web cục bộ:

bash kage clone paulgraham.com

* 2. Đọc ngoại tuyến qua máy chủ HTTP cục bộ:

bash kage serve $HOME/data/kage/paulgraham.com # Mở http://127.0.0.1:8800

* 3. Đóng gói bản sao thành một tệp ZIM nén duy nhất:

bash kage pack paulgraham.com # Tạo ra paulgraham.com.zim kage open paulgraham.com.zim

* 4. Đóng gói thành một tệp thực thi tự chứa duy nhất:

bash kage pack paulgraham.com --format binary -o paulgraham ./paulgraham # Tự phục vụ, không cần phụ thuộc

---

Tổng Quan Các Lệnh Chính 📚

| Lệnh | Mô tả | | :--- | :--- | | kage clone <url> | Kết xuất trang web trong headless Chrome và ghi ra một bản sao có thể duyệt được, không script. | | kage serve [dir] | Xem trước một thư mục đã sao chép qua máy chủ HTTP cục bộ. | | kage pack <mirror-dir> | Đóng gói bản sao vào kho lưu trữ ZIM, tệp nhị phân tự chứa hoặc ứng dụng chạy click đúp. | | kage open <file.zim> | Phục vụ tệp ZIM đã đóng gói để đọc ngoại tuyến. |

---

Đi Sâu Vào Quy Trình Sao Chép 🕵️‍♀️

Quá trình sao chép của Kage là một cơ chế thu thập dữ liệu chiều rộng (breadth-first crawl) tuân thủ quy tắc robots.txt và khởi tạo từ sitemap.xml theo mặc định. Nó có tính bất biến (idempotent): các trang được đánh khóa bằng tệp đầu ra của chúng, đảm bảo các URL trùng lặp (ví dụ: HTTP so với HTTPS, dấu gạch chéo cuối cùng) chỉ được tìm nạp một lần.

* Tạm dừng & Tiếp tục: Nhấn Ctrl-C sẽ lưu trạng thái thu thập vào _kage/state.json. Chạy lại lệnh sẽ tiếp tục từ nơi đã dừng. * Cập nhật: Sử dụng --refresh để kết xuất lại các trang tại chỗ, hoặc --force để xóa bản sao hiện có và bắt đầu lại từ đầu.

Kage là một công cụ đáng chú ý cho những ai cần một bản sao 'sạch', tĩnh của các trang web. Tuy việc loại bỏ JavaScript đồng nghĩa với việc mất đi tính tương tác, nhưng nó lại mang đến một trải nghiệm đọc tập trung và an toàn hơn, không bị theo dõi hay quảng cáo làm phiền. Chắc chắn, đây là một bổ sung giá trị cho bộ công cụ của các nhà phát triển và người dùng quan tâm đến quyền riêng tư! ✨

Đã đọc hết tin tools-cli hiện có.