Giữ Clearcote luôn được cập nhật
Khi không có khóa giấy phép, mỗi phiên bản SDK được ghim với một bản build mở đã xác minh SHA-256, và việc cập nhật chỉ là nâng phiên bản package như bình thường. Khi có khóa, SDK tải bản build có giấy phép hiện hành ở mỗi lần khởi chạy — không cần nâng phiên bản.
Những bản build hiện có
Các Chromium major mà chúng tôi đang phát hành hoặc đang phát triển, và thời điểm mỗi gói nhận được chúng:
| Bản build Chromium | Mã nguồn mở | Khóa miễn phí & Pro |
|---|---|---|
| Bản có giấy phép hiện tại156r57 · 25 Oct 2026 | ~2 tháng sau | Có ngay |
| Bản có giấy phép trước đó155·154·153·152 | Chưa có | Chỉ Pro — version="155" |
| Bản mở hiện tại151v0.1.0-pre.25 · 28 Oct 2026 | Có ngay | Có ngay |
| Bản mở trước đó150·149 | Có ngay | Có ngay |
Mọi bản build đều dành cho Windows + Linux x64. Mỗi bản Chromium major mới được đưa vào bản build có giấy phép — miễn phí cho một trình duyệt, hoặc Pro — ngay ngày được build xong; bản build mở nhận đúng bản major đó, hoàn toàn mở và tái tạo được, sau khoảng 2 tháng.
Người dùng SDK (khuyến nghị)
Nâng phiên bản package như khi bạn cập nhật bất kỳ dependency nào:
npm i clearcote@latest # Node
pip install -U clearcote # Python
dotnet add package Clearcote # .NET (adds or updates to the newest version)Ở lần launch() tiếp theo, SDK nhận thấy bản build cần dùng chưa có trong cache, tải nó về — bản build mở từ GitHub Releases, bản build có giấy phép từ clearcotelabs.com — và xác minh SHA-256 trước khi dùng. Không có gì chạy khi chưa được xác minh. Mỗi bản build được cache riêng trong thư mục cache của người dùng — %LOCALAPPDATA%\clearcote\Cache trên Windows, ~/.cache/clearcote trên Linux (đặt CLEARCOTE_CACHE để đổi vị trí) — nên mỗi bản chỉ cần tải một lần. Các bản build cũ được giữ lại cho đến khi bạn chạy clearcote clear-cache.
Nhiều chương trình, một cache
Các chương trình dùng chung cache sẽ lần lượt cài đặt một bản build (SDK 0.41.0+, áp dụng như nhau cho Python, Node và .NET): chương trình đầu tiên tải bản build về, các chương trình khác chờ rồi dùng nó, và một bản build mà chương trình khác đang chạy sẽ không bao giờ bị thay thế ngay dưới chân nó. Một chương trình đang chờ sẽ bỏ cuộc sau 30 phút, kèm thông báo nêu tên tiến trình đang giữ việc cài đặt (lock là file .install-lock trong thư mục cache của bản build đó; thông báo sẽ cho biết khi nào có thể xóa nó một cách an toàn). Lock bị bỏ lại bởi một chương trình bị crash sẽ được tự động tiếp quản.
Một bản build trong cache có file bị hỏng hoặc bị xóa (bị antivirus cách ly, thư mục bị xóa) sẽ được sửa ở lần khởi chạy tiếp theo bằng một lần tải. Nếu các file của nó vẫn đang được sử dụng, lần khởi chạy sẽ dừng ngay và yêu cầu bạn đóng mọi chương trình đang dùng trình duyệt đó, rồi thử lại. Cơ chế lock cần mọi tiến trình dùng chung cache chạy SDK 0.41.0 trở lên; các bản phát hành cũ hơn không chờ lock.
Windows: một số môi trường không thể khởi động bản build đã tải về ngay tại chỗ, chẳng hạn một chương trình chạy bên trong một ứng dụng đóng gói (MSIX), nơi Windows chuyển hướng các thao tác ghi vào %LOCALAPPDATA% (lần khởi chạy thất bại với spawn UNKNOWN hoặc "the side-by-side configuration is incorrect"). Khi đó SDK tạo một bản sao của bản build trong ~/.clearcote/recovered, và mọi lần khởi chạy sau đó từ Python, Node hoặc .NET đều dùng bản sao này, nên không còn gì bị bỏ lại trong thư mục tạm và các lần khởi chạy lặp lại chỉ mất vài giây (Python và Node từ 0.40.1, .NET từ 0.41.0). clearcote clear-cache cũng xóa các bản sao đó; .NET SDK không có command line, nên ở đó hãy gọi WinLaunch.ClearRecovered().
Cập nhật bản build mở mà không cần nâng cấp SDK
Khi không có khóa, hãy bật auto-update để dùng bản build mở mới nhất trên GitHub thay vì bản mà SDK ghim. Bản này được xác minh với SHA256SUMS.txt của bản phát hành đó (và với khóa ký nếu đã cài gpg); nếu không kết nối được tới GitHub, SDK quay về bản build đã ghim. Từ shell, clearcote update làm điều tương tự. Khi có khóa, tùy chọn này không thay đổi gì — bạn vốn đã nhận bản build có giấy phép hiện hành.
import { launch } from "clearcote";
await launch({ autoUpdate: true }); // or set env CLEARCOTE_AUTO_UPDATE=1Bản thân trình duyệt không bao giờ tự gửi dữ liệu về (phone home) hay tự cập nhật. Khi không có khóa, trình duyệt chỉ thay đổi khi bạn nâng phiên bản SDK hoặc bậtautoUpdate. Khi có khóa, SDK nhận từng bản build có giấy phép mới ở lần khởi chạy tiếp theo; Pro có thể giữ nguyên một bản build bằngversion.
Chọn bản build
Truyền version (hoặc đặt CLEARCOTE_BROWSER_VERSION): "latest", một major như "156", một phiên bản cụ thể "156.0.8078.47", hoặc một revision có giấy phép "r57" / "156.0.8078.47-r57". Phiên bản hoặc major được đối chiếu với catalog đã công bố, còn revision được đối chiếu với licence server, trước khi tải bất cứ thứ gì. releaseChannel: "preview" (release_channel trong Python, hoặc CLEARCOTE_RELEASE_CHANNEL=preview) sẽ lấy bản build preview nếu có. Trên bản build có giấy phép, các bản build cũ, việc ghim phiên bản và kênh preview có trong Personal và Pro — khóa miễn phí luôn nhận bản mới nhất.
clearcote install --version 156 # fetch + verify a build ahead of time
clearcote install --channel preview # the newest preview build (Pro)
clearcote info # what's installed and cached, and your key
clearcote clear-cache # delete cached buildsNgười dùng binary trực tiếp / Docker
- Binary trực tiếp (chỉ áp dụng cho bản build mở — bản build có giấy phép chạy qua SDK,
clearcote servehoặc Docker image): tải file nén mới từ trang Releases, xác minh checksum + chữ ký (xem Xác minh), rồi trỏexecutable_path/executablePath(hoặcCLEARCOTE_BINARY) tới filechromemới. - Docker: chạy
docker pull teamflatearth/clearcoteđể lấy image mới nhất, rồi tạo lại container. Khóa miễn phí cần image được build từ SDK 0.30.0 trở lên. Khi có khóa, hãy mount-v clearcote-cache:/opt/xdg-cacheđể bản build có giấy phép chỉ tải một lần thay vì tải lại vào mỗi container mới. Xem Triển khai.
Bản build có giấy phép — luôn mới nhất, và luôn có trước
Bản build có giấy phép bám theo Chromium mới nhất và các patch mới nhất, nên bạn nhận được cập nhật mà không phải tự build lại. Đặt CLEARCOTE_LICENSE_KEY, truyền licenseKey, hoặc chạy clearcote login (Python/Node; dùng npx clearcote login nếu cài npm cục bộ) — lệnh này kiểm tra khóa và lưu vào ~/.clearcote/license.key, file mà mọi SDK, kể cả .NET, đều đọc. Có ba cách để nhận khóa:
- Miễn phí với GitHub — mỗi lần một trình duyệt, không mất phí. Mở Licenses trong dashboard và nhận khóa theo một trong ba cách: kết nối một tài khoản GitHub đã tạo ít nhất 30 ngày (Connect GitHub and get it free), qua một lần kiểm tra thẻ (thẻ không bao giờ bị trừ tiền; thẻ trả trước bị từ chối), hoặc đăng nhập bằng tài khoản Google Workspace của công ty (tối đa 3 lần nhận cho mỗi tên miền công ty trong mỗi 30 ngày). Mỗi tài khoản GitHub, thẻ hoặc tài khoản Google một khóa. Khóa có hiệu lực 30 ngày; hãy gia hạn miễn phí ngay trên trang đó trước khi hết hạn.
- Personal — cùng bản build đó, tối đa 15 trình duyệt cùng lúc, các bản build cũ hơn, ghim phiên bản và kênh preview; không có hỗ trợ qua email.
- Pro — cùng bản build đó, tối đa 250 trình duyệt chạy đồng thời, có các bản build cũ, ghim phiên bản và kênh preview, cùng hỗ trợ qua email từ chủ dự án.
Các major mới đến với bản build có giấy phép trước. Khi một Chromium major mới được build, nó có ngay trên Miễn phí với GitHub và Pro; bản build mở nhận major đó sau — mục tiêu là khoảng 2 tháng sau khi phát hành (hiện bản build mở đang ở Chromium 151). Bản build mở luôn hoàn toàn mở và có thể tái tạo; bản build có giấy phép nhận major mới nhất sớm hơn.
Cách tính số trình duyệt có giấy phép
Mỗi trình duyệt khởi chạy bằng khóa sẽ lấy một slot từ licence server và trả lại khi đóng. Dashboard của bạn hiển thị số slot đang dùng, và clearcote info in ra cùng con số đó.
- Miễn phí với GitHub tính mọi trình duyệt. Chỉ có một slot, nên trình duyệt thứ hai — trong cùng chương trình, ở chương trình khác hay trên máy khác — sẽ bị từ chối với lỗi
The free tier runs one browser at a time, and one is already runningcho đến khi trình duyệt đầu tiên đóng. Trình duyệt bị crash mà không kịp đóng sẽ giải phóng slot trong vòng 6 phút. - Personal tính từng trình duyệt, tối đa 15 cùng lúc. Mỗi trình duyệt giữ slot riêng của nó, trên một máy hay nhiều máy, và trình duyệt thứ 16 bị từ chối cho đến khi có một trình duyệt đóng lại. Personal cần SDK 0.55.0 trở lên (Profile Manager 0.19.0).
- Pro hỗ trợ tối đa 250 trình duyệt cùng lúc. Với SDK 0.55.0 trở lên, mỗi trình duyệt giữ slot riêng của nó, nên dashboard tính theo trình duyệt chứ không theo máy; SDK cũ hơn vẫn dùng chung một slot cho mỗi máy. Các gói đăng ký bắt đầu trước ngày 26 tháng 9 năm 2026 vẫn giữ điều khoản không giới hạn trước đây; nếu bạn cần hơn 250, hãy thêm các khối 100 hoặc liên hệ với chúng tôi.
- Khóa miễn phí cần SDK 0.30.0 trở lên (Python, Node và .NET), vì để tính mọi trình duyệt, SDK phải báo cáo từng lần khởi chạy và giữ giấy phép luôn được cập nhật trong khi trình duyệt đó chạy. SDK cũ hơn sẽ nhận
SDK_UPGRADE_REQUIREDkèm lệnh nâng cấp, và SDK cũ nào vẫn đến được engine thì cũng bị từ chối ở đó. Khóa Pro vẫn hoạt động với SDK cũ như trước. - Trình duyệt miễn phí sẽ dừng khi mất slot. Việc kiểm tra diễn ra liên tục, không chỉ lúc khởi động: nếu khóa bị thu hồi, slot bị check-in ở nơi khác, hoặc giấy phép vượt giới hạn, trình duyệt miễn phí đang mở sẽ tắt trong khoảng 2 đến 3 phút. Các lần rớt mạng ngắn (lỡ một hai heartbeat) sẽ được bỏ qua; mất kết nối lâu hơn khoảng 2 đến 3 phút cũng sẽ dừng trình duyệt miễn phí theo cách tương tự.
- Gói miễn phí luôn chạy bản build mới nhất. Yêu cầu một bản build có giấy phép cũ hơn hoặc kênh preview sẽ trả về
FREE_LATEST_ONLY; ghim bản build cần Personal hoặc Pro. - Lượt tải với khóa miễn phí: tối đa 10 bản build khác nhau trong mỗi 24 giờ. Cùng một bản build chỉ tính một lần, dù bạn khởi chạy bao nhiêu lần.
pip install -U clearcote # Python 0.30.0+
npm i clearcote@latest # Node 0.30.0+
dotnet add package Clearcote # .NET 0.30.0+Những gì thay đổi khi bạn nâng cấp
Phần lớn các bản phát hành SDK không thay đổi gì mà bạn phải xử lý. Những bản dưới đây thay đổi cách một cấu hình hiện có hoạt động; mọi bản phát hành đều được liệt kê trong mục Releases trên dashboard của bạn.
- Bản build có giấy phép 156 r53, mặc định của trình duyệt: tính năng lưu mật khẩu được bật, như trong Chrome: trình duyệt đề nghị lưu mật khẩu sau khi đăng nhập (tùy chọn "Offer to save passwords and passkeys" trong Password Manager sẽ tắt nó). Google lại là công cụ tìm kiếm mặc định, cho cả profile mới lẫn profile hiện có, nên nội dung tìm kiếm gõ vào thanh địa chỉ sẽ đến Google; hãy chọn công cụ khác trong Settings > Search engine. Với Playwright, hãy dùng kèm SDK 0.63.3 trở lên. Danh tính không thay đổi.
- 0.64.1:
personaSchema/persona_schema/PersonaSchemachấp nhận 5 và 7 trong mọi SDK. - 0.64.0, không có khóa giấy phép: SDK tải bản build mở Chromium 151, bản phát hành
v0.1.0-pre.25, thay vì 150.version="150"vẫn nhận bản build 150. - Danh tính được phục vụ từ 2026-10-26 (r52, và cả r51), seed hiện có: persona schema mặc định giờ là 7, một mô hình máy trong đó card đồ họa quyết định loại máy, bộ xử lý, số luồng, bộ nhớ và màn hình của nó, nên một seed sẽ ra một máy khác so với trước. Để giữ danh tính mà seed có trên r45 đến r51, hãy đặt
persona_schema=5/personaSchema: 5. Xem cùng một seed trên các máy khác nhau. - Bản build có giấy phép 156 r51: danh tính đến từ persona service của Clearcote ở mỗi lần khởi chạy, nên máy cần kết nối HTTPS đi ra tới
persona.clearcotelabs.com(vàpersona-uslàm dự phòng), và trình duyệt cần SDK 0.63.0 trở lên (khóa miễn phí 0.63.2), Profile Manager 0.27.0 trở lên. Danh tính không thay đổi với r51. Xem Kiến trúc. - Bản build có giấy phép 155 r45, seed Windows hiện có: mỗi profile Windows lấy bộ font Office riêng của nó, nên danh sách font thay đổi một lần.
persona_schema=4/personaSchema: 4giữ nguyên chính xác danh tính của r44.
Ghi chú cũ hơn (các bản build 154, SDK 0.40 đến 0.42)
- Bản build có giấy phép 154 r37, seed hiện có: giờ đây seed lấy card đồ họa từ một dải rộng hơn các mẫu card thật của chính hãng card đồ họa trên máy, mỗi mẫu phổ biến đúng như trong lưu lượng trình duyệt thực tế, nên phần lớn các seed sẽ báo một card khác so với trên r36; máy không có card đồ họa giờ khai báo đồ họa tích hợp của Intel hoặc AMD thay vì chỉ của Intel. Ngoài ra, phần cứng của seed không có gì thay đổi. Để giữ các card mà seed của bạn có trên r36, hãy đặt
persona_schema=3/personaSchema: 3; các danh tính từ trước r36 vẫn giữ card của chúng bằng2, như trước. Xem cùng một seed trên các máy khác nhau. - Bản build có giấy phép 154 r37, hộp chọn tệp và in ở chế độ headless: hộp chọn tệp mà một trang mở ra và script của bạn không xử lý giờ sẽ mở trong 4 đến 9 giây rồi bị hủy, giống như một người dùng không cần nó; trong lúc hộp đó đang mở, tab đó không thể mở popup hay cửa sổ picture-in-picture, như trong trình duyệt headed.
window.print()giờ giữ trang khoảng 1.2 giây rồi kích hoạtafterprint, giống một bản xem trước khi in mà người dùng đóng lại. Trước đây cả hai đều trả lời trong vài mili giây. Việc tải tệp lên quasetInputFileshoặc qua sự kiệnfilechoosermà script của bạn xử lý vẫn hoạt động như trước. - Bản build có giấy phép 154 r36, seed hiện có: giờ đây seed lấy card đồ họa từ nhiều mẫu card thật của chính hãng card đồ họa trên máy, thay vì một mẫu duy nhất cho mỗi hãng, nên phần lớn các seed sẽ báo một card khác so với trên r35. Trên máy có card NVIDIA, một seed từng khai báo phần cứng cấp thấp (4 đến 6 luồng xử lý, 4 đến 8 GB bộ nhớ, màn hình nhỏ) giờ sẽ khai báo phần cứng tầm trung trở lên, và trên máy đó không seed nào khai báo màn hình cảm ứng. Để giữ các danh tính mà seed của bạn có trước r36, hãy đặt
persona_schema=2/personaSchema: 2. Xem cùng một seed trên các máy khác nhau. - Bản build có giấy phép 154 r36, cookie bên thứ ba: giờ đây trình duyệt cho phép chúng theo mặc định, như Chrome, kể cả khi một SDK cũ hơn hoặc launcher của riêng bạn không truyền tùy chọn cookie nào.
--block-third-party-cookiessẽ chặn chúng. - Bản build có giấy phép 154 r36, yêu cầu quyền ở chế độ headless: trình duyệt headless không còn từ chối ngay lập tức yêu cầu quyền của một trang web (thông báo, camera, micro, vị trí và các quyền tương tự). Yêu cầu sẽ không được trả lời, giống một lời nhắc cấp quyền đang mở trong trình duyệt headed, nên một script chờ
Notification.requestPermission()hoặcgetUserMedia()giờ sẽ phải chờ. Hãy cấp quyền trước (Playwrightcontext.grant_permissions()/context.grantPermissions()), hoặc truyền--deny-permission-promptsđể có lại cách từ chối như trước. - 0.42.0, host Linux: WebGL của persona Linux giờ được render qua Mesa trên EGL ở chế độ headed cũng như headless (host cần có
libegl1), nên chuỗi renderer, danh sách extension và các giới hạn WebGL của một persona Linux chạy headed sẽ thay đổi một lần, sang dạng mà các lần khởi chạy headless vốn đã hiển thị và phần lớn máy Linux thật báo cáo. Một lần khởi chạy headed dưới Xvfb không có trình quản lý cửa sổ sẽ mở ra với cửa sổ vừa với màn hình. Các lần khởi chạy headless giữ một màn hình thực tế kể cả khi persona không có hiệu lực, vàserve()cũng giữ màn hình đó khi bạn chỉ truyền--window-position. Xem Playwright & Puppeteer. - Bản build có giấy phép 154 r34 trở lên,
disableGpuFingerprint: giờ nó chỉ thay đổi những gì GPU báo cáo. Việc readback pixel WebGL vẫn giữ nhiễu theo từng site của seed, nênreadPixelsvà các kết quả xuất của một canvas WebGL khớp với nhau. Trước đây, nó chỉ tắt riêng nhiễu củareadPixels. Xem Các flag fingerprint. - 0.41.1, nhập liệu giống người: với
humanize, cuộn trang di chuyển theo từng nấc con lăn chuột trọn vẹn, như một con lăn thật: 100 px mỗi nấc trên một danh tính Windows, 120 trên Linux và 40 trên macOS. Khoảng cách được yêu cầu sẽ được làm tròn tới nấc gần nhất (tối thiểu một nấc), nênmouse.wheel(0, 800)cuộn 800 px trên Windows và 840 trên Linux. Khi gõ phím, giờ đây đôi khi phím tiếp theo được nhấn xuống trước khi phím trước được nhả ra ở các cặp phím gõ nhanh. Trong .NET, một humanizer được seed bằng một số giờ đây di chuyển với cùng danh tính vận động (motor identity) như trong Python và Node; trước đây, mọi seed dạng số khác 0 đều dùng chung một danh tính. Xem Nhập liệu giống người. - 0.41.0 trên bản build có giấy phép từ r32: persona đến trình duyệt qua biến môi trường của nó thay vì qua dòng lệnh, nên một công cụ từng đọc seed từ danh sách tiến trình sẽ không còn tìm thấy nó (
persona_env=Falsegiữ cách cũ). Các context mà một lần khởi chạy local tạo ra không còn giả lập color scheme sáng, nên một persona tối sẽ báo là tối ở mọi nơi (truyềncolor_schemeđể cố định một chế độ). Một lần khởi chạy Linux headless có persona sẽ nhận một màn hình đúng kích thước mà persona khai báo. Xem Tùy chọn khởi chạy. - 0.41.0, .NET trên Linux: các lần khởi chạy giờ dùng bộ font đi kèm trình duyệt, như Python và Node vẫn luôn làm, thay vì font của host. Vì vậy, một persona Windows ở đó đo ra kết quả khác trước, giờ giống như hai SDK còn lại. Xem font của riêng bạn trên Linux.
- 0.41.0, persona Linux trên máy tính Windows: SDK cảnh báo một lần cho mỗi tiến trình. Windows chạy GPU qua Direct3D, vốn giới hạn các limit của WebGL và WebGPU, và persona có thể hạ một limit xuống nhưng không bao giờ nâng nó vượt quá mức của driver, nên một persona Linux ở đó sẽ báo những limit mà không máy Linux nào có. Hãy khai báo Windows trên Windows, hoặc chạy persona Linux trên Linux hay trong Docker.
quiethoặcCLEARCOTE_NO_WARNsẽ tắt cảnh báo này. - Image Docker
sdk-0.41.0: Chrome có thể chạy với sandbox của nó, nếu bạn khởi động container với seccomp profile của image; nếu không có profile, container chạy như trước. Font cho các hệ chữ viết được tích hợp sẵn. Xem Triển khai. - 0.40.0: trên macOS,
launch()chạy image Docker của Clearcote (cần Docker Desktop;docker=Falsesẽ tắt nó). Xem macOS.
Sau khi nâng cấp, hãy xác minh lại
Một bản build mới có thể làm thay đổi một tín hiệu. Hãy chạy lại các bài kiểm tra fingerprint (ví dụ CreepJS) và, nếu bạn dùng profile được import, hãy xác nhận profile đó vẫn tải lên nhất quán — xem Xác minh. Bản build mở hiện tại là v0.1.0-pre.25 (Chromium 151.0.7922.108); bản build có giấy phép hiện tại là 156.0.8078.47-r57. Lộ trình cho biết những gì sắp tới.