Ad Muncher Version 5 / by Murray Hurps

This is the first public demonstration of Ad Muncher version 5, which aims to be the first cross-platform marketplace for web filtering.

It has been in constant development in parallel with the public version of Ad Muncher for six years. It has been restarted twice and has been interrupted by a string of distractions, including the normal day-to-day running of the company.

I produced the first interface proposal in 2008.  It's changed a lot since then, but for kicks that's available here.

I'm pleased to say that it has developed into a powerful, portable, adaptable filtering system, that will probably surprise even the most optimistic of Ad Muncher devotees.

Architecture

Version 5 is powered by the new "Muncher" engine.  This is 100% C code, designed for portability to different platforms and divided into three main modules:

For those interested, these interfaces are detailed here.

The Engine component is designed to easily accept new protocol handlers, allowing expansion for emerging network protocols.

Platforms

We currently have the following platform interfaces implemented, with the entire system compiling and filtering on these platforms:


Windows With a network-level filter capturing all browsers.

iOS With a browser app, providing a Safari-like interface with filtering engine included.

Android With an app that creates a local proxy, which then filters all other apps.

Again, these are all working currently and compiling from a single filtering engine code base.

Interface

It is the interface and engine we've always wanted and has the potential to be adapted easily to a wide range of purposes and environments.

Scanning

Combined with our ultimate interface and engine is our ultimate list scanning module, consisting of:

  • Our version of the Wu-Manber algorithm for fast string matching against a large number of keywords, tuned for the kinds of keywords we typically use.
  • regular expression deconstructor, which finds sequences that must be present in a string before it's possible for a given expression to match.
  • The PCRE engine for fully compliant expression matching, after the above module has indicated there's a possible match.

This allows for fast matching of large number of filters, including regular expression filters.

By itself it was about six months of work and it's a critical part in an engine designed to scan filter lists with tens of thousands of filters.

Six years of development?!

Yes, for one simple reason.

The amount of work required to run Ad Muncher as a company, along with the enormous amount of work required by this rewrite, were simply far too much for our revenue to support.

I've bootstrapped for 15 years and if given the chance again, I would have sought funding to accelerate development.

The codebase is working locally but still needs some finishing touches, along with some significant real-world testing.  We're confident our beta team (20k+ users) will be eager to assist here.