1 điểm bởi GN⁺ 2023-10-21 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tách riêng Firefox mặc định được thiết lập nghiêm ngặt và Firefox phụ để cho phép JavaScript, đồng thời tạo hồ sơ Firefox bổ sung riêng cho các trang cần duy trì trạng thái đăng nhập lâu dài
  • Firefox phụ không dùng hồ sơ mà thay đổi biến môi trường $HOME trước khi chạy trên Unix để tách biệt hoàn toàn, dùng cho việc bỏ cookie và phiên khi thoát
  • Một số trang yêu cầu xác thực đa yếu tố, xác nhận email và quy trình đăng nhập nhiều bước dài mỗi lần, khiến luồng sử dụng chậm đi đáng kể nếu không giữ cookie
  • Trong các hồ sơ theo từng trang, cài uBlock Origin và Cookie AutoDelete để chỉ giữ lại các cookie cần thiết, còn lại tự động dọn dẹp
  • Firefox Multi-Account Containers cũng có thể là một lựa chọn thay thế, nhưng hồ sơ riêng tách biệt cả thiết lập tiện ích mở rộng nên dễ tin chắc hơn về cách hoạt động

Cách dùng tách biệt hai môi trường Firefox

  • Việc duyệt web mặc định được xử lý trong Firefox đã tùy biến
    • Sử dụng các thiết lập và tiện ích mở rộng nghiêm ngặt
    • Hầu như không chạy JavaScript
    • Sử dụng trong trạng thái không đăng nhập vào nhiều trang
  • Với các trang cần JavaScript, sử dụng một môi trường Firefox “just make it work” riêng
    • Chạy JavaScript
    • Nhận cookie và gửi lại chúng
    • Khi đóng trình duyệt, bỏ cả cookie lẫn phiên
  • Môi trường phụ này không được triển khai bằng hồ sơ Firefox, mà bằng cách thay đổi biến môi trường $HOME trước khi chạy trên Unix
    • Firefox trên Unix tuân theo $HOME
    • Hai môi trường được tách biệt hoàn toàn, tránh các vấn đề tiềm ẩn

Hồ sơ theo từng trang cần duy trì đăng nhập

  • Một số website cần cả JavaScript lẫn đăng nhập, nhưng quy trình đăng nhập lại quá phiền phức
    • Mỗi lần đều yêu cầu xác thực đa yếu tố bằng token vật lý
    • Gửi email mỗi khi đăng nhập
    • Phải trải qua quy trình đăng nhập nhiều bước dài và chậm
  • Với những trang như vậy, cần giữ cookie đăng nhập để đăng nhập ít nhất có thể
    • Một số trang có các quyền quan trọng, nên không thoải mái khi đăng nhập rồi nhẹ nhàng duyệt sang nơi khác
  • Giải pháp là tạo các hồ sơ bổ sung theo từng trang bên trong thiết lập Firefox có JavaScript
    • Mỗi website phiền phức có một hồ sơ riêng
    • Mỗi hồ sơ cài bộ add-on Firefox tiêu chuẩn
    • Các add-on cốt lõi là uBlock OriginCookie AutoDelete
  • Cookie AutoDelete được cấu hình để chỉ giữ các cookie cần thiết cho trang đó hoặc các trang liên quan, và dọn phần còn lại
    • Cookie bổ sung phát sinh trong quá trình truy cập nơi khác theo liên kết từ trang đó, v.v.
    • Ban đầu cần bỏ chút công sức để xác định cookie của trang nào cần được giữ lại
    • Sau khi thiết lập, các hồ sơ này hoạt động ổn định
  • Cũng có thể giới hạn các trang được phép dùng JavaScript trong từng hồ sơ, nhưng trên thực tế quá phiền phức
  • Firefox Multi-Account Containers cũng có thể dùng được, nhưng tôi thích hồ sơ riêng hơn
    • Thiết lập ban đầu có thể cần nhiều công hơn
    • Các hồ sơ hoàn toàn tách biệt với nhau, bao gồm cả thiết lập tiện ích mở rộng
    • Với container, sự tương tác giữa nhiều yếu tố có thể khác nhau tùy tình huống
  • Các add-on thường được thêm gồm Foxy Gestures, Cookie Quick Manager, Certainly Something
    • Foxy Gestures là một phần quan trọng trong trải nghiệm sử dụng Firefox
    • Certainly Something được dùng để kiểm tra chứng chỉ TLS
    • Một số hồ sơ cũng tích lũy thêm các add-on để giảm theo dõi
    • Gần đây cũng đã cài các nút bookmarklet cho readable và fixed

