About this site

This site presents a list of open source HTTP proxies written in java and python, with comparison tables, so that you compare the proxies on a feature by feature basis. Further detail is available on each proxy: click it's name for more info.

About xhaus.com

  1. Follow xhaus.com on twitter
  2. Read the xhaus.com blog
  3. Browse the xhaus.com opensource portal

What is a HTTP proxy?

A HTTP proxy acts as an intermediary between a HTTP client (i.e. browser) and HTTP server. It receives all requests from the browser, and relays them (possibly modified) to the server. Likewise, it receives all responses from the server, and relays them (possibly modified) to the client. HTTP Proxies can be used for a wide variety of tasks, including filtering, logging, caching, etc, etc, etc.

Contact us

If any of the details on this page are incorrect or out-of-date, or you find a proxy that is not listed here, please feel free to tell us about it.

NAVIGATION: Front page | java proxy comparison table | python proxy comparison table

Detailed information about JAVA proxy: Surfboard
Proxy Name Surfboard
Language and version java version: 1.2
HTTP version 1.1
HTTPS Connect no
Windows NTLM support no
Last updated YYYY-MM-DD 2002-01-13
Platform all
Author Jason Lowdermilk
Home page http://surfboard.sourceforge.net/
Primary features Ad removal, bandwidth throttling, session record and playback
Features

From the product page

  • 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.
  • 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, 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.
  • 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.
  • Proxy chaining: Surfboard can be daisy-chained with other proxies, like squid or junkbuster, etc.
License GPL
Design Architecture Threaded
Notes Surfboard contains its own bespoke HTTP server.