Firefox proxy profile manager
Project description
foxglove
Foxglove is a Firefox wrapper with two purposes:
-
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. -
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f3d7d8289d7b983949adfd3f06c66b21435ef6cdc64e71ae590d47a56fb8826
|
|
| MD5 |
4952ec9503685200da4382ae768c5705
|
|
| BLAKE2b-256 |
6cc812227466a75e79dab5121c669ec680647ea96978dedb45f9cf8074c89b01
|
Provenance
The following attestation bundles were made for foxglove-0.2.1.tar.gz:
Publisher:
publish.yml on adamreiser/foxglove
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
foxglove-0.2.1.tar.gz -
Subject digest:
3f3d7d8289d7b983949adfd3f06c66b21435ef6cdc64e71ae590d47a56fb8826 - Sigstore transparency entry: 1239425247
- Sigstore integration time:
-
Permalink:
adamreiser/foxglove@1129f8a7ed3b11b57ef0eecc3da7396e6c78a0de -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/adamreiser
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1129f8a7ed3b11b57ef0eecc3da7396e6c78a0de -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5019fccf6f52a66023eee5c4834c98776d628b82339ae7bf3883e2952b91724
|
|
| MD5 |
45f2929fcc64a2d85af2523a1186f600
|
|
| BLAKE2b-256 |
90b0abfac74a549ddff575b5b420f16f0c2dc1bc67be73e95598698009ca9623
|
Provenance
The following attestation bundles were made for foxglove-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on adamreiser/foxglove
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
foxglove-0.2.1-py3-none-any.whl -
Subject digest:
b5019fccf6f52a66023eee5c4834c98776d628b82339ae7bf3883e2952b91724 - Sigstore transparency entry: 1239425248
- Sigstore integration time:
-
Permalink:
adamreiser/foxglove@1129f8a7ed3b11b57ef0eecc3da7396e6c78a0de -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/adamreiser
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1129f8a7ed3b11b57ef0eecc3da7396e6c78a0de -
Trigger Event:
release
-
Statement type: