Source code for openwpm.deploy_browsers.configure_firefox

"""Set prefs and load extensions in Firefox"""

from selenium.webdriver.firefox.options import Options

from ..config import BrowserParams


[docs] def privacy(browser_params: BrowserParams, fo: Options) -> None: """ 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" )
[docs] def optimize_prefs(fo: Options) -> None: """ 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 Pragmas # 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)