LocalProxy overview
LocalProxy is an intelligent, adaptive, censorship avoiding data switch and
proxy for general TCP/IP (and even some UDP) services.
Normally run locally, it allows connections from various clients, often a
web browser, and switches it's requests to remote servers (often web servers)
using several specified communication strategies ('commStrat's). It preferentially
uses the fastest/uncensored of these commStrats via various hosts with appropriate
capabilities, to speed/unblock the user's network access. At startup, localProxy
'compiles' firewall rules, service type properties, hosts available (and their
capabilities) and the users overriding configuration to produce a built configuration
suitable for use in the user's network environment.
A GUI is provided to control the running instance (back-end) of localProxy
(whether it is running locally or remotely). The GUI allows the user to see
graphics depicting the current running configuration, error statistics etc.,
to start and stop the back-end, to modify it's operation and to log all data
passing through.
Miscellaneous utilities are also available to allow diagnosis, scanning,
sorting and categorizing of proxies by capabilities for eventual inclusion
into the localProxy database.
LocalProxy ignores content, except to detect HTTP status code errors, and
to modify URLs (if requested via CommStrat 2) to bypass URL based proxy
censoring.
The back-end log screen allows the user to see the current status (speed
estimates) of all paths (and sockets) tried.
LocalProxy gives the user several benefits:
- Uncensored internet access. The commStrats coded so far are designed
to allow use of CGI proxies, CONNECT proxies, accessible remote proxies
and remote redirectors (bouncers) on shells. LocalProxy analyzes the subnet,
firewall data, and selects host services to use appropriately.
- Speed of internet access. The code is designed to use the fastest
available commStrat and hosts at any time. This is dynamically determined
from a recent history (moving average) of the speeds associated with past
requests using that same commStrat/host/host combination ('path').
- Robustness. If a commStrat, or host stops working as expected,
localproxy detects the change in speed (or errors) and decreases the likelihood
that the same path will be selected for use in future. A set of almost
random proxies can be configured for use and localProxy will (after some
training period) use only those which work and are the fastest.
- Portability. The Perl (and GUI Tk) code will run on any system
where Perl is installed. The GUI controller running locally is able to
control an instance of localProxy running on a remote shell.
- Excellent information about your network environment from the logging
mode. All data passing through localProxy may be logged.
- Reduced load on each of the hosts in use, thus reducing possible
complaints from proxy owners.
To gain these benefits, the user must make some sacrifices:
- LocalProxy must be started and kept running
- LocalProxy must be trained with a few complex web pages at the
beginning of any new session (for a shorter time when a previously trained
configuration file is recalled). For a longer time if there are many proxies
in the localProxy configuration, or if the quality of the proxies in the
provided database is low (for example, if the user has not obtained a recent
version of this for a long time).
- Although localProxy will learn to work anyway, those users in places
I have no good diagnostic info from, will benefit by configuring localProxy
using some local knowledge (ISP proxies and name servers available, whether
external proxies can be used directly on ports 80, 3128, 8080 etc. and
any shell redirectors the user has) to get the most out of it's use. Diagnostic
utilities are available to analyze hosts and produce the format required
to merge such information into localProxy's database. It's not unreasonable
to make guesses about these things, and let localProxy find the good ones,
but it takes it more time and, of course, it can't find strategies or proxies
which aren't listed to begin with! Configuration files provided in the
distribution for the UAE (home dialup and ADSL use) will be accurate, for
the KSA (home use, most ISPs) will be 'close', but for other environments
may very inefficient. LocalProxy will find everything it can from the user's
system.
- Since localProxy accesses the components of a web page via
different paths, there are occasional problems with sites which use your
incoming IP address to determine if access is permitted, or to determine
if a user subscription is being used by other people. This may result in
the final IP address of some of the paths in use being blocked. In this
case. refreshing the page will cause localProxy to choose a (probably)
different path (commStrat and proxies used) to get the page, and this will
likely succeed.