Initial arkenfox user.js commit
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
### 🟪 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)
|
||||||
|
|
||||||
|
### 🟩 the arkenfox user.js
|
||||||
|
|
||||||
|
[](https://opensource.org/licenses/MIT)
|
||||||
|
|
||||||
|
The `arkenfox user.js` is a **template** which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
|
||||||
|
|
||||||
|
Everyone, experts included, should at least read the [wiki](https://github.com/arkenfox/user.js/wiki), as it contains important information regarding a few `user.js` settings. There is also an [interactive current release](https://arkenfox.github.io/gui/), thanks to [icpantsparti2](https://github.com/icpantsparti2).
|
||||||
|
|
||||||
|
Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://2019.www.torproject.org/about/torusers.html) calls for it, or for accessing hidden services.
|
||||||
|
|
||||||
|
Also be aware that the `arkenfox user.js` is made specifically for desktop Firefox. Using it as-is in other Gecko-based browsers can be counterproductive, especially in the Tor Browser.
|
||||||
|
|
||||||
|
### 🟧 sitemap
|
||||||
|
|
||||||
|
- [releases](https://github.com/arkenfox/user.js/releases)
|
||||||
|
- [changelogs](https://github.com/arkenfox/user.js/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Achangelog)
|
||||||
|
- [wiki](https://github.com/arkenfox/user.js/wiki)
|
||||||
|
- [stickies](https://github.com/arkenfox/user.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22sticky+topic%22)
|
||||||
|
- [diffs](https://github.com/arkenfox/user.js/issues?q=is%3Aissue+label%3Adiffs)
|
||||||
|
- [common questions and answers](https://github.com/arkenfox/user.js/issues?q=is%3Aissue+label%3Aanswered)
|
||||||
|
|
||||||
|
### 🟥 acknowledgments
|
||||||
|
Literally thousands of sources, references and suggestions. Many thanks, and much appreciated.
|
||||||
Executable
+185
@@ -0,0 +1,185 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
## prefs.js cleaner for Linux/Mac
|
||||||
|
## author: @claustromaniac
|
||||||
|
## version: 2.1
|
||||||
|
|
||||||
|
## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh
|
||||||
|
|
||||||
|
## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in update_prefsCleaner() )
|
||||||
|
|
||||||
|
readonly CURRDIR=$(pwd)
|
||||||
|
|
||||||
|
## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed)
|
||||||
|
SCRIPT_FILE=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
||||||
|
|
||||||
|
## fallback for Macs without coreutils
|
||||||
|
[ -z "$SCRIPT_FILE" ] && SCRIPT_FILE=${BASH_SOURCE[0]}
|
||||||
|
|
||||||
|
|
||||||
|
AUTOUPDATE=true
|
||||||
|
QUICKSTART=false
|
||||||
|
|
||||||
|
## download method priority: curl -> wget
|
||||||
|
DOWNLOAD_METHOD=''
|
||||||
|
if command -v curl >/dev/null; then
|
||||||
|
DOWNLOAD_METHOD='curl --max-redirs 3 -so'
|
||||||
|
elif command -v wget >/dev/null; then
|
||||||
|
DOWNLOAD_METHOD='wget --max-redirect 3 --quiet -O'
|
||||||
|
else
|
||||||
|
AUTOUPDATE=false
|
||||||
|
echo -e "No curl or wget detected.\nAutomatic self-update disabled!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
fQuit() {
|
||||||
|
## change directory back to the original working directory
|
||||||
|
cd "${CURRDIR}"
|
||||||
|
[ "$1" -eq 0 ] && echo -e "\n$2" || echo -e "\n$2" >&2
|
||||||
|
exit $1
|
||||||
|
}
|
||||||
|
|
||||||
|
fUsage() {
|
||||||
|
echo -e "\nUsage: $0 [-ds]"
|
||||||
|
echo -e "
|
||||||
|
Optional Arguments:
|
||||||
|
-s Start immediately
|
||||||
|
-d Don't auto-update prefsCleaner.sh"
|
||||||
|
}
|
||||||
|
|
||||||
|
download_file() { # expects URL as argument ($1)
|
||||||
|
declare -r tf=$(mktemp)
|
||||||
|
|
||||||
|
$DOWNLOAD_METHOD "${tf}" "$1" &>/dev/null && echo "$tf" || echo '' # return the temp-filename or empty string on error
|
||||||
|
}
|
||||||
|
|
||||||
|
fFF_check() {
|
||||||
|
# there are many ways to see if firefox is running or not, some more reliable than others
|
||||||
|
# this isn't elegant and might not be future-proof but should at least be compatible with any environment
|
||||||
|
while [ -e lock ]; do
|
||||||
|
echo -e "\nThis Firefox profile seems to be in use. Close Firefox and try again.\n" >&2
|
||||||
|
read -r -p "Press any key to continue."
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
## returns the version number of a prefsCleaner.sh file
|
||||||
|
get_prefsCleaner_version() {
|
||||||
|
echo "$(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$1")"
|
||||||
|
}
|
||||||
|
|
||||||
|
## updates the prefsCleaner.sh file based on the latest public version
|
||||||
|
update_prefsCleaner() {
|
||||||
|
declare -r tmpfile="$(download_file 'https://raw.githubusercontent.com/arkenfox/user.js/master/prefsCleaner.sh')"
|
||||||
|
[ -z "$tmpfile" ] && echo -e "Error! Could not download prefsCleaner.sh" && return 1 # check if download failed
|
||||||
|
|
||||||
|
[[ $(get_prefsCleaner_version "$SCRIPT_FILE") == $(get_prefsCleaner_version "$tmpfile") ]] && return 0
|
||||||
|
|
||||||
|
mv "$tmpfile" "$SCRIPT_FILE"
|
||||||
|
chmod u+x "$SCRIPT_FILE"
|
||||||
|
"$SCRIPT_FILE" "$@" -d
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
fClean() {
|
||||||
|
# the magic happens here
|
||||||
|
prefs="@@"
|
||||||
|
prefexp="user_pref[ ]*\([ ]*[\"']([^\"']+)[\"'][ ]*,"
|
||||||
|
while read -r line; do
|
||||||
|
if [[ "$line" =~ $prefexp && $prefs != *"@@${BASH_REMATCH[1]}@@"* ]]; then
|
||||||
|
prefs="${prefs}${BASH_REMATCH[1]}@@"
|
||||||
|
fi
|
||||||
|
done <<< "$(grep -E "$prefexp" user.js)"
|
||||||
|
|
||||||
|
while IFS='' read -r line || [[ -n "$line" ]]; do
|
||||||
|
if [[ "$line" =~ ^$prefexp ]]; then
|
||||||
|
if [[ $prefs != *"@@${BASH_REMATCH[1]}@@"* ]]; then
|
||||||
|
echo "$line"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$line"
|
||||||
|
fi
|
||||||
|
done < "$1" > prefs.js
|
||||||
|
}
|
||||||
|
|
||||||
|
fStart() {
|
||||||
|
if [ ! -e user.js ]; then
|
||||||
|
fQuit 1 "user.js not found in the current directory."
|
||||||
|
elif [ ! -e prefs.js ]; then
|
||||||
|
fQuit 1 "prefs.js not found in the current directory."
|
||||||
|
fi
|
||||||
|
|
||||||
|
fFF_check
|
||||||
|
mkdir -p prefsjs_backups
|
||||||
|
bakfile="prefsjs_backups/prefs.js.backup.$(date +"%Y-%m-%d_%H%M")"
|
||||||
|
mv prefs.js "${bakfile}" || fQuit 1 "Operation aborted.\nReason: Could not create backup file $bakfile"
|
||||||
|
echo -e "\nprefs.js backed up: $bakfile"
|
||||||
|
echo "Cleaning prefs.js..."
|
||||||
|
fClean "$bakfile"
|
||||||
|
fQuit 0 "All done!"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
while getopts "sd" opt; do
|
||||||
|
case $opt in
|
||||||
|
s)
|
||||||
|
QUICKSTART=true
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
AUTOUPDATE=false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
## change directory to the Firefox profile directory
|
||||||
|
cd "$(dirname "${SCRIPT_FILE}")"
|
||||||
|
|
||||||
|
# Check if running as root and if any files have the owner as root/wheel.
|
||||||
|
if [ "${EUID:-"$(id -u)"}" -eq 0 ]; then
|
||||||
|
fQuit 1 "You shouldn't run this with elevated privileges (such as with doas/sudo)."
|
||||||
|
elif [ -n "$(find ./ -user 0)" ]; then
|
||||||
|
printf 'It looks like this script was previously run with elevated privileges,
|
||||||
|
you will need to change ownership of the following files to your user:\n'
|
||||||
|
find . -user 0
|
||||||
|
fQuit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ "$AUTOUPDATE" = true ] && update_prefsCleaner "$@"
|
||||||
|
|
||||||
|
echo -e "\n\n"
|
||||||
|
echo " ╔══════════════════════════╗"
|
||||||
|
echo " ║ prefs.js cleaner ║"
|
||||||
|
echo " ║ by claustromaniac ║"
|
||||||
|
echo " ║ v2.1 ║"
|
||||||
|
echo " ╚══════════════════════════╝"
|
||||||
|
echo -e "\nThis script should be run from your Firefox profile directory.\n"
|
||||||
|
echo "It will remove any entries from prefs.js that also exist in user.js."
|
||||||
|
echo "This will allow inactive preferences to be reset to their default values."
|
||||||
|
echo -e "\nThis Firefox profile shouldn't be in use during the process.\n"
|
||||||
|
|
||||||
|
[ "$QUICKSTART" = true ] && fStart
|
||||||
|
|
||||||
|
echo -e "\nIn order to proceed, select a command below by entering its corresponding number.\n"
|
||||||
|
|
||||||
|
select option in Start Help Exit; do
|
||||||
|
case $option in
|
||||||
|
Start)
|
||||||
|
fStart
|
||||||
|
;;
|
||||||
|
Help)
|
||||||
|
fUsage
|
||||||
|
echo -e "\nThis script creates a backup of your prefs.js file before doing anything."
|
||||||
|
echo -e "It should be safe, but you can follow these steps if something goes wrong:\n"
|
||||||
|
echo "1. Make sure Firefox is closed."
|
||||||
|
echo "2. Delete prefs.js in your profile folder."
|
||||||
|
echo "3. Delete Invalidprefs.js if you have one in the same folder."
|
||||||
|
echo "4. Rename or copy your latest backup to prefs.js."
|
||||||
|
echo "5. Run Firefox and see if you notice anything wrong with it."
|
||||||
|
echo "6. If you do notice something wrong, especially with your extensions, and/or with the UI, go to about:support, and restart Firefox with add-ons disabled. Then, restart it again normally, and see if the problems were solved."
|
||||||
|
echo -e "If you are able to identify the cause of your issues, please bring it up on the arkenfox user.js GitHub repository.\n"
|
||||||
|
;;
|
||||||
|
Exit)
|
||||||
|
fQuit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
fQuit 0
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
/***
|
||||||
|
This will reset the preferences that since FF91 have been
|
||||||
|
- removed from the arkenfox user.js
|
||||||
|
- deprecated by Mozilla but listed in the arkenfox user.js in the past
|
||||||
|
|
||||||
|
There is an archived version at https://github.com/arkenfox/user.js/issues/123
|
||||||
|
if you want the full list since jesus
|
||||||
|
|
||||||
|
Last updated: 14-August-2025
|
||||||
|
|
||||||
|
Instructions:
|
||||||
|
- [optional] close Firefox and backup your profile
|
||||||
|
- [optional] disable your network connection [1]
|
||||||
|
- start Firefox
|
||||||
|
- load about:config and press Ctrl+Shift+K to open the Web Console for about:config
|
||||||
|
- using about:config is important, so the script has the right permissions
|
||||||
|
- paste this script
|
||||||
|
- if you edited the list of prefs in the script, make sure the last pref does not have a trailing comma
|
||||||
|
- hit enter
|
||||||
|
- check the Info output to see which prefs were reset
|
||||||
|
- restart
|
||||||
|
- some prefs require a restart
|
||||||
|
- a restart will reapply your user.js
|
||||||
|
- [optional] re-enable your network connection
|
||||||
|
|
||||||
|
[1] Blocking Firefox from the internet ensures it cannot act on your reset preferences in the
|
||||||
|
period before you restart it, such as app and extension auto-updating, or downloading unwanted
|
||||||
|
components (GMP etc). It depends on what you're resetting and how long before you restart.
|
||||||
|
|
||||||
|
***/
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
|
||||||
|
if ('undefined' === typeof(Services)) return alert('about:config needs to be the active tab!');
|
||||||
|
|
||||||
|
const aPREFS = [
|
||||||
|
/* DEPRECATED */
|
||||||
|
/* 129-140 */
|
||||||
|
'browser.shopping.experience2023.enabled', // 140
|
||||||
|
'browser.urlbar.pocket.featureGate', // 140
|
||||||
|
'media.ondevicechange.enabled', // 137
|
||||||
|
'webchannel.allowObject.urlWhitelist', // 132
|
||||||
|
/* 116-128 */
|
||||||
|
'browser.contentanalysis.default_allow', // 127
|
||||||
|
'browser.messaging-system.whatsNewPanel.enabled', // 126
|
||||||
|
'browser.ping-centre.telemetry', // 123
|
||||||
|
'dom.webnotifications.serviceworker.enabled', // 117
|
||||||
|
'javascript.use_us_english_locale', // 119
|
||||||
|
'layout.css.font-visibility.private', // 118
|
||||||
|
'layout.css.font-visibility.resistFingerprinting', // 116
|
||||||
|
'layout.css.font-visibility.standard', // 118
|
||||||
|
'layout.css.font-visibility.trackingprotection', // 118
|
||||||
|
'network.dns.skipTRR-when-parental-control-enabled', // 119
|
||||||
|
'permissions.delegation.enabled', // 118
|
||||||
|
'security.family_safety.mode', // 117
|
||||||
|
'widget.non-native-theme.enabled', // 127
|
||||||
|
/* 103-115 */
|
||||||
|
'browser.cache.offline.enable', // 115
|
||||||
|
'extensions.formautofill.heuristics.enabled', // 114
|
||||||
|
'network.cookie.lifetimePolicy', // 103 [technically removed in 104]
|
||||||
|
'privacy.clearsitedata.cache.enabled', // 114
|
||||||
|
'privacy.resistFingerprinting.testGranularityMask', // 114
|
||||||
|
'security.pki.sha1_enforcement_level', // 103
|
||||||
|
/* 92-102 */
|
||||||
|
'browser.urlbar.suggest.quicksuggest', // 95
|
||||||
|
'dom.securecontext.whitelist_onions', // 97
|
||||||
|
'dom.storage.next_gen', // 102
|
||||||
|
'network.http.spdy.enabled', // 100
|
||||||
|
'network.http.spdy.enabled.deps',
|
||||||
|
'network.http.spdy.enabled.http2',
|
||||||
|
'network.http.spdy.websockets',
|
||||||
|
'layout.css.font-visibility.level', // 94
|
||||||
|
'security.ask_for_password', // 102
|
||||||
|
'security.csp.enable', // 99
|
||||||
|
'security.password_lifetime', // 102
|
||||||
|
'security.ssl3.rsa_des_ede3_sha', // 93
|
||||||
|
|
||||||
|
/* REMOVED */
|
||||||
|
/* 129-140 */
|
||||||
|
'dom.securecontext.allowlist_onions',
|
||||||
|
'network.http.referer.hideOnionSource',
|
||||||
|
'privacy.clearOnShutdown.cache',
|
||||||
|
'privacy.clearOnShutdown.cookies',
|
||||||
|
'privacy.clearOnShutdown.downloads',
|
||||||
|
'privacy.clearOnShutdown.formdata',
|
||||||
|
'privacy.clearOnShutdown.history',
|
||||||
|
'privacy.clearOnShutdown.offlineApps',
|
||||||
|
'privacy.clearOnShutdown.sessions',
|
||||||
|
'privacy.cpd.cache',
|
||||||
|
'privacy.cpd.cookies',
|
||||||
|
'privacy.cpd.formdata',
|
||||||
|
'privacy.cpd.history',
|
||||||
|
'privacy.cpd.offlineApps',
|
||||||
|
'privacy.cpd.sessions',
|
||||||
|
/* 116-128 */
|
||||||
|
'browser.fixup.alternate.enabled',
|
||||||
|
'browser.taskbar.previews.enable',
|
||||||
|
'browser.urlbar.dnsResolveSingleWordsAfterSearch',
|
||||||
|
'geo.provider.network.url',
|
||||||
|
'geo.provider.network.logging.enabled',
|
||||||
|
'geo.provider.use_gpsd',
|
||||||
|
'media.gmp-widevinecdm.enabled',
|
||||||
|
'network.protocol-handler.external.ms-windows-store',
|
||||||
|
'privacy.partition.always_partition_third_party_non_cookie_storage',
|
||||||
|
'privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage',
|
||||||
|
'privacy.partition.serviceWorkers',
|
||||||
|
/* 103-115 */
|
||||||
|
'beacon.enabled',
|
||||||
|
'browser.startup.blankWindow',
|
||||||
|
'browser.newtab.preload',
|
||||||
|
'browser.newtabpage.activity-stream.feeds.discoverystreamfeed',
|
||||||
|
'browser.newtabpage.activity-stream.feeds.snippets',
|
||||||
|
'browser.region.network.url',
|
||||||
|
'browser.region.update.enabled',
|
||||||
|
'browser.search.region',
|
||||||
|
'browser.ssl_override_behavior',
|
||||||
|
'browser.tabs.warnOnClose',
|
||||||
|
'devtools.chrome.enabled',
|
||||||
|
'dom.disable_beforeunload',
|
||||||
|
'dom.disable_open_during_load',
|
||||||
|
'dom.netinfo.enabled',
|
||||||
|
'dom.vr.enabled',
|
||||||
|
'extensions.formautofill.addresses.supported',
|
||||||
|
'extensions.formautofill.available',
|
||||||
|
'extensions.formautofill.creditCards.available',
|
||||||
|
'extensions.formautofill.creditCards.supported',
|
||||||
|
'middlemouse.contentLoadURL',
|
||||||
|
'network.http.altsvc.oe',
|
||||||
|
/* 92-102 */
|
||||||
|
'browser.urlbar.trimURLs',
|
||||||
|
'dom.caches.enabled',
|
||||||
|
'dom.storageManager.enabled',
|
||||||
|
'dom.storage_access.enabled',
|
||||||
|
'dom.targetBlankNoOpener.enabled',
|
||||||
|
'network.cookie.thirdparty.sessionOnly',
|
||||||
|
'network.cookie.thirdparty.nonsecureSessionOnly',
|
||||||
|
'privacy.firstparty.isolate.block_post_message',
|
||||||
|
'privacy.firstparty.isolate.restrict_opener_access',
|
||||||
|
'privacy.firstparty.isolate.use_site',
|
||||||
|
'privacy.window.name.update.enabled',
|
||||||
|
'security.insecure_connection_text.enabled',
|
||||||
|
|
||||||
|
/* IMPORTANT: last active pref must not have a trailing comma */
|
||||||
|
/* reset parrot: check your open about:config after running the script */
|
||||||
|
'_user.js.parrot'
|
||||||
|
];
|
||||||
|
|
||||||
|
console.clear();
|
||||||
|
|
||||||
|
let c = 0;
|
||||||
|
for (const sPname of aPREFS) {
|
||||||
|
if (Services.prefs.prefHasUserValue(sPname)) {
|
||||||
|
Services.prefs.clearUserPref(sPname);
|
||||||
|
if (!Services.prefs.prefHasUserValue(sPname)) {
|
||||||
|
console.info('reset', sPname);
|
||||||
|
c++;
|
||||||
|
} else console.warn('failed to reset', sPname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
focus();
|
||||||
|
|
||||||
|
const d = (c==1) ? ' pref' : ' prefs';
|
||||||
|
alert(c ? 'successfully reset ' + c + d + "\n\nfor details check the console" : 'nothing to reset');
|
||||||
|
|
||||||
|
return 'all done';
|
||||||
|
|
||||||
|
})();
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
/*** arkenfox user.js troubleshooter.js v1.6.3 ***/
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
if ("undefined" === typeof(Services)) return alert('about:config needs to be the active tab!');
|
||||||
|
|
||||||
|
const aPREFS = [
|
||||||
|
|
||||||
|
/* known culprits */
|
||||||
|
'network.cookie.cookieBehavior',
|
||||||
|
'network.http.referer.XOriginPolicy',
|
||||||
|
'privacy.firstparty.isolate',
|
||||||
|
'privacy.resistFingerprinting',
|
||||||
|
'security.mixed_content.block_display_content',
|
||||||
|
'svg.disabled',
|
||||||
|
|
||||||
|
/* Storage + Cache */
|
||||||
|
'browser.cache.offline.enable',
|
||||||
|
'dom.storage.enabled',
|
||||||
|
'dom.storageManager.enabled',
|
||||||
|
|
||||||
|
/* Workers, Web + Push Notifications */
|
||||||
|
'dom.caches.enabled',
|
||||||
|
'dom.push.connection.enabled',
|
||||||
|
'dom.push.enabled',
|
||||||
|
'dom.push.serverURL',
|
||||||
|
'dom.serviceWorkers.enabled',
|
||||||
|
'dom.webnotifications.enabled',
|
||||||
|
'dom.webnotifications.serviceworker.enabled',
|
||||||
|
|
||||||
|
/* Fonts */
|
||||||
|
'browser.display.use_document_fonts',
|
||||||
|
'font.blacklist.underline_offset',
|
||||||
|
'gfx.font_rendering.graphite.enabled',
|
||||||
|
'gfx.font_rendering.opentype_svg.enabled',
|
||||||
|
'layout.css.font-loading-api.enabled',
|
||||||
|
|
||||||
|
/* Misc */
|
||||||
|
'browser.link.open_newwindow.restriction',
|
||||||
|
'canvas.capturestream.enabled',
|
||||||
|
'dom.event.clipboardevents.enabled',
|
||||||
|
'dom.event.contextmenu.enabled',
|
||||||
|
'dom.IntersectionObserver.enabled',
|
||||||
|
'dom.popup_allowed_events',
|
||||||
|
'full-screen-api.enabled',
|
||||||
|
'intl.accept_languages',
|
||||||
|
'javascript.options.asmjs',
|
||||||
|
'javascript.options.wasm',
|
||||||
|
'permissions.default.shortcuts',
|
||||||
|
|
||||||
|
/* Hardware */
|
||||||
|
'dom.vr.enabled',
|
||||||
|
'media.ondevicechange.enabled',
|
||||||
|
|
||||||
|
/* Audio + Video */
|
||||||
|
'dom.webaudio.enabled',
|
||||||
|
'media.autoplay.default', // FF63+
|
||||||
|
'media.autoplay.blocking_policy', // FF78+
|
||||||
|
|
||||||
|
/* Forms */
|
||||||
|
'browser.formfill.enable',
|
||||||
|
'signon.autofillForms',
|
||||||
|
'signon.formlessCapture.enabled',
|
||||||
|
|
||||||
|
/* HTTPS */
|
||||||
|
'security.cert_pinning.enforcement_level',
|
||||||
|
'security.family_safety.mode',
|
||||||
|
'security.OCSP.require',
|
||||||
|
'security.pki.sha1_enforcement_level',
|
||||||
|
'security.ssl.require_safe_negotiation',
|
||||||
|
'security.ssl.treat_unsafe_negotiation_as_broken',
|
||||||
|
'security.ssl3.dhe_rsa_aes_128_sha',
|
||||||
|
'security.ssl3.dhe_rsa_aes_256_sha',
|
||||||
|
'security.ssl3.ecdhe_ecdsa_aes_128_sha',
|
||||||
|
'security.ssl3.ecdhe_rsa_aes_128_sha',
|
||||||
|
'security.ssl3.rsa_aes_128_sha',
|
||||||
|
'security.ssl3.rsa_aes_256_sha',
|
||||||
|
'security.ssl3.rsa_des_ede3_sha',
|
||||||
|
'security.tls.enable_0rtt_data',
|
||||||
|
'security.tls.version.max',
|
||||||
|
'security.tls.version.min',
|
||||||
|
|
||||||
|
/* Plugins + Flash */
|
||||||
|
'plugin.default.state',
|
||||||
|
'plugin.state.flash',
|
||||||
|
|
||||||
|
/* unlikely to cause problems */
|
||||||
|
'dom.popup_maximum',
|
||||||
|
'geo.provider.network.url',
|
||||||
|
'layout.css.visited_links_enabled',
|
||||||
|
'mathml.disabled',
|
||||||
|
'network.auth.subresource-http-auth-allow',
|
||||||
|
'network.http.redirection-limit',
|
||||||
|
'network.protocol-handler.external.ms-windows-store',
|
||||||
|
'privacy.trackingprotection.enabled',
|
||||||
|
'security.data_uri.block_toplevel_data_uri_navigations',
|
||||||
|
'privacy.window.name.update.enabled', // FF82+
|
||||||
|
|
||||||
|
'last.one.without.comma'
|
||||||
|
]
|
||||||
|
|
||||||
|
// any runtime-set pref that everyone will have and that can be safely reset
|
||||||
|
const oFILLER = { type: 64, name: 'app.update.lastUpdateTime.browser-cleanup-thumbnails', value: 1580000000 };
|
||||||
|
|
||||||
|
function getMyList(arr) {
|
||||||
|
const aRet = [];
|
||||||
|
for (const sPname of arr) {
|
||||||
|
if (Services.prefs.prefHasUserValue(sPname)) {
|
||||||
|
const ptype = Services.prefs.getPrefType(sPname);
|
||||||
|
switch (ptype) {
|
||||||
|
case 32: // string (see https://dxr.mozilla.org/mozilla-central/source/modules/libpref/nsIPrefBranch.idl#31)
|
||||||
|
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getCharPref(sPname)});
|
||||||
|
break;
|
||||||
|
case 64: // int
|
||||||
|
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getIntPref(sPname)});
|
||||||
|
break;
|
||||||
|
case 128: // boolean
|
||||||
|
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getBoolPref(sPname)});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("error detecting pref-type for '"+sPname+"' !");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
function reapply(arr) {
|
||||||
|
for (const oPref of arr) {
|
||||||
|
switch (oPref.type) {
|
||||||
|
case 32: // string
|
||||||
|
Services.prefs.setCharPref(oPref.name, oPref.value);
|
||||||
|
break;
|
||||||
|
case 64: // int
|
||||||
|
Services.prefs.setIntPref(oPref.name, oPref.value);
|
||||||
|
break;
|
||||||
|
case 128: // boolean
|
||||||
|
Services.prefs.setBoolPref(oPref.name, oPref.value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("error re-appyling value for '"+oPref.name+"' !"); // should never happen
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function myreset(arr) {
|
||||||
|
for (const oPref of arr) Services.prefs.clearUserPref(oPref.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetAllMatchingDefault(arr) {
|
||||||
|
const aTmp = getMyList(arr);
|
||||||
|
myreset(aTmp);
|
||||||
|
reapply(aTmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _main(aALL) {
|
||||||
|
const _h = (arr) => Math.ceil(arr.length/2);
|
||||||
|
|
||||||
|
let aTmp = aALL, aDbg = aALL;
|
||||||
|
reapply(aALL);
|
||||||
|
myreset(aTmp.slice(0, _h(aTmp)));
|
||||||
|
while (aTmp.length) {
|
||||||
|
alert('NOW TEST AGAIN !');
|
||||||
|
if (confirm('if the problem still exists click OK, otherwise click Cancel.')) {
|
||||||
|
aTmp = aTmp.slice(_h(aTmp));
|
||||||
|
} else {
|
||||||
|
aTmp = aTmp.slice(0, _h(aTmp));
|
||||||
|
aDbg = aTmp; // update narrowed down list
|
||||||
|
if (aDbg.length == 1) break;
|
||||||
|
}
|
||||||
|
reapply(aALL);
|
||||||
|
myreset(aTmp.slice(0, _h(aTmp))); // reset half of the remaining prefs
|
||||||
|
}
|
||||||
|
reapply(aALL);
|
||||||
|
|
||||||
|
if (aDbg.length == 1) return alert("narrowed it down to:\n\n"+aDbg[0].name+"\n");
|
||||||
|
if (aDbg.length == aALL.length) {
|
||||||
|
const msg = "Failed to narrow it down beyond the initial "+aALL.length+" prefs. The problem is most likely caused by at least 2 prefs!\n\n" +
|
||||||
|
"Either those prefs are too far apart in the list or there are exactly 2 culprits and they just happen to be at the wrong place.\n\n" +
|
||||||
|
"In case it's the latter, the script can add a dummy pref and you can try again - Try again?";
|
||||||
|
if (confirm(msg)) return _main([...aALL, oFILLER]);
|
||||||
|
} else if (aDbg.length > 10 && confirm("Narrowed it down to "+aDbg.length+" prefs. Try narrowing it down further?")) {
|
||||||
|
return _main(aDbg.reverse());
|
||||||
|
}
|
||||||
|
|
||||||
|
alert("Narrowed it down to "+ aDbg.length.toString() +" prefs, check the console ...");
|
||||||
|
console.log('The problem is caused by 2 or more of these prefs:');
|
||||||
|
for (const oPref of aDbg) console.log(oPref.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
resetAllMatchingDefault(aPREFS); // reset user-set prefs matching FFs default value
|
||||||
|
|
||||||
|
const aBAK = getMyList(aPREFS);
|
||||||
|
//console.log(aBAK.length, "user-set prefs from our list detected and their values stored.");
|
||||||
|
|
||||||
|
const sMsg = "all detected prefs reset.\n\n" +
|
||||||
|
"!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\n" +
|
||||||
|
"IF the problem still exists, this script can't help you - click Cancel to re-apply your values and exit.\n\n" +
|
||||||
|
"Click OK if your problem is fixed.";
|
||||||
|
|
||||||
|
focus();
|
||||||
|
myreset(aBAK);
|
||||||
|
if (!confirm(sMsg)) {
|
||||||
|
reapply(aBAK);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_main(aBAK);
|
||||||
|
|
||||||
|
})();
|
||||||
@@ -0,0 +1,355 @@
|
|||||||
|
user_pref("_user.js.parrot", "START: Oh yes, the Norwegian Blue... what's wrong with it?");
|
||||||
|
|
||||||
|
user_pref("browser.aboutConfig.showWarning", false);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "0100 syntax error: the parrot's dead!");
|
||||||
|
|
||||||
|
user_pref("browser.startup.page", 0);
|
||||||
|
|
||||||
|
user_pref("browser.startup.homepage", "chrome://browser/content/blanktab.html");
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.enabled", false);
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.activity-stream.showSponsoredCheckboxes", false);
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.activity-stream.default.sites", "");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "0200 syntax error: the parrot's definitely deceased!");
|
||||||
|
|
||||||
|
user_pref("geo.provider.ms-windows-location", false);
|
||||||
|
|
||||||
|
user_pref("geo.provider.use_corelocation", false);
|
||||||
|
|
||||||
|
user_pref("geo.provider.use_geoclue", false);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "0300 syntax error: the parrot's not pinin' for the fjords!");
|
||||||
|
|
||||||
|
user_pref("extensions.getAddons.showPane", false);
|
||||||
|
|
||||||
|
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
|
||||||
|
|
||||||
|
user_pref("browser.discovery.enabled", false);
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.activity-stream.telemetry", false);
|
||||||
|
|
||||||
|
user_pref("app.shield.optoutstudies.enabled", false);
|
||||||
|
|
||||||
|
user_pref("app.normandy.enabled", false);
|
||||||
|
|
||||||
|
user_pref("app.normandy.api_url", "");
|
||||||
|
|
||||||
|
user_pref("breakpad.reportURL", "");
|
||||||
|
|
||||||
|
user_pref("browser.tabs.crashReporting.sendReport", false);
|
||||||
|
|
||||||
|
user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
|
||||||
|
|
||||||
|
user_pref("captivedetect.canonicalURL", "");
|
||||||
|
|
||||||
|
user_pref("network.captive-portal-service.enabled", false);
|
||||||
|
|
||||||
|
user_pref("network.connectivity-service.enabled", false);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "0400 syntax error: the parrot's passed on!");
|
||||||
|
|
||||||
|
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "0600 syntax error: the parrot's no more!");
|
||||||
|
|
||||||
|
user_pref("network.prefetch-next", false);
|
||||||
|
|
||||||
|
user_pref("network.dns.disablePrefetch", true);
|
||||||
|
|
||||||
|
user_pref("network.dns.disablePrefetchFromHTTPS", true);
|
||||||
|
|
||||||
|
user_pref("network.predictor.enabled", false);
|
||||||
|
|
||||||
|
user_pref("network.predictor.enable-prefetch", false);
|
||||||
|
|
||||||
|
user_pref("network.http.speculative-parallel-limit", 0);
|
||||||
|
|
||||||
|
user_pref("browser.places.speculativeConnect.enabled", false);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "0700 syntax error: the parrot's given up the ghost!");
|
||||||
|
|
||||||
|
user_pref("network.proxy.socks_remote_dns", true);
|
||||||
|
|
||||||
|
user_pref("network.file.disable_unc_paths", true);
|
||||||
|
|
||||||
|
user_pref("network.gio.supported-protocols", "");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "0800 syntax error: the parrot's ceased to be!");
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.speculativeConnect.enabled", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.quicksuggest.enabled", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
|
||||||
|
|
||||||
|
user_pref("browser.search.suggest.enabled", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.suggest.searches", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.trending.featureGate", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.addons.featureGate", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.amp.featureGate", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.fakespot.featureGate", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.mdn.featureGate", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.weather.featureGate", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.wikipedia.featureGate", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.yelp.featureGate", false);
|
||||||
|
|
||||||
|
user_pref("browser.formfill.enable", false);
|
||||||
|
|
||||||
|
user_pref("browser.search.separatePrivateDefault", true);
|
||||||
|
|
||||||
|
user_pref("browser.search.separatePrivateDefault.ui.enabled", true);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "0900 syntax error: the parrot's expired!");
|
||||||
|
|
||||||
|
user_pref("signon.autofillForms", false);
|
||||||
|
|
||||||
|
user_pref("signon.formlessCapture.enabled", false);
|
||||||
|
|
||||||
|
user_pref("network.auth.subresource-http-auth-allow", 1);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is maker!");
|
||||||
|
|
||||||
|
user_pref("browser.cache.disk.enable", false);
|
||||||
|
|
||||||
|
user_pref("browser.privatebrowsing.forceMediaMemoryCache", true);
|
||||||
|
|
||||||
|
user_pref("media.memory_cache_max_size", 65536);
|
||||||
|
|
||||||
|
user_pref("browser.sessionstore.privacy_level", 2);
|
||||||
|
|
||||||
|
user_pref("toolkit.winRegisterApplicationRestart", false);
|
||||||
|
|
||||||
|
user_pref("browser.shell.shortcutFavicons", false);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "1200 syntax error: the parrot's a stiff!");
|
||||||
|
|
||||||
|
user_pref("security.ssl.require_safe_negotiation", true);
|
||||||
|
|
||||||
|
user_pref("security.tls.enable_0rtt_data", false);
|
||||||
|
|
||||||
|
user_pref("security.OCSP.enabled", 1);
|
||||||
|
|
||||||
|
user_pref("security.OCSP.require", true);
|
||||||
|
|
||||||
|
user_pref("security.cert_pinning.enforcement_level", 2);
|
||||||
|
|
||||||
|
user_pref("security.remote_settings.crlite_filters.enabled", true);
|
||||||
|
|
||||||
|
user_pref("security.pki.crlite_mode", 2);
|
||||||
|
|
||||||
|
user_pref("dom.security.https_only_mode", true);
|
||||||
|
|
||||||
|
user_pref("dom.security.https_only_mode_send_http_background_request", false);
|
||||||
|
|
||||||
|
user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
|
||||||
|
|
||||||
|
user_pref("browser.xul.error_pages.expert_bad_cert", true);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "1600 syntax error: the parrot rests in peace!");
|
||||||
|
|
||||||
|
user_pref("network.http.referer.XOriginTrimmingPolicy", 2);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "1700 syntax error: the parrot's bit the dust!");
|
||||||
|
|
||||||
|
user_pref("privacy.userContext.enabled", true);
|
||||||
|
|
||||||
|
user_pref("privacy.userContext.ui.enabled", true);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "2000 syntax error: the parrot's snuffed it!");
|
||||||
|
|
||||||
|
user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
|
||||||
|
|
||||||
|
user_pref("media.peerconnection.ice.default_address_only", true);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket!");
|
||||||
|
|
||||||
|
user_pref("dom.disable_window_move_resize", true);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "2600 syntax error: the parrot's run down the curtain!");
|
||||||
|
|
||||||
|
user_pref("browser.download.start_downloads_in_tmp_dir", true);
|
||||||
|
|
||||||
|
user_pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||||
|
|
||||||
|
user_pref("browser.uitour.enabled", false);
|
||||||
|
|
||||||
|
user_pref("devtools.debugger.remote-enabled", false);
|
||||||
|
|
||||||
|
user_pref("permissions.manager.defaultsUrl", "");
|
||||||
|
|
||||||
|
user_pref("network.IDN_show_punycode", true);
|
||||||
|
|
||||||
|
user_pref("pdfjs.disabled", false);
|
||||||
|
|
||||||
|
user_pref("pdfjs.enableScripting", false);
|
||||||
|
|
||||||
|
user_pref("browser.tabs.searchclipboardfor.middleclick", false);
|
||||||
|
|
||||||
|
user_pref("browser.contentanalysis.enabled", false);
|
||||||
|
|
||||||
|
user_pref("browser.contentanalysis.default_result", 0);
|
||||||
|
|
||||||
|
user_pref("security.csp.reporting.enabled", false);
|
||||||
|
|
||||||
|
user_pref("browser.download.useDownloadDir", false);
|
||||||
|
|
||||||
|
user_pref("browser.download.alwaysOpenPanel", false);
|
||||||
|
|
||||||
|
user_pref("browser.download.manager.addToRecentDocs", false);
|
||||||
|
|
||||||
|
user_pref("browser.download.always_ask_before_handling_new_types", true);
|
||||||
|
|
||||||
|
user_pref("extensions.enabledScopes", 5);
|
||||||
|
|
||||||
|
user_pref("extensions.postDownloadThirdPartyPrompt", false);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin' choir invisible!");
|
||||||
|
|
||||||
|
user_pref("browser.contentblocking.category", "strict");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!");
|
||||||
|
|
||||||
|
user_pref("privacy.sanitize.sanitizeOnShutdown", true);
|
||||||
|
|
||||||
|
user_pref("privacy.clearOnShutdown_v2.cache", true);
|
||||||
|
|
||||||
|
user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearOnShutdown_v2.downloads", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearOnShutdown_v2.formdata", true);
|
||||||
|
|
||||||
|
user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true);
|
||||||
|
|
||||||
|
user_pref("privacy.clearSiteData.cache", true);
|
||||||
|
|
||||||
|
user_pref("privacy.clearSiteData.cookiesAndStorage", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearSiteData.historyFormDataAndDownloads", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearSiteData.browsingHistoryAndDownloads", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearSiteData.formdata", true);
|
||||||
|
|
||||||
|
user_pref("privacy.clearHistory.cache", true);
|
||||||
|
|
||||||
|
user_pref("privacy.clearHistory.cookiesAndStorage", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearHistory.historyFormDataAndDownloads", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearHistory.browsingHistoryAndDownloads", false);
|
||||||
|
|
||||||
|
user_pref("privacy.clearHistory.formdata", true);
|
||||||
|
|
||||||
|
user_pref("privacy.sanitize.timeSpan", 0);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs");
|
||||||
|
|
||||||
|
user_pref("privacy.window.maxInnerWidth", 1600);
|
||||||
|
|
||||||
|
user_pref("privacy.window.maxInnerHeight", 900);
|
||||||
|
|
||||||
|
user_pref("privacy.resistFingerprinting.block_mozAddonManager", true);
|
||||||
|
|
||||||
|
user_pref("privacy.spoof_english", 1);
|
||||||
|
|
||||||
|
user_pref("widget.non-native-theme.use-theme-accent", false);
|
||||||
|
|
||||||
|
user_pref("browser.link.open_newwindow", 3);
|
||||||
|
|
||||||
|
user_pref("browser.link.open_newwindow.restriction", 0);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "6000 syntax error: the parrot's 'istory!");
|
||||||
|
|
||||||
|
user_pref("extensions.blocklist.enabled", true);
|
||||||
|
|
||||||
|
user_pref("network.http.referer.spoofSource", false);
|
||||||
|
|
||||||
|
user_pref("security.dialog_enable_delay", 1e3);
|
||||||
|
|
||||||
|
user_pref("privacy.firstparty.isolate", false);
|
||||||
|
|
||||||
|
user_pref("extensions.webcompat.enable_shims", true);
|
||||||
|
|
||||||
|
user_pref("security.tls.version.enable-deprecated", false);
|
||||||
|
|
||||||
|
user_pref("extensions.webcompat-reporter.enabled", false);
|
||||||
|
|
||||||
|
user_pref("extensions.quarantinedDomains.enabled", true);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "8500 syntax error: the parrot's off the twig!");
|
||||||
|
|
||||||
|
user_pref("datareporting.policy.dataSubmissionEnabled", false);
|
||||||
|
|
||||||
|
user_pref("datareporting.healthreport.uploadEnabled", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.unified", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.enabled", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.server", "data:,");
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.archive.enabled", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.updatePing.enabled", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.bhrPing.enabled", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
|
||||||
|
|
||||||
|
user_pref("toolkit.telemetry.coverage.opt-out", true);
|
||||||
|
|
||||||
|
user_pref("toolkit.coverage.opt-out", true);
|
||||||
|
|
||||||
|
user_pref("toolkit.coverage.endpoint.base", "");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "9000 syntax error: the parrot's cashed in 'is chips!");
|
||||||
|
|
||||||
|
user_pref("browser.startup.homepage_override.mstone", "ignore");
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
|
||||||
|
|
||||||
|
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
|
||||||
|
|
||||||
|
user_pref("browser.urlbar.showSearchTerms.enabled", false);
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is mortal coil!");
|
||||||
|
|
||||||
|
user_pref("_user.js.parrot", "SUCCESS: No no he's not dead, he's, he's restin'!");
|
||||||
Reference in New Issue
Block a user