Nowadays, there is a growing concern regarding unwanted third-party content on the web.
In many cases, the tracking of users is the problem (Facebook, Google Analytics), while at
other times, the content is simply disturbing and intrusive (advertisements). The presence
of such third-party content can even impact page load times and the responsiveness of the
browser. Depending on their purpose, their presence can be obvious (text, CSS, images),
but they can also be virtually invisible for the user (cookies, XHR, hyperlink auditing).
Although there are products that aim to solve this problem, most of them are poorly con-
figurable and depend on the client browser, they’re not available on all Internet devices.
This is a huge problem in today’s world, where web content is mostly accessed using mobile
devices (smartphones and tablets). Blocking and filtering content on these devices can be
very hard, if not impossible.
One of the most promising solutions is a pair of Chromium-extensions, µMatrix and
µBlock, formerly known as HTTP Switchboard, with the obvious downside of being browserdependent.
µBlock is a simple ad-blocker using Adblock Plus filters, while µMatrix is a
fine-tunable content filter: it can function as a white- or blacklist, and rules can be set
based on the source and the type (cookie, CSS, image, plugin, script, XHR, frame, other
content) of the traffic.
Most of the features of a similar content filter could also be implemented on a firewall, making
it independent of the actual client. My choice fell on the Zorp GPL firewall. Zorp GPL
is an open-source application-layer firewall running on Linux systems. With its Pythonbased
configuration and the available base-proxies, virtually any kind of rule and proxy
can be implemented.
In my thesis, I design and implement a Zorp GPL proxy providing most of the functionality
of µBlock and µMatrix.