📅 2017-Jan-30 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ extension, firefox ⬩ 📚 Archive
uMatrix is a Firefox extension that can be used to control exactly what network requests are made by the browser and thus what is loaded in the requested webpage. It is of similar use as ad-blockers (like AdBlock) or script blockers (NoScript) or other blockers like uBlock. But, uMatrix is more fine-grained and a bit more complicated but gives you a lot more idea of what a webpage is trying to load and if you would want to allow that. uMatrix is a fork and improvement over an earlier addon called HTTP Switchboard.
Install: It can be installed from here. No browser restart is required. You will find its icon added to the toolbar.
Settings: Before you try anything, head over to its dashboard. In the Privacy tab, you can turn off the feature of clearing browser cache every 60 minutes. The My rules tab is where you can find the list of rules that are applied by uMatrix to decide if a network request on a webpage should be allowed or not. You will find the default rules that uMatrix starts off with under Permanent Rules and the rules that you have set under Temporary Rules. Do not worry if it looks complicated cause you usually set these rules using the colorful 2D matrix (or switchboard) UI of uMatrix. In the Hosts files tab, click the Update Now button to update all the hostnames to block from the various popular lists maintained on the internet.
Content is blocked by default: By default, uMatrix blocks all types of content from the blocked hostnames (see above) and allows CSS and image content only from the domain you are visiting. Many websites may not render or work correctly due to this and you will need to step in to tell uMatrix to allow other content from other domains. This default behavior is called Block All / Allow Exceptionally. To allow everything by default is called Allow All / Block Exceptionally. You can find detailed information about these two modes here.
Control content: On any webpage, click the uMatrix icon in the toolbar to reveal the 2D matrix where you can click to enable or disable loading from particular hostnames (the rows) or loading particular types of content (the columns). Red color means disabled and green means enabled. Clicking upper part of a cell enables and lower part disables. Clicking rows or columns should usually be enough, if you want finer control you can click the cells, that is controlling a particular content from a particular hostname. Click the Refresh icon to re-render the webpage with these changes. The rules you set here are the rules you can see in the Dashboard (see above).
Whitelist a domain: The top-left cell is the Z axis to this 2D matrix. Clicking it you can choose if you want to set rules for every page (asterisk) or this particular hostname. For example, if I enable instapaper.com in the every page (asterisk) section, then content coming from instapaper.com will be allowed no matter which website I visit.
Undo or Save: Click the Lock icon to save the rules for this webpage. Click the Eraser icon to revert back to last saved rules for this webpage.
Persist settings: By default, the rules you painstakingly set for websites will persist only in a Firefox session. They will be forgotten if you restart Firefox. To make them persist, go to the Dashboard → My Rules section and move the rules from Temporary Rules to Permanent Rules section.
Default rules: As a reference, when uMatrix is installed freshly, it starts off with these rules (source):
https-strict: behind-the-scene false matrix-off: about-scheme true matrix-off: behind-the-scene true matrix-off: chrome-extension-scheme true matrix-off: chrome-scheme true matrix-off: localhost true matrix-off: moz-extension-scheme true matrix-off: opera-scheme true matrix-off: vivaldi-scheme true matrix-off: wyciwyg-scheme true referrer-spoof: behind-the-scene false ua-spoof: behind-the-scene false referrer-spoof: * true noscript-spoof: * true cname-reveal: * true * * * block * * css allow * * frame block * * image allow * 1st-party * allow * 1st-party frame allow
Tried with: Firefox 50.1.0 and Ubuntu 16.04