Ô trình duyệt
Mở web cạnh terminal, điều hướng bằng điều khiển gốc và giữ liên kết trong dự án.
Zshell đặt được trình duyệt tích hợp trong bất kỳ tab hoặc ô chia nào. Nó hữu ích cho máy chủ phát triển cục bộ, tài liệu API, issue hay nội dung bạn muốn đặt cạnh terminal đang dùng nó.
Mở trình duyệt
- Chọn Tệp → Tab trình duyệt mới để mở tab trống.
- Mở bảng lệnh (Cmd+P) và chạy Tab trình duyệt mới hoặc Ô trình duyệt mới.
- Giữ Command rồi nhấp phải URL đã nhận diện trong terminal, chọn Tab trình duyệt mới hoặc Ô trình duyệt mới để mở mà không cần sao chép địa chỉ.
Tab trình duyệt thuộc dự án đang chọn và dùng chung bố cục tab/ô bình thường. Nếu chưa có dự án, Zshell tạo một dự án chứa trình duyệt.
Địa chỉ và tìm kiếm
Ô trên cùng nhận URL đầy đủ, tên máy chủ hoặc từ khóa:
zshell.shtrở thành địa chỉ HTTPS.localhost, tên máy cục bộ, IP và cổng được chỉ định rõ dùng HTTP.- Phần còn lại trở thành truy vấn Google.
Cmd+L chọn ô địa chỉ; Cmd+R tải lại. Thanh công cụ còn có Quay lại, Tiến, Dừng/Tải lại, Chia sẻ và Mở bằng trình duyệt mặc định. Cử chỉ tiến/lùi trên bàn di chuột cũng hoạt động.
| Thao tác | Phím tắt |
|---|---|
| Chọn thanh địa chỉ | Cmd+L |
| Tải lại trang | Cmd+R |
Mở liên kết ở nơi bạn muốn
Nhấp phải liên kết trên trang để Mở liên kết trong tab mới hoặc Mở liên kết trong ô mới. Trang mới vẫn ở cùng không gian dự án.
Trong terminal, Command-nhấp bình thường mở URL web đã nhận diện bằng trình duyệt mặc định. Command-nhấp phải cung cấp lựa chọn tab hoặc ô Zshell. Quy trình tương tự cho đường dẫn cục bộ nằm ở Đường dẫn và URL.
Trạng thái được giữ lại
Đổi tab hoặc dự án giữ nguyên trang, gồm lịch sử, vị trí cuộn, biểu mẫu và trạng thái bên trong. Khi mở lại Zshell, URL hiện tại và bố cục được khôi phục, nhưng toàn bộ lịch sử tiến/lùi thì không.
Ô trình duyệt giữ cookie, đăng nhập và dữ liệu trang khác qua các tab và lần mở ứng dụng. Đây không phải chế độ riêng tư.
Nhờ Agent kiểm thử trang
Bạn có thể nhờ Agent lập trình kiểm tra trang đang mở trong dự án này, điền biểu mẫu, xác minh kết quả hoặc chụp vùng đang hiển thị. Agent dùng lại phiên trình duyệt hiện tại và mặc định giữ tiêu điểm ở terminal. Agent cũng có thể mở URL phát triển cục bộ trong khung trình duyệt nền.
Với tập lệnh, chạy các lệnh sau trong terminal Zshell. Ghi lại browser_id trả về và thay BROWSER_ID bên dưới:
zshell +browser list
zshell +browser open http://localhost:3000 --wait
zshell +browser snapshot --browser BROWSER_ID
zshell +browser fill --browser BROWSER_ID --selector '#search' --text 'terminal'
zshell +browser click --browser BROWSER_ID --selector 'button[type="submit"]'
zshell +browser wait --browser BROWSER_ID --selector '#results' --timeout 10000
zshell +browser screenshot --browser BROWSER_ID --output /tmp/zshell-page.pngẢnh chụp DOM trả về văn bản khung chính, nhãn trợ năng và tham chiếu phần tử. Tham chiếu hết hạn sau khi trang thay đổi hoặc có thao tác; hãy chụp DOM mới trước khi dùng lại. Bộ chọn CSS phải khớp đúng một phần tử. Dùng navigate, back, forward, reload và stop để điều hướng.
Tự động hóa chỉ nhận URL HTTP/HTTPS đầy đủ và about:blank. Giao thức khác, tải xuống, hộp chọn tệp và hộp thoại hệ thống cần bạn trực tiếp thao tác. Giới hạn được gỡ sau khi bạn điều hướng thủ công bằng thanh địa chỉ hoặc thanh công cụ. Lệnh chỉ hoạt động trong dự án và cửa sổ của terminal gọi lệnh. --timeout từ 100–30000 mili giây. Ảnh chụp DOM tối đa 200 phần tử, 32768 ký tự và 256 KiB, không gồm giá trị mật khẩu hoặc tệp. PNG chỉ chụp vùng hiển thị, tối đa 512 KiB, hoạt động cả trước khi khung được hiển thị, với viewport 1024 × 768 và không đổi tiêu điểm và không ghi đè tệp. Giảm --width nếu cần. Xem zshell +browser --help.
Mã trang và trạng thái đăng nhập
zshell +browser eval --browser BROWSER_ID --script 'Promise.resolve({title: document.title})'
zshell +browser state save --browser BROWSER_ID --output /tmp/zshell-login.json
zshell +browser state load --browser BROWSER_ID --input /tmp/zshell-login.json
zshell +browser reload --browser BROWSER_ID --waiteval --script chạy trong trang chính thật, chờ Promise được trả về và trả JSON trong value; undefined thành null. Dùng biểu thức hàm bất đồng bộ cho await. Giới hạn: đầu vào 64 KiB; kết quả 256 KiB, 10000 giá trị và 64 cấp. Tham chiếu DOM hết hạn sau khi chạy. Hết thời gian chỉ dừng chờ, không hủy mã. Kiểm tra trang trước khi lặp lại thay đổi; vòng lặp đồng bộ vô hạn có thể buộc bạn đóng trang. Biểu thức đơn, gồm IIFE, được chèn dưới dạng Script toàn cục gốc. Chuỗi nhiều câu lệnh vẫn tuân theo CSP của trang; nếu đánh giá chuỗi bị chặn, hãy bọc các câu lệnh trong IIFE.
state save lưu Cookie áp dụng cho host đích (gồm miền cha và HttpOnly) cùng localStorage của origin hiện tại dưới dạng Playwright storage-state JSON. state load hợp nhất Cookie và thay thế localStorage của origin đó; sau đó tải lại trang. Giao thức, host và cổng phải khớp chính xác. Miền không liên quan, hậu tố công cộng, trường không hỗ trợ và kiểu sai bị từ chối trước mọi thay đổi. Cookie Secure yêu cầu HTTPS.
Dùng --format cookies cho cả hai lệnh để dùng Netscape cookies.txt, không có localStorage và SameSite. Tệp tối đa 256 KiB và chứa thông tin đăng nhập: giữ riêng tư và ngoài Git. Nhập chỉ chấp nhận tệp thường mà chỉ chủ sở hữu truy cập được (ví dụ 0600), từ chối liên kết tượng trưng. Xuất tạo tệp riêng tư mới và không ghi đè đường dẫn có sẵn. Dữ liệu WebKit vẫn dùng chung giữa các khung; giới hạn dự án, cửa sổ và điều hướng vẫn áp dụng.
Quảng cáo và trình theo dõi
Cài đặt → Trình duyệt bật chặn WebKit mặc định với EasyList và EasyPrivacy. Tắt từng danh sách hoặc thêm mỗi dòng một URL danh sách ABP HTTP/HTTPS rồi chọn Áp dụng danh sách. Tối đa 8 danh sách, mỗi danh sách 8 MiB. HTTP không được mã hóa.
Quy tắc áp dụng cho yêu cầu tiếp theo trong mọi ngăn. Tải lại trang sau khi thay đổi. Cập nhật danh sách ngay buộc cập nhật. Danh sách được lưu cục bộ; sau khi khởi động lại, mở trình duyệt sẽ kiểm tra danh sách cũ hơn bốn ngày. Cài đặt hiển thị số bộ lọc đã chuyển đổi/bỏ qua, lỗi và việc dùng bản lưu. Thay danh sách thất bại không âm thầm dùng danh sách khác đã bỏ chọn.
Hỗ trợ ký tự đại diện URL, neo, loại tài nguyên phổ biến, ngoại lệ @@, phạm vi tên miền đơn giản và CSS ##/#@#. Tên miền dựa trên trang cấp cao nhất; phân loại bên theo WebKit. Bỏ qua scriptlet, bộ lọc thủ tục, chuyển hướng, biểu thức chính quy, cho phép cả trang và loại trừ tên miền con của tên miền được chọn. Không tương thích đầy đủ uBlock Origin.