mirror of
https://github.com/arkenfox/user.js.git
synced 2026-06-28 23:32:06 +05:30
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e88889602 | |||
| 6a2ac2c4c4 | |||
| 274d5ad901 | |||
| 2c594e56a2 | |||
| a724883c05 | |||
| 4e94234f46 | |||
| c90135cf86 | |||
| 54956e548a | |||
| 5ca8f0c10c | |||
| e1dd797b38 | |||
| 669930fd21 | |||
| dd081db007 | |||
| 59c17aad4c | |||
| 845872ca65 | |||
| 7c4444167f | |||
| bfcb3659c1 | |||
| e69b54487c | |||
| c569822cd1 | |||
| 1f58af5cf6 | |||
| 8cd31371f2 | |||
| 1c76110c4c | |||
| d01f1e971e | |||
| ba7f0cee9a | |||
| 7007e28e4e | |||
| a05d90d612 | |||
| 0ef5f72c5f | |||
| c5087d6522 | |||
| ff92cee8f0 | |||
| 934a339e41 | |||
| ae6242bded | |||
| 9ad1ce561f |
@@ -1,5 +1,3 @@
|
|||||||
This repo and the interative webpage linked below are the **_only official sources_** - do not trust any other sites claiming to be Arkenfox
|
|
||||||
|
|
||||||
### 🟪 user.js
|
### 🟪 user.js
|
||||||
A `user.js` is a configuration file that can control Firefox settings - for a more technical breakdown and explanation, you can read more in the [wiki](https://github.com/arkenfox/user.js/wiki/2.1-User.js)
|
A `user.js` is a configuration file that can control Firefox settings - for a more technical breakdown and explanation, you can read more in the [wiki](https://github.com/arkenfox/user.js/wiki/2.1-User.js)
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/******
|
/******
|
||||||
* name: arkenfox user.js
|
* name: arkenfox user.js
|
||||||
* date: 30 June 2026
|
* date: 30 January 2026
|
||||||
* version: 151
|
* version: 147
|
||||||
* urls: https://github.com/arkenfox/user.js [repo]
|
* urls: https://github.com/arkenfox/user.js [repo]
|
||||||
* : https://arkenfox.github.io/gui/ [interactive]
|
* : https://arkenfox.github.io/gui/ [interactive]
|
||||||
* license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt
|
* license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt
|
||||||
@@ -161,16 +161,12 @@ user_pref("network.connectivity-service.enabled", false);
|
|||||||
SB has taken many steps to preserve privacy. If required, a full url is never sent
|
SB has taken many steps to preserve privacy. If required, a full url is never sent
|
||||||
to Google, only a part-hash of the prefix, hidden with noise of other real part-hashes.
|
to Google, only a part-hash of the prefix, hidden with noise of other real part-hashes.
|
||||||
Firefox takes measures such as stripping out identifying parameters and since SBv4 (FF57+)
|
Firefox takes measures such as stripping out identifying parameters and since SBv4 (FF57+)
|
||||||
doesn't even use cookies. (#Turn on browser.safebrowsing.debug to monitor this activity).
|
doesn't even use cookies. (#Turn on browser.safebrowsing.debug to monitor this activity)
|
||||||
|
|
||||||
FF147+ uses SBv5 which incorporates Oblivous HTTP [5] and SBv5's local list mode [6]
|
|
||||||
|
|
||||||
[1] https://feeding.cloud.geek.nz/posts/how-safe-browsing-works-in-firefox/
|
[1] https://feeding.cloud.geek.nz/posts/how-safe-browsing-works-in-firefox/
|
||||||
[2] https://wiki.mozilla.org/Security/Safe_Browsing
|
[2] https://wiki.mozilla.org/Security/Safe_Browsing
|
||||||
[3] https://support.mozilla.org/kb/how-does-phishing-and-malware-protection-work
|
[3] https://support.mozilla.org/kb/how-does-phishing-and-malware-protection-work
|
||||||
[4] https://educatedguesswork.org/posts/safe-browsing-privacy/
|
[4] https://educatedguesswork.org/posts/safe-browsing-privacy/
|
||||||
[5] https://developers.google.com/safe-browsing/reference
|
|
||||||
[6] https://developers.google.com/safe-browsing/reference/Local.List.Mode
|
|
||||||
***/
|
***/
|
||||||
user_pref("_user.js.parrot", "0400 syntax error: the parrot's passed on!");
|
user_pref("_user.js.parrot", "0400 syntax error: the parrot's passed on!");
|
||||||
/* 0401: disable SB (Safe Browsing)
|
/* 0401: disable SB (Safe Browsing)
|
||||||
@@ -394,7 +390,7 @@ user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!");
|
|||||||
* but the problem is that the browser can't know that. Setting this pref to true is the only way for the
|
* but the problem is that the browser can't know that. Setting this pref to true is the only way for the
|
||||||
* browser to ensure there will be no unsafe renegotiations on the channel between the browser and the server
|
* browser to ensure there will be no unsafe renegotiations on the channel between the browser and the server
|
||||||
* [SETUP-WEB] SSL_ERROR_UNSAFE_NEGOTIATION: is it worth overriding this for that one site?
|
* [SETUP-WEB] SSL_ERROR_UNSAFE_NEGOTIATION: is it worth overriding this for that one site?
|
||||||
* [STATS] SSL Labs (June 2025) reports almost 99.85% of top sites have secure renegotiation [4]
|
* [STATS] SSL Labs (Nov 2025) reports almost 99.85% of top sites have secure renegotiation [4]
|
||||||
* [1] https://wiki.mozilla.org/Security:Renegotiation
|
* [1] https://wiki.mozilla.org/Security:Renegotiation
|
||||||
* [2] https://datatracker.ietf.org/doc/html/rfc5746
|
* [2] https://datatracker.ietf.org/doc/html/rfc5746
|
||||||
* [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555
|
* [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555
|
||||||
@@ -421,7 +417,7 @@ user_pref("security.cert_pinning.enforcement_level", 2);
|
|||||||
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071
|
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071
|
||||||
* [2] https://blog.mozilla.org/security/tag/crlite/
|
* [2] https://blog.mozilla.org/security/tag/crlite/
|
||||||
* [3] https://hacks.mozilla.org/2025/08/crlite-fast-private-and-comprehensive-certificate-revocation-checking-in-firefox/ ***/
|
* [3] https://hacks.mozilla.org/2025/08/crlite-fast-private-and-comprehensive-certificate-revocation-checking-in-firefox/ ***/
|
||||||
user_pref("security.remote_settings.crlite_filters.enabled", true); // [DEFAULT: true]
|
user_pref("security.remote_settings.crlite_filters.enabled", true); // [DEFAULT: true FF137+]
|
||||||
user_pref("security.pki.crlite_mode", 2); // [DEFAULT: 2 FF142+]
|
user_pref("security.pki.crlite_mode", 2); // [DEFAULT: 2 FF142+]
|
||||||
|
|
||||||
/** MIXED CONTENT ***/
|
/** MIXED CONTENT ***/
|
||||||
@@ -758,6 +754,10 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
|
|||||||
Modifier events suppressed are SHIFT and both ALT keys. Chrome is not affected.
|
Modifier events suppressed are SHIFT and both ALT keys. Chrome is not affected.
|
||||||
1459089 - disable OS locale in HTTP Accept-Language headers (ANDROID) (FF62)
|
1459089 - disable OS locale in HTTP Accept-Language headers (ANDROID) (FF62)
|
||||||
1479239 - return "no-preference" with prefers-reduced-motion (FF63)
|
1479239 - return "no-preference" with prefers-reduced-motion (FF63)
|
||||||
|
1363508 & 1826051 & 1957658 - spoof/suppress Pointer Events, spoof maxTouchPoints (FF64, FF132, FF143, ESR140.2)
|
||||||
|
FF64: maxTouchPoints: 0 = desktop
|
||||||
|
FF132: maxTouchPoints: 0 = mac | 10 = windows, linux, mobile
|
||||||
|
FF143/140.2: maxTouchPoints: 0 = mac, linux | 10 = windows | 5 = mobile
|
||||||
1492766 - spoof pointerEvent.pointerid (FF65)
|
1492766 - spoof pointerEvent.pointerid (FF65)
|
||||||
1485266 - disable exposure of system colors to CSS or canvas (FF67)
|
1485266 - disable exposure of system colors to CSS or canvas (FF67)
|
||||||
1494034 - return "light" with prefers-color-scheme (FF67)
|
1494034 - return "light" with prefers-color-scheme (FF67)
|
||||||
@@ -775,11 +775,6 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
|
|||||||
1787790 - normalize system fonts (FF128)
|
1787790 - normalize system fonts (FF128)
|
||||||
1835987 - spoof timezone as Atlantic/Reykjavik (previously FF55+ was UTC) (FF128)
|
1835987 - spoof timezone as Atlantic/Reykjavik (previously FF55+ was UTC) (FF128)
|
||||||
1656377 - spoof pointerEvents azimuthAngle and altitudeAngle (FF131)
|
1656377 - spoof pointerEvents azimuthAngle and altitudeAngle (FF131)
|
||||||
1826051 & 1957658 & 2021715 - spoof/suppress Pointer Events, spoof maxTouchPoints (FF132, FF143/ESR140.2, FF150)
|
|
||||||
previously FF64+ (1363508) it always returned maxTouchPoints as 0
|
|
||||||
FF132: 0 = mac | 10 = windows, linux, mobile
|
|
||||||
FF143: 0 = mac, linux | 10 = windows | 5 = mobile | no longer spoof touch PointerEvents | backported to ESR140.2
|
|
||||||
FF150: 5 = linux
|
|
||||||
1834307 - always use smooth scrolling (FF132)
|
1834307 - always use smooth scrolling (FF132)
|
||||||
1918202 - spoof screen orientation based on spoofed screen size and platform (FF132)
|
1918202 - spoof screen orientation based on spoofed screen size and platform (FF132)
|
||||||
previously FF50+ it always returned landscape-primary and an angle of 0
|
previously FF50+ it always returned landscape-primary and an angle of 0
|
||||||
@@ -1035,7 +1030,21 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false]
|
|||||||
/* 6012: enforce Quarantined Domains [FF115+]
|
/* 6012: enforce Quarantined Domains [FF115+]
|
||||||
* [WHY] https://support.mozilla.org/kb/quarantined-domains ***/
|
* [WHY] https://support.mozilla.org/kb/quarantined-domains ***/
|
||||||
user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true]
|
user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true]
|
||||||
/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF140+ ***/
|
/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF128+ ***/
|
||||||
|
// user_pref("privacy.clearOnShutdown.cache", "");
|
||||||
|
// user_pref("privacy.clearOnShutdown.cookies", "");
|
||||||
|
// user_pref("privacy.clearOnShutdown.downloads", "");
|
||||||
|
// user_pref("privacy.clearOnShutdown.formdata", "");
|
||||||
|
// user_pref("privacy.clearOnShutdown.history", "");
|
||||||
|
// user_pref("privacy.clearOnShutdown.offlineApps", "");
|
||||||
|
// user_pref("privacy.clearOnShutdown.sessions", "");
|
||||||
|
// user_pref("privacy.cpd.cache", "");
|
||||||
|
// user_pref("privacy.cpd.cookies", "");
|
||||||
|
// user_pref("privacy.cpd.formdata", "");
|
||||||
|
// user_pref("privacy.cpd.history", "");
|
||||||
|
// user_pref("privacy.cpd.offlineApps", "");
|
||||||
|
// user_pref("privacy.cpd.sessions", "");
|
||||||
|
/* 6051: prefsCleaner: reset previously active items removed from arkenfox FF140+ ***/
|
||||||
// user_pref("browser.display.use_system_colors", "");
|
// user_pref("browser.display.use_system_colors", "");
|
||||||
// user_pref("browser.urlbar.fakespot.featureGate", "");
|
// user_pref("browser.urlbar.fakespot.featureGate", "");
|
||||||
// user_pref("security.OCSP.enabled", "");
|
// user_pref("security.OCSP.enabled", "");
|
||||||
@@ -1064,7 +1073,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
|
|||||||
/* 7003: disable non-modern cipher suites [1]
|
/* 7003: disable non-modern cipher suites [1]
|
||||||
* [WHY] Passive fingerprinting. Minimal/non-existent threat of downgrade attacks
|
* [WHY] Passive fingerprinting. Minimal/non-existent threat of downgrade attacks
|
||||||
* [1] https://browserleaks.com/ssl ***/
|
* [1] https://browserleaks.com/ssl ***/
|
||||||
// user_pref("security.ssl3.ecdhe_ecdsa_aes_128_sha", false); // [DEFAULT: false FF150]
|
// user_pref("security.ssl3.ecdhe_ecdsa_aes_128_sha", false);
|
||||||
// user_pref("security.ssl3.ecdhe_ecdsa_aes_256_sha", false);
|
// user_pref("security.ssl3.ecdhe_ecdsa_aes_256_sha", false);
|
||||||
// user_pref("security.ssl3.ecdhe_rsa_aes_128_sha", false);
|
// user_pref("security.ssl3.ecdhe_rsa_aes_128_sha", false);
|
||||||
// user_pref("security.ssl3.ecdhe_rsa_aes_256_sha", false);
|
// user_pref("security.ssl3.ecdhe_rsa_aes_256_sha", false);
|
||||||
@@ -1110,9 +1119,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
|
|||||||
// user_pref("extensions.systemAddon.update.enabled", false); // [FF62+]
|
// user_pref("extensions.systemAddon.update.enabled", false); // [FF62+]
|
||||||
// user_pref("extensions.systemAddon.update.url", ""); // [FF44+]
|
// user_pref("extensions.systemAddon.update.url", ""); // [FF44+]
|
||||||
/* 7015: enable the DNT (Do Not Track) HTTP header
|
/* 7015: enable the DNT (Do Not Track) HTTP header
|
||||||
* [WHY] Fingerprintable. In FF141+ DNT is never enabled. DNT is slated for deprecation [1]
|
* [WHY] DNT is enforced with Tracking Protection which is used in ETP Strict (2701) ***/
|
||||||
[NOTE] In FF140, DNT is enforced with Tracking Protection which is used in ETP Strict (2701)
|
|
||||||
[1] https://bugzilla.mozilla.org/1967420 ***/
|
|
||||||
// user_pref("privacy.donottrackheader.enabled", true);
|
// user_pref("privacy.donottrackheader.enabled", true);
|
||||||
/* 7016: customize ETP settings
|
/* 7016: customize ETP settings
|
||||||
* [NOTE] FPP (fingerprintingProtection) is ignored when RFP (4501) is enabled
|
* [NOTE] FPP (fingerprintingProtection) is ignored when RFP (4501) is enabled
|
||||||
@@ -1152,16 +1159,10 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
|
|||||||
* [WHY] Passive and active fingerprinting. Mostly redundant with Tracking Protection
|
* [WHY] Passive and active fingerprinting. Mostly redundant with Tracking Protection
|
||||||
* in ETP Strict (2701) and sanitizing on close (2800s) ***/
|
* in ETP Strict (2701) and sanitizing on close (2800s) ***/
|
||||||
// user_pref("privacy.globalprivacycontrol.enabled", true);
|
// user_pref("privacy.globalprivacycontrol.enabled", true);
|
||||||
/* 7022: bFPP (baselineFingerprintingProtection) [FF139+]
|
|
||||||
* [WHY] Arkenfox only supports ETP Strict (2701) which enables FPP browser-wide (normal and private
|
|
||||||
* browsing window contexts). If FPP is enabled in the same context as bFPP, FPP takes precedence.
|
|
||||||
// user_pref("privacy.baselineFingerprintingProtection", true);
|
|
||||||
// user_pref("privacy.baselineFingerprintingProtection.granularOverrides", "");
|
|
||||||
// user_pref("privacy.baselineFingerprintingProtection.overrides", "");
|
|
||||||
|
|
||||||
/*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING
|
/*** [SECTION 8000]: DON'T BOTHER: FINGERPRINTING
|
||||||
[WHY] They are insufficient for fingerprinting protection and do more harm than good
|
[WHY] They are insufficient to help anti-fingerprinting and do more harm than good
|
||||||
[WARNING] DO NOT USE: they can interfere with built-in solutions such as RFP and FPP
|
[WARNING] DO NOT USE with RFP. RFP already covers these and they can interfere
|
||||||
***/
|
***/
|
||||||
user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan");
|
user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan");
|
||||||
/* 8001: prefsCleaner: reset items useless for anti-fingerprinting ***/
|
/* 8001: prefsCleaner: reset items useless for anti-fingerprinting ***/
|
||||||
@@ -1191,8 +1192,6 @@ user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan
|
|||||||
Arkenfox does not consider Firefox telemetry to be a privacy or security concern - comments below.
|
Arkenfox does not consider Firefox telemetry to be a privacy or security concern - comments below.
|
||||||
But since most arkenfox users prefer it disabled, we'll do that rather than cause overrides.
|
But since most arkenfox users prefer it disabled, we'll do that rather than cause overrides.
|
||||||
|
|
||||||
READ: https://ritter.vg/blog-telemetry.html
|
|
||||||
|
|
||||||
Opt-out
|
Opt-out
|
||||||
- Telemetry is essential: a browser engine is a _very_ large complex beast costing billions to maintain
|
- Telemetry is essential: a browser engine is a _very_ large complex beast costing billions to maintain
|
||||||
- Opt-in telemetry _does not_ work and results in data that is unrepresentative and may be misleading
|
- Opt-in telemetry _does not_ work and results in data that is unrepresentative and may be misleading
|
||||||
@@ -1263,5 +1262,21 @@ user_pref("network.predictor.enabled", false); // [DEFAULT: false FF144+]
|
|||||||
user_pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: false]
|
user_pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: false]
|
||||||
// ***/
|
// ***/
|
||||||
|
|
||||||
|
/* ESR128.x still uses all the following prefs
|
||||||
|
// [NOTE] replace the * with a slash in the line above to re-enable active ones
|
||||||
|
// FF132
|
||||||
|
// 2617: remove webchannel whitelist
|
||||||
|
// [-] https://bugzilla.mozilla.org/1275612
|
||||||
|
// user_pref("webchannel.allowObject.urlWhitelist", "");
|
||||||
|
// FF140
|
||||||
|
// 0323: disable shopping experience [FF116+]
|
||||||
|
// [-] https://bugzilla.mozilla.org/1964845
|
||||||
|
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1840156#c0
|
||||||
|
user_pref("browser.shopping.experience2023.enabled", false); // [DEFAULT: false]
|
||||||
|
// 0806: disable urlbar suggestions
|
||||||
|
// [-] https://bugzilla.mozilla.org/1959497
|
||||||
|
user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false]
|
||||||
|
// ***/
|
||||||
|
|
||||||
/* END: internal custom pref to test for syntax errors ***/
|
/* END: internal custom pref to test for syntax errors ***/
|
||||||
user_pref("_user.js.parrot", "SUCCESS: No no he's not dead, he's, he's restin'!");
|
user_pref("_user.js.parrot", "SUCCESS: No no he's not dead, he's, he's restin'!");
|
||||||
|
|||||||
Reference in New Issue
Block a user