# Proxomitron

Proxomitron, the Universal Web Filter, is a filtering web proxy written by Scott R. Lemmon. This program was originally designed to run under Windows 95. All future development of the program was ceased in 2003 one year before its author's death on 1 May 2004. Proxomitron is still viable and used on later Windows platforms such as Vista and Windows 10.

## Premise

The program is generally used to block pop-ups and banners, to remove embedded sounds and animation from web pages, to alter or block JavaScript, and to modify the appearance and content of web pages.

## Overview

Properly configured, Proxomitron intercepts HTTP traffic between the user's browser and web servers. The program is capable of altering web page content by removing or adding text. Additionally, it can add, modify, or delete HTTP message headers, be configured to block connections or redirect requests based on the web page address, and be configured to route connections through a remote proxy. The user can monitor connections and filter activations, if desired.
Program operation is dictated through the use of a configuration file containing specialized filters which can be written, edited, deleted, enabled or disabled by the user via the program's graphical user interface. (Third-party filters can also be imported, or "merged", into the configuration.) The filters utilize a "matching" language similar to the standard regular expressions used in text editing. Additional files, such as "blocklists" and SSL DLLs, can extend filtering capabilities.
Use of the program requires knowledge of the Proxomitron scripting language, and some familiarity with at least one of HTTP, HTML, JavaScript, and CSS. The scripting interface was not designed to be user-friendly. Because of these complications, the program can be difficult to customize for novice or non-technical users. A default set of filters is included with the program; advanced filters and filter sets written by experienced users are also available online. (See external links.)

## Features

The following items are the basic applications and features of the program:

### Filter page content

    Using the scripting language, filters are prepared with editing commands to match and replace text in the downloaded page. Specific pages can be targeted for filtering by matching the page's URL with a specified pattern.

### Filter HTTP headers

    Separate filters for incoming and outgoing HTTP headers can be used to modify the values of existing headers, add new headers, or delete headers. One example of such usage would be for cookie management.

### Variables

    Filters can use local variables (per filter) or global variables (available to all filters per request) to capture/store text for further test matching, to reinsert content into a new location, or to write content to lists. Preset variables are also available, e.g., the page's URL.

### Special commands

    A number of special commands are available for use by filters or in URLs; e.g., a filter-based command can check if the user presses a particular key, or a URL-embedded command can direct Proxomitron to filter a local file.

### Create lists for filters

    Text files (known as "blocklists") can be used as sources for patterns for filter matches.

### Create standard lists

    Text files (known as "logfiles") can be used by filters to append captured data to a list.

### Create session lists

    Memory-only text files can be generated and used by filters to build temporary blocklists, or permanent blocklists can be configured to only allow filters to add memory-only "session" data.

### Insert files

    Local text files containing plain text, HTML snippits, css, or scripts can be independently retrieved and written into the web page by filters.

### Reroute traffic

    Filters can redirect requests to different web pages or to local files, either by sending the new location as a directive to the browser or by "transparently" connecting to the new location directly.

### View traffic between server and browser

    The log window permits the user to see the HTTP traffic between the browser and server. This can (optionally) include any POSTed data.

### Provide alerts

    Filters can be configured to have Proxomitron generate its own alert or confirmation popup containing user-supplied text.

### Uncompress data on the fly

    With the ZLIB library, the Proxomitron can uncompress GZIP compressed data streams and filter pages delivered in compressed modes.

### Filter "secure" channels

    With libraries to provide the SSL routines, the Proxomitron can filter secure, encoded streams. Since this forces the proxy to act as a "man in the middle", this should not be used in most cases.

### Chain to remote proxies

    Proxomitron can test remote proxies, maintain a list of proxies to utilize, and be configured to rotate the remote proxy connections.

### Run program or URL

    Proxomitron can be configured to launch an external program or URL (as specified in the program settings) upon startup, or on demand via the Launch icon or a menu option. Launching programs and URLs from filters can also be accomplished through the use of an undocumented $EXEC command.

### Change interface textures

    The user can select bitmap images (referred to as "textures") for tiling interface backgrounds and button and tab faces, or simply disable this feature. An internal set of default bitmaps (admittedly "psychedelic") are included with the program.

### Debug

    A special viewing of the page source showing which filters matched what page content can be sent to the browser for debugging purposes. A test window is also available from the filter editor dialogs for testing matches and checking filter efficiency.

## License

The program was distributed under a "ShonenWare" license. Under the license it was free to use. Lemmon would consider users purchasing and listening to a Shonen Knife CD would be sufficient to register that user.

## History

The first public release of Proxomitron (Naoko 2) was in 1999 as a download via Simtel. Releases that followed were all named "Naoko" (for Naoko Yamano) followed by a release number. (Release versions were 3, 3(b), 4.0, 4.1, 4.2, 4.3, 4.4, 4.5.)
The May 2003 release of Naoko 4.5 was followed very quickly by the removal of the program's web site and Lemmon's declared termination of continued development of Proxomitron. A subsequent release, however, was made in June 2003, primarily to revert a new behavior related to remote proxy connections that had been designed into the May version.
After the release of Naoko 4.5 (June), development was permanently discontinued and the official site had the message:
消えました
This reads kiemashita (消えました) in Japanese and translates to "it went out" or "gone." The original home webpage is no longer accessible. Lemmon's mirror redirect was changed to display a different final message from the author a short time later.
The author, Scott R. Lemmon, died 1 May 2004 aged 36.

## Current status

As this was a closed-source project, Proxomitron is no longer being maintained or developed; however, the Proxomitron program is still functional, and there is a community of users who provide support for it through electronic forums. Filters, filter sets, compatible DLLs and other files, and GUI patches to restyle and/or update Proxomitron's graphical user interface are also being provided by users.
Many current browsers do contain features similar to those provided by Proxomitron filters – blocking advertisements and pop-ups, for example. Other browser features or add-ons, such as Greasemonkey for Firefox and user stylesheets for Firefox and other browsers via the Stylish addon, also allow for local modification of web pages.