1 bình luận

 
GN⁺ 2023-10-21
Ý kiến trên Hacker News
  • Viên ngọc thật sự của Firefox là Containers. Các trình duyệt khác không có thứ như vậy, và đây là thứ Chrome thiếu một cách chí mạng
    Điều này không chỉ có nghĩa là “hãy mở cửa sổ riêng tư”, mà là bạn có thể tạo 1 + gần như vô hạn hồ sơ/container. Firefox có tiện ích mở rộng Temporary Containers, tạo container tạm thời cho mỗi tab mới và mặc định là được cô lập. Tôi đã thiết lập để khi giữ Ctrl và nhấp vào liên kết thì liên kết sẽ mở trong tab mới của cùng container hiện có, và chỉ gộp phiên khi tôi muốn. Với Proxy Containers, cũng có thể dùng tuyến proxy khác nhau cho từng tab
    Chrome và công cụ dành cho nhà phát triển của nó có nhiều ưu điểm, và dù Mozilla đã gây ra nhiều vấn đề, tôi vẫn tôn trọng sứ mệnh của Firefox hơn. Nhưng bất kể ưu nhược điểm ra sao, tôi bị buộc chặt với Firefox vì đây là trình duyệt duy nhất có thể làm được những việc như vậy

    • Vài ngày trước tôi có một bài trình bày ngắn cần đăng nhập vào nhiều tài khoản AWS, nhưng mọi người lại quan tâm đến cách mở và chuyển đổi nhiều tài khoản AWS ở các tab khác nhau hơn là nội dung trình bày
      Tôi đang dùng một add-on tự động tạo container mới cho mỗi tài khoản AWS được mở từ màn hình SSO. Khi gõ gmail vào trình duyệt, 3 tài khoản hiện ra; tùy tài khoản được chọn, nó mở trong container đúng tương ứng, nên có thể mở đồng thời cả ba tài khoản mà không phiền phức
    • Tôi đã dùng container một thời gian nhưng cảm thấy còn khá thiếu sót
      Ví dụ, không thể chỉnh sửa danh sách site của container, mà chỉ có thể thêm FQDN hiện đang được tải. Không thể gán *.google.com cho container Google; phải thực sự mở từng subdomain rồi thêm từng cái một
      Tệ hơn nữa, nếu host muốn thêm nằm ở giữa chuỗi redirect thì có vẻ không có cách nào để thêm. mail.google.com đi tới accounts.google.com rồi nhanh chóng quay lại mail.google.com, nên không có cách nào đưa accounts.google.com vào danh sách. Vì vậy tính năng “chỉ giới hạn trong các site được chỉ định” về cơ bản là không dùng được. Có vẻ Mozilla cho rằng việc thêm nút thêm và ô nhập văn bản vào danh sách site là quá sức đối với người dùng
      Ngoài ra, việc chỉ chọn một container để xóa cookie và dữ liệu site, hoặc chỉ xóa container mặc định mà không đụng đến các container có tên, cũng không làm được, nên thường xuyên bất tiện. Cuối cùng tôi mua thêm RAM và quay lại dùng hồ sơ riêng
    • Tôi nghĩ việc đưa Containers vào Chrome nhìn chung sẽ không có nhiều ý nghĩa. Vì dù sao Google cũng có thể truy cập mọi thứ
      Nó giống như cài VPN trên Android nhưng vẫn đăng nhập tài khoản Google và tiếp tục dùng những thứ như Maps. Chrome về mặt thiết kế là không có quyền riêng tư
      Khi nói cùng lúc về Firefox và Chrome, sự phân biệt này rất quan trọng. So sánh hai trình duyệt từ góc độ quyền riêng tư chẳng khác nào so táo với cam
    • Tiện ích mở rộng Temporary Containers không còn được bảo trì: https://github.com/stoically/temporary-containers/issues/618
    • Firefox Containers rất tuyệt về mặt ý tưởng, nhưng UI/UX thì cảm giác còn hơi thiếu. Giá mà có thể sắp xếp gọn gàng như Spaces của Arc
  • Hồ sơ Firefox bị đánh giá quá thấp và trên thực tế dường như cũng ít được dùng
    Tạo shortcut cho từng hồ sơ và đặt lệnh chạy là firefox --no-remote -P profilenamehere. Như vậy hầu như không cần nhìn thấy hộp thoại quản lý hồ sơ, và mỗi hồ sơ được dùng như một trình duyệt riêng
    Rất tiện để tách duyệt web cho công việc và cá nhân, cũng như để thử các tiện ích mở rộng khác nhau. Ví dụ, có thể cài Treestyletabs vào một hồ sơ và Sidebery vào hồ sơ khác để tự đánh giá cả hai. Mức dùng bộ nhớ khi mở hai hồ sơ Firefox cũng thấp hơn nhiều so với mở đồng thời Firefox và một trình duyệt họ Chromium

    • Tôi không thích hồ sơ lắm. Việc để các liên kết vui bạn bè gửi trên Discord mở bằng hồ sơ Personal, còn liên kết công việc trên Slack mở bằng hồ sơ Professional, có vẻ khó hoặc không thể làm được
      Cuối cùng tôi tạo một phím tắt bàn phím để chuyển đổi giữa một file cấu hình hồ sơ và hai symbolic link, rồi gắn thêm một extension Gnome hiển thị hồ sơ đang chọn trên thanh trên cùng. Kiểu như dùng một hồ sơ trong giờ làm, hồ sơ khác vào buổi tối, nhưng chậm, khó chuyển sang máy khác, và nhìn chung rất lộn xộn
      Giờ tôi dùng Firefox container và nhìn chung hài lòng. Chỉ mong thanh dấu trang cũng thay đổi theo tab hiện đang được chọn
    • Thành thật mà nói, việc phải chỉnh đối số khi chạy có lẽ chính là lý do nó ít được dùng như vậy
    • Thật tiếc là tiện ích chuyển hồ sơ lại yêu cầu cài ứng dụng cục bộ
      Firefox nên tích hợp hẳn chức năng này cho đúng: https://addons.mozilla.org/en-GB/firefox/addon/profile-switc...
    • Mẹo hữu ích. Tôi cần truy cập nhiều tài khoản Microsoft Live/AD/Teams, nhưng chúng không hoạt động tốt trong cùng một phiên trình duyệt
      Vì vậy tôi đã tách bằng hồ sơ Chrome. Tôi từng thấy hồ sơ Firefox hơi thô, và kỳ lạ là chưa bao giờ nghĩ đến việc tạo shortcut theo từng hồ sơ
    • Không nhất thiết phải đặt Treestyletabs và Sidebery ở trình duyệt hay hồ sơ riêng chỉ để đánh giá chúng. Bạn có thể đổi ngay tiện ích nào sẽ chiếm sidebar
      Tôi dùng Grasshopper[1] cùng với Tab Center Reborn hoặc Sidebery, rồi chuyển qua lại tùy chức năng cần lúc đó
      [1]https://news.ycombinator.com/item?id=37306058
  • Tôi là người dùng Firefox từ bản 0.9. Nhìn phản ứng ở đây thì có vẻ mọi người dành nhiều tình cảm cho Firefox
    Nhưng UI hồ sơ và trải nghiệm quản lý thật sự rất tệ nếu so với Chrome/Edge. Thẻ container không phải là thứ thay thế. Hồ sơ công việc và cá nhân thậm chí không chia sẻ cả bookmark. Tôi biết có tiện ích bên thứ ba yêu cầu cài thêm phần mềm, nhưng điều đó lại càng cho thấy vấn đề rõ hơn
    Vấn đề này đã được báo cáo từ 13 năm trước: https://bugzilla.mozilla.org/show_bug.cgi?id=662025
    Vì vậy hiện giờ tôi chỉ dùng Firefox cho cá nhân, còn phần còn lại dùng hồ sơ Chrome/Edge. Lý do duy nhất tôi còn ở lại với Firefox là vì bản Android. Nếu uBlock Origin chạy được trên Edge/Chrome ở Android thì có lẽ tôi sẽ bỏ Firefox

    • Safari đã làm triển khai hồ sơ rất tốt ở phần này. Bookmark, lịch sử, phiên đều tách riêng, thậm chí còn có cả nhóm thẻ riêng. Firefox cũng không còn cách quá xa, có lẽ chỉ cần trau chuốt trải nghiệm là được
    • Việc chọn thẻ container thay vì hệ thống hồ sơ được làm mới là một lựa chọn tệ của Firefox. Vì thế mà họ sẽ tiếp tục tụt lại
    • Trước Firefox Quantum, tức trước khi bỏ các tiện ích dựa trên XUL, có thể dùng tiện ích bên thứ ba để làm việc chuyển hồ sơ dễ hơn
      Giờ tôi gần như không dùng hồ sơ Firefox nữa, còn trong Chrome thì dùng 5–6 hồ sơ cho nhiều mục đích khác nhau. Vì nó dễ hơn nhiều
    • about:profiles vào thanh địa chỉ rồi chọn hồ sơ muốn dùng thì tệ đến vậy sao? Hoặc tạo shortcut có tùy chọn -p để chọn khi khởi động Firefox cũng được
      Thật lòng tôi tò mò Chrome/Edge cung cấp phần nào tạo ra khác biệt mang tính quyết định như vậy
    • Trên Android, thỉnh thoảng tôi dùng Kiwi Browser, có thể tải uBlock Origin
  • Tôi nghĩ mình sẽ hài lòng nếu Mozilla cho phép chọn tiện ích mở rộng nào được bật theo từng container
    [1] https://addons.mozilla.org/en-US/firefox/addon/multi-account...

    • Sẽ tốt nếu khi mở một website, trình duyệt hỏi để chọn trong số các container đã ghi nhớ. Ví dụ trong 15 container, một site cụ thể chỉ dùng ở 2 container, nên mỗi lần mở instance mới tôi muốn chỉ được chọn trong hai cái đó, chứ không phải toàn bộ
    • Có lý do gì không nên dùng about:profiles không?
    • Tôi tò mò về trường hợp sử dụng của tính năng đó
    • Có thể làm bằng tài khoản người dùng ở cấp hệ điều hành
  • Tôi dùng nhiều hồ sơ Firefox, nhưng chủ yếu muốn có hai tính năng
    Thứ nhất, cần có khác biệt trực quan như màu sắc để phân biệt hồ sơ tốt hơn. Khi mở đồng thời trình duyệt của nhiều hồ sơ, rất dễ nhầm
    Thứ hai, UX khi vô tình mở lại một hồ sơ đang chạy cần được cải thiện. Hiện giờ nó chờ timeout rồi hiện thông báo lỗi. Thay vào đó, chỉ cần đưa tiêu điểm về cửa sổ đang chạy là được

    • Phân biệt trực quan thì chỉ cần dùng theme khác nhau là giải quyết hoàn hảo
    • Tôi dùng https://color.firefox.com/ để phân biệt. Đây là một hệ thống theme khá ổn mà Mozilla tạo ra vài năm trước, quảng bá khoảng một tuần rồi không bao giờ nhắc đến nữa
      Có lẽ vì họ muốn quảng bá nhiều hơn những theme ngớ ngẩn tự biến mất, tức “Colorways drops”
    • Tôi đã giải quyết cả hai vấn đề bằng cách tạo mục .desktop riêng cho từng hồ sơ, rồi gắn theme và biểu tượng tùy chỉnh cho mỗi cái
      Như vậy trong trình quản lý cửa sổ có thể biết hồ sơ nào đang mở, và nhìn theme là biết mình đang xem hồ sơ nào. Có thể chạy một hồ sơ cụ thể bằng biểu tượng, hoặc nhấn Super rồi gõ ffwork, hoặc nếu đã mở thì nhấp phải rồi mở cửa sổ mới
      Vấn đề chính là dù đã thiết lập lại việc này nhiều lần trên nhiều máy, lần nào tôi cũng quên cách làm. Tôi luôn không nhớ cần tổ hợp flag Firefox và giá trị .desktop nào. Có lẽ liên kết này là đúng: https://askubuntu.com/questions/1209434/how-to-display-two-d...
    • Một cách có thể làm ngay bây giờ là dùng desktop ảo riêng và đặt từng hồ sơ ở desktop khác nhau. Cần một chút kỷ luật để không nhầm
    • Lý do tôi dùng hồ sơ Brave chính là khả năng phân biệt trực quan đó. Có thể đặt màu khác nhau cho biểu tượng thanh tác vụ và phần chrome của trình duyệt, nên tôi đã thử Brave lần đầu, và giờ nó đã thành tính năng không thể thiếu
  • Tôi tách nhiều instance và một instance riêng trên Chrome/macOS cho từng khách hàng/chủ thể và từng hoạt động cụ thể
    Mỗi trình duyệt có extension và quy tắc chặn quảng cáo khác nhau. Ví dụ nếu không phải trình duyệt mạng xã hội thì không vào được Hacker News. Trình duyệt phát triển chính có nhiều extension phục vụ phát triển hơn
    Quản lý thẻ cũng dễ hơn. Chỉ cần đóng “trình duyệt công việc” là xong. Tất cả đều có instance, biểu tượng và màu riêng. Ngay cả khi theo thói quen định vào các site lãng phí thời gian, nếu không phải trình duyệt media thì sẽ báo lỗi, nên giúp tập trung hơn
    Để làm nó hoạt động hoàn hảo không dễ. Phải tạo nhiều instance Chrome, mà điều đó nghĩa là cũng phải ký ứng dụng. Tất cả hồ sơ và dữ liệu ứng dụng được đặt trong thư mục riêng. Nếu không làm vậy thì không thể dùng cmd-tab để chuyển sang trình duyệt khác

    • Tôi dùng cùng cách tiếp cận đó và mở rộng thói quen ấy sang di động
      Khi duyệt web cho vui thì dùng Firefox Android thường có các extension như Ublock Origin; khi luôn duyệt ở chế độ riêng tư thì dùng Firefox Beta với cùng các extension; còn công việc thì xử lý bằng Chrome
      Tôi cũng đã thử dùng hồ sơ nhưng quản lý quá mệt. Đặc biệt là do cách macOS xử lý nhiều cửa sổ của cùng một ứng dụng
    • Brave xử lý hồ sơ hoàn hảo. Còn có chuỗi đồng bộ nên không cần tài khoản online. Tiếc là trình duyệt di động chỉ có một hồ sơ nên khá bực. Chắc triển khai cũng không khó
  • Không phủ nhận rằng hồ sơ Firefox rất tuyệt. Và tắt JavaScript cũng rất quan trọng, nên tôi đã dùng NoScript từ rất lâu
    Nhưng việc chuyển qua lại giữa hai hồ sơ chỉ để bật/tắt JavaScript trông có vẻ cực kỳ phiền phức. Trong NoScript, chỉ cần nhấn shift+t là có thể tạm thời gỡ hạn chế cho tab đó
    Thứ NoScript chủ yếu chặn là các tab lạ, không mong đợi bị mã độc mở ra. Nhưng với các trang lớn như The Register hay Etsy thì có thể tắt nó trong lúc làm việc cần thiết
    Tính năng tôi thật sự muốn NoScript có là tắt ở phạm vi toàn cục theo từng tên miền. Vì AWS dùng các tên miền con CloudFront ngẫu nhiên khi nhúng tài nguyên. Tôi không muốn đưa *.cloudfront vào danh sách cho phép. Vì bất kỳ ai cũng có thể dùng nó để lưu trữ mã độc

    • Nên xem thử uMatrix và uBlock Origin
  • Một sự thật thú vị là nếu dùng cờ --class, bạn có thể gán lớp cửa sổ X khác nhau cho từng phiên bản Firefox. Như vậy có thể cấu hình trình quản lý cửa sổ để đưa cửa sổ thuộc lớp đó lên phía trước
    Ví dụ, tôi đặt trong cấu hình StumpWM như thế này:
    (defcommand javascript-firefox ()
    (run-or-raise "firefox -P Javascript --class Firefox-javascript" '(:class "Firefox-javascript")))
    (define-key *top-map* (kbd "H-F") "javascript-firefox")
    Khi đó chỉ cần nhập hyper-shift-f, nếu Firefox dành cho JavaScript đã tồn tại thì nó sẽ được đưa lên, còn nếu chưa thì sẽ được chạy. Trong khi đó hyper-f đưa Firefox thông thường lên
    Rất khuyến nghị. Hy vọng sau này vẫn có thể tiếp tục dùng cách này. Wayland có hỗ trợ lớp cửa sổ và phím hyper không?

  • Gần đây tôi bắt đầu dùng cách này, và cũng đổi theme của hồ sơ Firefox để tự nhắc rằng mình phải đóng tất cả cửa sổ
    Cảm giác tách biệt khá dễ chịu, và trong môi trường desktop nó cũng khá hữu ích để chạy một số thứ như các ứng dụng bị giới hạn
    Vẫn còn nhiều điểm có thể làm tốt hơn. Chẳng hạn có thể crowdsourcing quyền theo kiểu Android/iOS cho từng website

  • Có thể đây là ý kiến không phổ biến, nhưng tôi nghĩ thời JavaScript còn là một yếu tố tùy chọn của web đã qua rồi. Giờ nó là thành phần nội tại của web
    Chúng ta phải chấp nhận rằng không thể quay lại thời chưa có JavaScript. Thay vì thuyết phục các website tạo phiên bản không dùng script, nên tìm giải pháp để làm JavaScript an toàn. Tôi không biết đáp án là gì, nhưng sandboxing, miền bảo mật và mô hình quyền phong phú là những thứ đáng cân nhắc

    • Ít nhất nếu mô hình đe dọa của bạn bao gồm việc tránh panopticon giám sát toàn cầu, thì JavaScript không thể an toàn
      Việc cho phép thực thi mã tùy ý theo mặc định thì không thể an toàn
      90% trường hợp dùng JavaScript là hoàn toàn không cần thiết, và chỉ có ý nghĩa với web dựa trên quảng cáo
    • Khi nghe nói về việc duyệt web với JavaScript bị tắt, tôi tò mò trải nghiệm đó sẽ ra sao
      Không phải tôi muốn xem nhẹ, nhưng với thói quen duyệt web của mình, tôi thật sự không thể tưởng tượng sẽ thế nào nếu không có JavaScript. Có thể nghe tệ hơn thực tế
    • Nói rằng JavaScript gần như là bắt buộc trên thực tế thì không sai, nhưng dù sao đó cũng chỉ là chuẩn trên thực tế. Ép nó thành bắt buộc một cách chính thức là sai
      Đáng tiếc là web đã thoái hóa đến trạng thái còn tệ hơn JavaScript. Nó đang đi theo hướng chỉ hỗ trợ một trình duyệt cụ thể, tức Chrome. Ví dụ gần đây là trên website Air India, không thể đặt vé máy bay bằng Firefox nhưng lại được bằng Chrome
    • Tôi đang dùng Qubes OS, nên có thể chạy nhiều phiên bản Firefox sandbox với viền cửa sổ có màu
      Vì mỗi Firefox chạy trong VM riêng không có dữ liệu, tôi chạy JavaScript mà không sợ hãi