Hiện tượng "Fancy Curl Sites": Khi website tự động khoác áo terminal cho người dùng dòng lệnh

Công nghệ14 tháng 10, 2026·4 phút đọc

Một lập trình viên chia sẻ cách anh tạo ra phiên bản terminal cho toàn bộ blog cá nhân, tự động hiển thị giao diện ANSI đẹp mắt mỗi khi có ai đó gõ lệnh curl. Ý tưởng tưởng chừng đơn giản này lại mở ra một góc nhìn thú vị về thiết kế web đa định dạng và sự sáng tạo trong cộng đồng lập trình viên.

Hiện tượng "Fancy Curl Sites": Khi website tự động khoác áo terminal cho người dùng dòng lệnh

Hiện tượng "Fancy Curl Sites": Khi website tự động khoác áo terminal cho người dùng dòng lệnh

Có một trào lưu nhỏ nhưng thú vị đang âm thầm lan tỏa trong cộng đồng lập trình viên: các website tự phát hiện khi người dùng truy cập bằng lệnh curl và trả về một phiên bản giao diện terminal được trang trí bằng màu sắc và ký tự ANSI. Mới đây, một lập trình viên đã chia sẻ chi tiết cách anh xây dựng tính năng này cho toàn bộ blog cá nhân của mình.

Ý tưởng đến từ đâu?

Khái niệm curl site không phải là phát minh mới. Tác giả bài viết cho biết ý tưởng này bắt nguồn từ hai dự án trước đó của những người bạn trong cộng đồng: curl trinkey.com và curl proot.party. Điểm khác biệt trong phiên bản của anh nằm ở chỗ nó bao phủ toàn bộ blog chứ không chỉ một vài trang đơn lẻ.

Cách sử dụng rất đơn giản:

curl nytpu.com/gemlog/2026-03-18
# hoặc
curl nytpu.com

Người dùng sẽ nhận được một phiên bản văn bản thuần túy nhưng được tô màu, in đậm và bố cục bằng các mã escape ANSI — thứ mà terminal nào cũng hiểu.

Tất nhiên, người dùng Windows có thể gặp chút rắc rối, bởi cmd.exe mặc định tắt mã ANSI, còn PowerShell lại alias curl thành Invoke-WebRequest, buộc phải gọi curl.exe mới đúng.

Kỹ thuật đằng sau: không hề "thần thánh" như tưởng tượng

Điều thú vị là cách tác giả tạo ra các tệp ANSI khá thủ công. Anh lưu sẵn mã escape cơ bản ESC[ (tức \x1b[) trong một register của Vim để dán nhanh khi cần, rồi mở trang Wikipedia về ANSI escape code để tra cứu từng mã cụ thể.

"Tôi thử nghiệm để chọn ra phong cách trình bày nhất quán mà mình thích, và chỉ tham chiếu phiên bản Gopher của các trang để dựng nên phiên bản curl."

Điểm mấu chốt giúp mọi thứ trở nên dễ dàng với tác giả là một sự trùng hợp may mắn: hơn bốn năm trước, anh đã xây dựng tính năng xuất văn bản thuần có đánh dấu ANSI trong Gemroff — ngôn ngữ đánh dấu tự phát triển dùng cho blog của mình. Ban đầu nó chỉ phục vụ việc xem trước bản nháp ngay trong terminal, nhưng sau này anh dễ dàng tích hợp vào static site generator (SSG) để sinh ra phiên bản curl cho mọi bài viết.

Anh cũng nhấn mạnh rằng mình chỉ cần viết thêm một template bao ngoài cho các bài post và một template cho trang mục lục, cộng vài dòng code trong SSG là đủ.

Vì sao không phải ai cũng làm được dễ như vậy?

Tác giả thẳng thắn thừa nhận: việc này chỉ dễ với anh vì anh dùng ngôn ngữ đánh dấu và SSG hoàn toàn tự viết, đồng thời đã ra quyết định thiết kế đúng đắn từ nhiều năm trước. Cụ thể, SSG của anh vốn đã hỗ trợ nhiều định dạng đầu ra mô-đun thay vì chỉ HTML — bởi anh đang "tri-host" website của mình trên cả HTTP, Gemini và Gopher.

Với những người dùng SSG phổ thông như Hugo, Jekyll hay Eleventy, việc sinh thêm định dạng ANSI sẽ đòi hỏi công sức lớn hơn nhiều.

Tuy nhiên, tác giả cho rằng không nhất thiết phải làm toàn bộ website. Viết tay vài trang đơn giản để "khoe" cũng là cách hoàn toàn hợp lý, bởi đây suy cho cùng chỉ là một thủ thuật vui mắt — hiếm ai thực sự dùng nó để duyệt web quá vài phút.

Bước cuối: phát hiện và phục vụ đúng người dùng

Phần cuối cùng là cấu hình máy chủ để nhận diện user agent chứa curl. Với tác giả, đó chỉ là vài thay đổi trong Nginx config, đảm bảo hai yêu cầu:

  • Header ghi đè X-Original: true để người dùng vẫn có thể nhận phản hồi HTTP nguyên bản khi muốn.
  • Mọi thứ vẫn được phục vụ tĩnh như trước, không sinh động trên máy chủ.

Anh cho biết với các web server khác, cách làm cũng tương tự và đơn giản không kém.

Góc nhìn cho cộng đồng công nghệ Việt Nam

Hiện tượng curl site nhắc nhở chúng ta rằng web không chỉ có một hình hài duy nhất. Trong bối cảnh hầu hết website hiện đại nặng nề với JavaScript, quảng cáo và framework, việc một trang có thể trả về giao diện nhẹ nhàng, đẹp mắt cho terminal là một tuyên ngôn nhỏ về tính linh hoạt và tôn trọng người dùng.

Với các lập trình viên Việt Nam đang viết blog cá nhân bằng SSG, đây có thể là một dự án phụ thú vị để thử sức — vừa rèn luyện kỹ năng cấu hình web server, vừa là cách thể hiện cá tính kỹ thuật.

"Sẽ thật tuyệt nếu ngày càng nhiều website áp dụng thủ thuật này!"

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