Pular para o conteúdo

Perfis e persistência

Mantenha a mesma identidade entre execuções: reutilize um seed de fingerprint, guarde cookies e armazenamento num diretório de perfil ou reporte os valores capturados de um Chrome real.

Importe um perfil de Chrome real

Em vez da persona sintética, derivada do seed, você pode fazer o Clearcote reportar os valores capturados de uma máquina real. Capture um perfil num Chrome doador com o coletor em tools/fingerprint-collect (abra o collect.html, clique em Capture e ele baixa um perfil JSON), ou parta do dataset open source de 10 mil registros chrome-fingerprints usando o conversor incluído convert_dataset.py. A captura cobre navigator, geometria da tela, vendor/renderer do WebGL + limites de getParameter, Web Audio, vozes de síntese de fala, fontes, codecs e características CSS @media.

Passe o perfil ao SDK como caminho de arquivo, objeto ou string JSON — ele cuida do empacotamento gzip + base64 para você. Os campos presentes no perfil substituem o que o navegador reportaria; os campos ausentes ficam com os padrões do navegador. O SDK também deriva o Accept-Language do navigator.languages do perfil quando você não define um explicitamente. Os dois builds leem perfis importados; no build licenciado, eles se aplicam por completo a partir do 151 r19.

Não passe um seed de fingerprint junto com um perfil. O seed ativa a camada de farbling, que uma pontuação rigorosa interpreta como adulteração do canvas, e não traz nada que o perfil já não forneça. Use um ou outro. Um perfil substitui apenas os valores reportados — ele nunca muda o que renderiza os seus pixels, então duas contas com dois perfis diferentes na mesma máquina ainda produzem um canvas idêntico. Se você precisa de renderização separada por conta, use um seed por conta e nenhum perfil.

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()

Perfis & persistência

Mantenha uma identidade estável entre execuções reutilizando o mesmo seed de fingerprint e persista cookies/storage com um diretório de dados do usuário (user-data dir):

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()

Os cookies de um diretório de perfil são criptografados com uma chave ligada à máquina que o criou. Para copiar um perfil para outra máquina com os cookies intactos, passe portableProfile: true / portable_profile=True (a chave vai junto com o perfil) ou encryptionKey / encryption_key (a chave é derivada do seu segredo, e nada sensível é gravado em disco). Build licenciado, Python & Node.

O SDK também tem personas salvas: um Profile guarda opções de fingerprint, configurações de proxy, configurações da canvas bridge e outras opções de inicialização como JSON em ~/.clearcote/profiles (para mudar o local, use 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)
Os perfis salvos ficam em texto puro e podem conter credenciais, como canvasBridge.auth. Trate os arquivos de perfil como entrada confiável e não faça commit deles nem os compartilhe.