Skip to content

Read

Profiles

Sign in once in a Frankensurf browser, then read signed-in pages through any tool that can carry the session.

A profile is a login that belongs to Frankensurf, not to one browser. You sign in once; after that, a read can carry the session through whichever tool gets the page, and signed-in reads climb the same escalation ladder as everything else.

  • The session (cookies and local storage) is encrypted on disk. Your agent passes a profile name, never a cookie.
  • Each profile covers a list of sites. Its cookies go only to those sites, and a profile read of any other site is refused.
  • A profile pins one fingerprint (user agent, locale, timezone, window size), so the site sees the same browser every time.
  • Each read saves the refreshed cookies back, so sessions stay current.
  1. Sign in once.

    Terminal window
    frankensurf profile-login shopping --site example-shop.com

    A Frankensurf browser window opens. Sign in as you normally would (2FA included), then close the window. Frankensurf never types or clicks here.

  2. Check it.

    Terminal window
    frankensurf profile-list
page = await web.read("https://www.example-shop.com/orders",
policy_overrides={"profile": "shopping"})

receipt.profile shows the profile, its version and the tool that carried it.

Sharing Tools
local (default) HTTP with the cookies, Chromium, Patchright
hosted adds Steel, Browserbase, Hyperbrowser, Browserless, Kernel, Anchor

Choose with --sharing hosted on profile-login. hosted puts the session on that service’s servers while it reads. Camoufox is Firefox, so it would contradict a profile’s Chromium fingerprint and doesn’t carry profiles. Scrape APIs don’t carry them either.

A read that lands on a sign-in page fails with AUTH_REQUIRED, and receipt.next_step names the command that fixes it: frankensurf profile-login shopping --site example-shop.com. Signing in again updates the same profile.

Profiles are AES-GCM files in ~/.local/share/frankensurf/profiles, readable only by you. The key is FRANKENSURF_PROFILE_KEY (32 random bytes, base64) if you set it, which lets you keep it in a secrets manager such as Infisical; otherwise a key file is created at ~/.config/frankensurf/profile.key with mode 600. Without the key, the profile files are unreadable.

Command Does
profile-login NAME --site SITE [--site ...] [--sharing local|hosted] Sign in and save, or refresh an existing profile
profile-list Names, sites, sharing level and cookie counts; never the session
profile-delete NAME Remove a profile