Skip to main content

Firefox proxy profile manager

Project description

foxglove

Foxglove is a Firefox wrapper with two purposes:

  1. Programmatically generate Firefox profiles with preferences that disable, where possible, Firefox's built-in advertising, pop-ups, telemetry, experiments, and similar features. Generated profiles are stored in ~/.foxglove/profiles.

  2. Optionally ssh to a remote host and configure the Firefox profile to use that connection as a SOCKS proxy.

Installation

Requires Python 3.10+.

pip install foxglove

Usage

usage: foxglove [-h] [--chrome path] [--content path] [-d] [-e] [-a add-on]
                profile [host]

foxglove - a Firefox profile and proxy manager

positional arguments:
  profile         the name of the foxglove-managed profile to use or create
  host            SSH server hostname; foxglove will connect via ssh(1) and
                  configure Firefox to use it as a SOCKS proxy

options:
  -h, --help      show this help message and exit
  --chrome path   path to a userChrome.css file to add to the profile
  --content path  path to a userContent.css file to add to the profile
  -d              dry run (don't launch Firefox)
  -e              ephemeral (delete profile on exit)
  -a add-on       download and install an add-on from addons.mozilla.org;
                  repeatable

Add-ons (-a) — The value for -a is the URL slug after /firefox/addon/ on the Mozilla Add-ons page; for example, https://addons.mozilla.org/firefox/addon/ublock-origin/-a ublock-origin. You can pass -a multiple times to install several extensions.

To use the "host" argument, configure a corresponding Host entry in your ~/.ssh/config such that you can ssh to it with no additional arguments. The remote host must allow port forwarding.

Foxglove launches Firefox via a subprocess call to "firefox". On macOS, the Firefox binary is not typically in PATH, so foxglove first appends /Applications/Firefox.app/Contents/MacOS to PATH. Prepending another directory to PATH may be used to select a particular Firefox installation. For example, you might launch Firefox Nightly on macOS like this:

PATH="/Applications/Firefox Nightly.app/Contents/MacOS:$PATH" foxglove example

Development

Requires uv.

uv sync

# Lint
uv run ruff check .

# Format
uv run ruff format .

# Test
uv run pytest

Preferences

Foxglove preferences target Firefox 135+ and are cross-referenced with arkenfox user.js. See prefs.js for the full list.

Preference changes made to a foxglove-managed profile will reset to foxglove's default values on the next run. To retain changes, you can either use the generated profile as a normal Firefox profile without foxglove, or modify your installation of foxglove's prefs.js file with your desired preferences.

Some foxglove defaults to consider changing:

Key Default Foxglove Comments
dom.event.clipboardevents.enabled true false May break copy/paste on some sites
media.peerconnection.enabled true false Breaks video calls
network.trr.mode 0 0 Set to 2 or 3 to enable DNS-over-HTTPS

Related projects

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

foxglove-0.2.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

foxglove-0.2.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file foxglove-0.2.0.tar.gz.

File metadata

  • Download URL: foxglove-0.2.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for foxglove-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3f3af8c724925f63de6d9bb35f58956809dd50f37d6c6bfcf2a5b9bf51658e1a
MD5 1b6b2a4930c6b7ee680e36fc4196cbfe
BLAKE2b-256 36d65b17eb4134793b40d34273acf9d6060584cad5ed1176665f7e1004ea1e2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for foxglove-0.2.0.tar.gz:

Publisher: publish.yml on adamreiser/foxglove

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file foxglove-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: foxglove-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for foxglove-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d076585b876a24140497d28d8e34dce93cb6f9ef8b7056b238abbb482fbcc4f4
MD5 975788fe607af66b78f8c3840e1cf68e
BLAKE2b-256 6df27164bec91ce4e06c26b71d395840ce3756359452e81d151a9c3e55c2df7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for foxglove-0.2.0-py3-none-any.whl:

Publisher: publish.yml on adamreiser/foxglove

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page