-
Notifications
You must be signed in to change notification settings - Fork 313
/
configure_firefox.py
154 lines (133 loc) · 7.29 KB
/
configure_firefox.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
""" Set prefs and load extensions in Firefox """
def privacy(browser_params, fp, fo, root_dir, browser_profile_path):
"""
Configure the privacy settings in Firefox. This includes:
* DNT
* Third-part cookie blocking
* Tracking protection
* Privacy extensions
"""
# Turns on Do Not Track
if browser_params["donottrack"]:
fo.set_preference("privacy.donottrackheader.enabled", True)
# Sets the third party cookie setting
if browser_params["tp_cookies"].lower() == "never":
fo.set_preference("network.cookie.cookieBehavior", 1)
elif browser_params["tp_cookies"].lower() == "from_visited":
fo.set_preference("network.cookie.cookieBehavior", 3)
else: # always allow third party cookies
fo.set_preference("network.cookie.cookieBehavior", 0)
# Tracking Protection
if browser_params["tracking-protection"]:
raise RuntimeError(
"Firefox Tracking Protection is not currently "
"supported. See: "
"https://github.com/citp/OpenWPM/issues/101"
)
def optimize_prefs(fo):
"""
Disable various features and checks the browser will do on startup.
Some of these (e.g. disabling the newtab page) are required to prevent
extraneous data in the proxy.
Source of prefs:
* https://support.mozilla.org/en-US/kb/how-stop-firefox-making-automatic-connections
* https://github.com/pyllyukko/user.js/blob/master/user.js
""" # noqa
# Startup / Speed
fo.set_preference("browser.shell.checkDefaultBrowser", False)
fo.set_preference("browser.slowStartup.notificationDisabled", True)
fo.set_preference("browser.slowStartup.maxSamples", 0)
fo.set_preference("browser.slowStartup.samples", 0)
fo.set_preference("extensions.checkCompatibility.nightly", False)
fo.set_preference("browser.rights.3.shown", True)
fo.set_preference("reader.parse-on-load.enabled", False)
fo.set_preference("browser.pagethumbnails.capturing_disabled", True)
fo.set_preference("browser.uitour.enabled", False)
fo.set_preference("dom.flyweb.enabled", False)
# Disable health reports / telemetry / crash reports
fo.set_preference("datareporting.policy.dataSubmissionEnabled", False)
fo.set_preference("datareporting.healthreport.uploadEnabled", False)
fo.set_preference("datareporting.healthreport.service.enabled", False)
fo.set_preference("toolkit.telemetry.archive.enabled", False)
fo.set_preference("toolkit.telemetry.enabled", False)
fo.set_preference("toolkit.telemetry.unified", False)
fo.set_preference("breakpad.reportURL", "")
fo.set_preference("dom.ipc.plugins.reportCrashURL", False)
fo.set_preference("browser.selfsupport.url", "")
fo.set_preference("browser.tabs.crashReporting.sendReport", False)
fo.set_preference("browser.crashReports.unsubmittedCheck.enabled", False)
fo.set_preference("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", False)
# Predictive Actions / Prefetch
fo.set_preference("network.predictor.enabled", False)
fo.set_preference("network.dns.disablePrefetch", True)
fo.set_preference("network.prefetch-next", False)
fo.set_preference("browser.search.suggest.enabled", False)
fo.set_preference("network.http.speculative-parallel-limit", 0)
fo.set_preference("keyword.enabled", False) # location bar using search
fo.set_preference("browser.urlbar.userMadeSearchSuggestionsChoice", True)
fo.set_preference("browser.casting.enabled", False)
# Disable pinging Mozilla for geoip
fo.set_preference("browser.search.geoip.url", "")
fo.set_preference("browser.search.countryCode", "US")
fo.set_preference("browser.search.region", "US")
# Disable pinging Mozilla for geo-specific search
fo.set_preference("browser.search.geoSpecificDefaults", False)
fo.set_preference("browser.search.geoSpecificDefaults.url", "")
# Disable auto-updating
fo.set_preference("app.update.enabled", False) # browser
fo.set_preference("app.update.url", "") # browser
fo.set_preference("browser.search.update", False) # search
fo.set_preference("extensions.update.enabled", False) # extensions
fo.set_preference("extensions.update.autoUpdateDefault", False)
fo.set_preference("extensions.getAddons.cache.enabled", False)
fo.set_preference("lightweightThemes.update.enabled", False) # Personas
# Disable Safebrowsing and other security features
# that require on remote content
fo.set_preference("browser.safebrowsing.phising.enabled", False)
fo.set_preference("browser.safebrowsing.malware.enabled", False)
fo.set_preference("browser.safebrowsing.downloads.enabled", False)
fo.set_preference("browser.safebrowsing.downloads.remote.enabled", False)
fo.set_preference("browser.safebrowsing.blockedURIs.enabled", False)
fo.set_preference("browser.safebrowsing.provider.mozilla.gethashURL", "")
fo.set_preference("browser.safebrowsing.provider.google.gethashURL", "")
fo.set_preference("browser.safebrowsing.provider.google4.gethashURL", "")
fo.set_preference("browser.safebrowsing.provider.mozilla.updateURL", "")
fo.set_preference("browser.safebrowsing.provider.google.updateURL", "")
fo.set_preference("browser.safebrowsing.provider.google4.updateURL", "")
fo.set_preference("browser.safebrowsing.provider.mozilla.lists", "") # TP
fo.set_preference("browser.safebrowsing.provider.google.lists", "") # TP
fo.set_preference("browser.safebrowsing.provider.google4.lists", "") # TP
fo.set_preference("extensions.blocklist.enabled", False) # extensions
fo.set_preference("security.OCSP.enabled", 0)
# Disable Content Decryption Module and OpenH264 related downloads
fo.set_preference("media.gmp-manager.url", "")
fo.set_preference("media.gmp-provider.enabled", False)
fo.set_preference("media.gmp-widevinecdm.enabled", False)
fo.set_preference("media.gmp-widevinecdm.visible", False)
fo.set_preference("media.gmp-gmpopenh264.enabled", False)
# Disable Experiments
fo.set_preference("experiments.enabled", False)
fo.set_preference("experiments.manifest.uri", "")
fo.set_preference("experiments.supported", False)
fo.set_preference("experiments.activeExperiment", False)
fo.set_preference("network.allow-experiments", False)
# Disable pinging Mozilla for newtab
fo.set_preference("browser.newtabpage.directory.ping", "")
fo.set_preference("browser.newtabpage.directory.source", "")
fo.set_preference("browser.newtabpage.enabled", False)
fo.set_preference("browser.newtabpage.enhanced", False)
fo.set_preference("browser.newtabpage.introShown", True)
fo.set_preference("browser.aboutHomeSnippets.updateUrl", "")
# Disable Pocket
fo.set_preference("extensions.pocket.enabled", False)
# Disable Shield
fo.set_preference("app.shield.optoutstudies.enabled", False)
fo.set_preference("extensions.shield-recipe-client.enabled", False)
# Disable Source Pragams
# As per https://bugzilla.mozilla.org/show_bug.cgi?id=1628853
# sourceURL can be used to obfuscate the original origin of
# a script, we disable it.
fo.set_preference("javascript.options.source_pragmas", False)
# Enable extensions and disable extension signing
fo.set_preference("extensions.experiments.enabled", True)
fo.set_preference("xpinstall.signatures.required", False)