Profile und Persistenz
Behalten Sie über mehrere Läufe dieselbe Identität: Verwenden Sie einen Fingerprint-Seed erneut, speichern Sie Cookies und Storage in einem Profilverzeichnis oder melden Sie die Werte, die aus einem echten Chrome erfasst wurden.
Ein echtes Chrome-Profil importieren
Statt der synthetischen, aus dem Seed abgeleiteten Persona kann Clearcote auch die auf einem echten Rechner erfassten Werte melden. Erfassen Sie ein Profil aus einem Spender-Chrome mit dem Collector unter tools/fingerprint-collect (collect.html öffnen, auf Capture klicken, schon wird ein JSON-Profil heruntergeladen), oder starten Sie mit dem Open-Source-Datensatz chrome-fingerprints (10k Einträge) und dem mitgelieferten Konverter convert_dataset.py. Die Erfassung umfasst Navigator, Bildschirmgeometrie, WebGL-Vendor/-Renderer + getParameter-Limits, Web Audio, Sprachsynthese-Stimmen, Schriften, Codecs und CSS-@media-Merkmale.
Übergeben Sie das Profil dem SDK als Dateipfad, Objekt oder JSON-String — das Packen mit gzip + base64 übernimmt es für Sie. Felder, die im Profil vorhanden sind, überschreiben, was der Browser sonst melden würde; fehlende Felder fallen auf die Standardwerte des Browsers zurück. Außerdem leitet das SDK Accept-Language aus navigator.languages des Profils ab, wenn Sie den Header nicht explizit setzen. Beide Builds lesen importierte Profile; auf dem lizenzierten Build greifen sie ab 151 r19 vollständig.
Übergeben Sie keinen fingerprint-Seed zusätzlich zu einem Profil. Der Seed aktiviert die Farbling-Schicht, die strenges Scoring als Canvas-Manipulation wertet, und er bringt Ihnen nichts, was das Profil nicht ohnehin liefert. Nehmen Sie das eine oder das andere. Ein Profil ersetzt nur gemeldete Werte — es ändert nie, was Ihre Pixel rendert; zwei Accounts mit zwei verschiedenen Profilen auf einem Rechner erzeugen also weiterhin ein identisches Canvas. Brauchen Sie pro Account getrennte Render-Ergebnisse, verwenden Sie einen Seed pro Account und kein Profil.
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 & Persistenz
Eine stabile Identität über mehrere Läufe erhalten Sie, indem Sie denselben fingerprint-Seed wiederverwenden; Cookies/Storage bleiben mit einem User-Data-Verzeichnis erhalten:
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()Die Cookies eines Profilverzeichnisses sind mit einem Schlüssel verschlüsselt, der an den Rechner gebunden ist, auf dem das Profil angelegt wurde. Um ein Profil samt Cookies auf einen anderen Rechner zu kopieren, übergeben Sie portableProfile: true / portable_profile=True (der Schlüssel wandert mit dem Profil) oder encryptionKey / encryption_key (der Schlüssel wird aus Ihrem Secret abgeleitet, und nichts Sensibles landet auf der Festplatte). Lizenzierter Build, Python & Node.
Das SDK kennt außerdem gespeicherte Personas: Ein Profile legt Fingerprint-Optionen, Proxy-Einstellungen, Canvas-Bridge-Einstellungen und weitere Launch-Optionen als JSON unter ~/.clearcote/profiles ab (ändern lässt sich das mit 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)Gespeicherte Profile liegen im Klartext vor und können Zugangsdaten wie canvasBridge.auth enthalten. Behandeln Sie Profildateien als vertrauenswürdige Eingabe, und committen oder teilen Sie sie nicht.