- 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
- 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.