LocalProxy overview
LocalProxy (LP) 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 pretested database of thousands of proxies is provided for LP to use
in this build; the user may add/modify these by use of a personal
configuration file.
LP runs internal tests for it's HTTP service (by 'spidering' the web)
so that it learns the best commStrats and proxies to use, independently
of the user's browsing.
A portable 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,
detect 'access-denied' pages without the appropriate status code, 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). The user
need not participate in this training, because localProxy will 'spider'
the web by itself, learning as it goes.
- 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 will never find 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 and use
everything it
can from the user's system (environment, registry, specified GUI
fields).
- 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.