Skip to content

Cookbook

Ajat edited this page Sep 28, 2026 · 1 revision

Cookbook

Step-by-step recipes for real work. Each recipe is self-contained; copy, adapt, ship.

Have a recipe that worked? Add it β€” a working example is worth more than any amount of prose.


Session portability

Migrate a login from any Camoufox-lineage browser into Ghostfox, without burning the session.

The golden rule: the identity must match the origin device. Cookies carried by a mismatched fingerprint look like an impossible login β€” anti-fraud systems may revoke ALL sessions for the account (observed on LinkedIn; it took the origin browser down too).

  1. Read the source browser's fingerprint first: navigator.userAgent, Intl.DateTimeFormat().resolvedOptions().timeZone, navigator.language, screen.width x height, devicePixelRatio, navigator.hardwareConcurrency, and the WebGL renderer (WEBGL_debug_renderer_info).
  2. Write those values into the profile's identity.toml (platform, locale, timezone, screen, hardware) before the first boot.
  3. Export cookies from the source browser (Playwright storageState JSON or its profile's cookies.sqlite).
  4. Inject, respecting the Firefox 152 schema:
    • expiry is MILLISECONDS β€” Playwright gives seconds, multiply by 1000;
    • schemeMap must be 256;
    • lastAccessed / creationTime / updateTime are microseconds. A seconds-value expiry reads as 1970 and Firefox purges the cookie silently.
  5. Boot with profile_dir, verify login once on the feed, then act. Never hard-kill (SIGKILL) the engine mid-session if you care about freshly-rotated tokens.

Full protocol with the failure story: AGENTS.md Β§8.


Recipes on the way

  • 🍳 Solving a GeeTest icon-click end-to-end (with receipts)
  • 🍳 Automated posting to X with receipts + escalation
  • 🍳 Ghostfox on a server, phone as the client
  • 🍳 Multi-account management with persistent profiles
  • 🍳 Docker deployment with a compose file

(Claim one by opening a Discussion or just write the page.)

Ghostfox Wiki

Clone this wiki locally