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.1.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.1-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: foxglove-0.2.1.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.1.tar.gz
Algorithm Hash digest
SHA256 3f3d7d8289d7b983949adfd3f06c66b21435ef6cdc64e71ae590d47a56fb8826
MD5 4952ec9503685200da4382ae768c5705
BLAKE2b-256 6cc812227466a75e79dab5121c669ec680647ea96978dedb45f9cf8074c89b01

See more details on using hashes here.

Provenance

The following attestation bundles were made for foxglove-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: foxglove-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 9.3 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b5019fccf6f52a66023eee5c4834c98776d628b82339ae7bf3883e2952b91724
MD5 45f2929fcc64a2d85af2523a1186f600
BLAKE2b-256 90b0abfac74a549ddff575b5b420f16f0c2dc1bc67be73e95598698009ca9623

See more details on using hashes here.

Provenance

The following attestation bundles were made for foxglove-0.2.1-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