Member of the VA Linux Affiliate Underground


  • WindowMaker Applets: Two applets are included, one that acts as a "micro-console" and shows current HTTP activity, and the other allows filters to be activated and deactivated on the fly. This is useful for things like cookie removal, where you may wish to temporarly disable the filter for certain websites. Take a look at the Screenshots page.
  • Ad Removal: Like most filtering proxies, Surfboard can remove banner ads from web pages. At this time it only removes large (468x60) ads, rather than trying to remove all ads of all sizes. Instead of simply removing or blanking out banner ads, Surfboard will replace them with clickable news headlines alternating between Slashdot, Newsforge, and LinuxToday. Actually, any news server that publishes XML-based headlines via HTTP (most do, nowadays) could be used (see surfboard.applet.NewsApplet and surfboard.util.NewsServer). The headlines are cached inside the proxy to avoid overloading the news servers. Two versions are available to accomodate different browsers: one displays headlines within a Java applet, the other displays within an internal frame.
  • Bandwidth Throttling: Some filters are included that meter network traffic. These automatically lower the priority of large transfers, like file downloads, so that you can still surf the web while downloading files without sacrificing speed.
  • Interaction with external download managers: Even with "old" browsers like Netscape 4.7, Surfboard can be configured to delegate downloads to external tools like Downloader for X.
  • Session capture and playback: Surfboard can capture session information for offline playback, in a way that groks session credentials stored in cookies and/or query strings. This can be used to create web-savvy applications; see OmniBiff as an example.
  • IP Tunneling: Arbitrary TCP traffic can be tunneled through Surfboard. This allows tunneled traffic to appear in the micro-console applet (see the screenshots page), and also to participate in bandwidth throttling. You can use this, for example, in conjunction with Napster so that you can still surf at acceptable speeds while transferring MP3 files in the background.
  • HTML Console: Filters and IP tunnels are managed through an interactive HTML console, by browsing to the proxy port. See the screenshots page for a sample.
  • Cookie and Cache disabling: Simple filters are included that can disable cookie and cache header directives, and can be dynamically activated and deactivated via the wmFilter applet as desired.
  • HTTP Profiling: Surfboard can track the time required to load web pages, as measured from the time the request was sent to both the time the response header was received and to the time the body was fully received. This allows you to measure the time required to render the web page, which is significant for pages with dynamic content.
  • HTML/HTTP Debugging: Filters are provided that will display HTML contents and HTTP headers, before and after being modified by Surfboard. This can be used to examine HTTP traffic, as well as debug new filters. (It was the need for something like this that originally drove me to write a proxy.)
  • Java Interfaces: Surfboard is designed to be extensible. New filters can be created by extending base classes, and then inserted dynamically into Surfboard and managed via the HTML console (and applets). A "micro-servlet" interface is provided that allows Surfboard to respond to direct HTTP queries (which is how the console is implemented). An extensible framework is provided to transmitting "telemetry", which makes it easy to write (and enhance) external monitoring tools like the micro-console applet. See the Javadoc page for more information.
  • Proxy chaining: Surfboard can be daisy-chained with other proxies, like squid or junkbuster, etc.