Profile và lưu trữ lâu dài
Giữ nguyên một danh tính qua các lần chạy: dùng lại seed fingerprint, giữ cookie và storage trong thư mục profile, hoặc báo cáo các giá trị thu thập từ một Chrome thật.
Import profile từ Chrome thật
Thay vì persona tổng hợp suy ra từ seed, bạn có thể để Clearcote báo cáo các giá trị thu được từ một máy thật. Thu thập một profile từ một Chrome nguồn bằng công cụ thu thập tại tools/fingerprint-collect (mở collect.html, bấm Capture, và công cụ sẽ tải về một profile JSON), hoặc khởi đầu từ chrome-fingerprints — bộ dữ liệu mã nguồn mở gồm 10k bản ghi — bằng công cụ chuyển đổi đi kèm convert_dataset.py. Dữ liệu thu thập bao gồm navigator, kích thước màn hình, vendor/renderer WebGL + các giới hạn getParameter, Web Audio, giọng đọc speech-synthesis, font, codec và các đặc tính CSS @media.
Truyền profile cho SDK dưới dạng đường dẫn tệp, object hoặc chuỗi JSON — SDK sẽ lo phần đóng gói gzip + base64 cho bạn. Các trường có trong profile sẽ ghi đè những gì trình duyệt lẽ ra báo cáo; các trường không có sẽ dùng giá trị mặc định của trình duyệt. SDK cũng suy ra Accept-Language từ navigator.languages của profile khi bạn không tự đặt giá trị này. Cả hai bản build đều đọc được profile import; trên bản build có giấy phép, profile được áp dụng đầy đủ từ 151 r19.
Đừng truyền seed fingerprint cùng với profile. Seed sẽ kích hoạt lớp farbling, thứ mà các cơ chế chấm điểm khắt khe coi là can thiệp canvas (canvas tampering), và nó không mang lại gì mà profile chưa cung cấp. Chỉ dùng một trong hai. Profile chỉ thay thế các giá trị được báo cáo — nó không bao giờ thay đổi thứ render ra pixel của bạn, nên hai tài khoản dùng hai profile khác nhau trên cùng một máy vẫn tạo ra canvas giống hệt nhau. Nếu cần tách biệt kết quả render theo từng tài khoản, hãy dùng seed riêng cho mỗi tài khoản và không dùng profile.
from clearcote import launch
browser = launch(fingerprint_profile="profile.json", disable_gpu_fingerprint=True, fingerprint_noise=False)
page = browser.new_page()
page.goto("https://example.com")
browser.close()Profile & lưu trữ lâu dài
Giữ danh tính ổn định qua các lần chạy bằng cách dùng lại cùng một seed fingerprint, và lưu lại cookie/storage bằng một thư mục user-data:
from clearcote import launch_persistent_context
ctx = launch_persistent_context(r"C:\clearcote\profiles\acme", fingerprint="acme-tenant-7", headless=False)
page = ctx.pages[0] if ctx.pages else ctx.new_page()Cookie trong một thư mục profile được mã hóa bằng một khóa gắn với máy đã tạo ra thư mục đó. Để sao chép profile sang máy khác mà cookie vẫn nguyên vẹn, hãy truyền portableProfile: true / portable_profile=True (khóa đi kèm theo profile) hoặc encryptionKey / encryption_key (khóa được suy ra từ secret của bạn, và không có gì nhạy cảm được ghi xuống đĩa). Dành cho bản build có giấy phép, Python & Node.
SDK cũng có các persona đã lưu: một Profile lưu các tùy chọn fingerprint, thiết lập proxy, thiết lập canvas-bridge và các tùy chọn khởi chạy khác dưới dạng JSON trong ~/.clearcote/profiles (ghi đè bằng CLEARCOTE_PROFILE_DIR).
from clearcote import Profile, launch, launch_persistent_context
Profile("acct-1", {
"fingerprint": "acct-1",
"gpu_vendor": "Google Inc. (Intel)",
"gpu_renderer": "ANGLE (Intel, Intel(R) UHD Graphics ... D3D11)",
"canvas_bridge": {"url": "ws://127.0.0.1:8443", "auth": "user:secret"},
}).save()
ctx = launch_persistent_context(r"C:\clearcote\profiles\acct-1", profile="acct-1")
browser = launch(profile="acct-1", headless=False)Profile đã lưu ở dạng văn bản thuần (plaintext) và có thể chứa thông tin xác thực như canvasBridge.auth. Hãy coi tệp profile là đầu vào đáng tin cậy, và đừng commit hay chia sẻ chúng.