You didn't specify an operating system. Please do so in future.
This answer recommends Polipo, which is included in the Vidalia bundle hosted by the Tor project and therefore probably recommended by them for Windows. Polipo also has a *nix version (and was originally designed for *nix), so I've included instructions on how to set it up - see the second section below. It is a rather lightweight solution, if it matters.
##Windows
Download the Vidalia bundle. It includes the Vidalia GUI and a program called Polipo, along with Tor. In the bundle, Polipo by default runs a HTTP proxy on port 8118 that redirects through the Tor SOCKS proxy on port 9050.
###Advanced setup
It's also possible to configure Polipo manually, without the Vidalia bundle.
Taken from https://www.irif.fr/~jch/software/polipo/tor.html
They also provide binaries you should download.
###Configuration
Polipo is configured by setting a number of configuration variables in
Polipo's configuration file, which is a plain text file. In order to
tell Polipo to use tor and not to cache any fetched pages on disk, you
will want to add the following lines to your configuration file:
socksParentProxy = localhost:9050
diskCacheRoot=""
You will also want to disable the local configuration interface in
order to protect yourself from browser vulnerabilities:
disableLocalInterface=true
###Running it
When running Polipo, you should specify the location for the
configuration file, by using the -c flag on Polipo's command line:
> polipo.exe -c "/Program Files/Polipo/config.txt"
Note that even under Windows you must use Unix syntax for the filename
(using forward slashes) and you cannot specify a device (“drive”) to
use.
The Polipo default listening port is 8123.
The default config from the Vidalia bundle is included at the bottom of this answer.
##*nix
Includes Linux, Unix, BSD, OS X, most major modern (2012) operating systems that are not based on NT (Windows).
Once again, taken from https://www.irif.fr/~jch/software/polipo/tor.html
Download a package from whatever repository you use. Google may help here. Alternatively, a direct binary can be downloaded.
###Configuration
Polipo is configured by setting a number of configuration variables in
Polipo's configuration file, which is either ~/.polipo
or
/etc/polipo/config
, whichever exists. In order to tell Polipo to use
tor and not to cache any fetched pages on disk, you will want to add
the following lines to your configuration file:
socksParentProxy = localhost:9050
diskCacheRoot=""
You will also want to disable the local configuration interface in
order to protect yourself from browser vulnerabilities:
disableLocalInterface=true
If you want to specify a different location for the configuration
file, you can specify it by using the -c flag on Polipo's command
line.
Note that if you installed Polipo from a distribution-provided binary,
it will probably not take ~/.polipo into account — you will need to
edit /etc/polipo/config.
###Running it
If you installed Polipo from a distribution-provided package, Polipo
is probably already running; you will need to restart it so it takes
its new configuration into account. Otherwise, just grab a free
terminal window and type:
$ polipo
If you are using a non-standard location for Polipo's configuration
file, specify it on the command line, for example:
$ polipo -c "/Program Files/Polipo/config.txt"
The Polipo default listening port is 8123.
The default config from the Vidalia bundle is included at the bottom of this answer.
##Default Polipo config (Vidalia bundle)
This is my default Polipo configuration from the Vidalia bundle for Windows. From the look of it, it should work in *nix too - there's nothing platform specific as far as I can tell. Yes, it is an IPv4 config.
### $Id$
#
### Basic configuration
### *******************
# Uncomment one of these if you want to allow remote clients to
# connect:
# proxyAddress = "::0" # both IPv4 and IPv6
# proxyAddress = "0.0.0.0" # IPv4 only
proxyAddress = "127.0.0.1"
proxyPort = 8118
# If you do that, you'll want to restrict the set of hosts allowed to
# connect:
# allowedClients = "127.0.0.1, 134.157.168.57"
# allowedClients = "127.0.0.1, 134.157.168.0/24"
allowedClients = 127.0.0.1
allowedPorts = 1-65535
# Uncomment this if you want your Polipo to identify itself by
# something else than the host name:
proxyName = "localhost"
# Uncomment this if there's only one user using this instance of Polipo:
cacheIsShared = false
# Uncomment this if you want to use a parent proxy:
# parentProxy = "squid.example.org:3128"
# Uncomment this if you want to use a parent SOCKS proxy:
socksParentProxy = "localhost:9050"
socksProxyType = socks5
### Memory
### ******
# Uncomment this if you want Polipo to use a ridiculously small amount
# of memory (a hundred C-64 worth or so):
# chunkHighMark = 819200
# objectHighMark = 128
# Uncomment this if you've got plenty of memory:
# chunkHighMark = 50331648
# objectHighMark = 16384
chunkHighMark = 33554432
### On-disk data
### ************
# Uncomment this if you want to disable the on-disk cache:
diskCacheRoot = ""
# Uncomment this if you want to put the on-disk cache in a
# non-standard location:
# diskCacheRoot = "~/.polipo-cache/"
# Uncomment this if you want to disable the local web server:
localDocumentRoot = ""
# Uncomment this if you want to enable the pages under /polipo/index?
# and /polipo/servers?. This is a serious privacy leak if your proxy
# is shared.
# disableIndexing = false
# disableServersList = false
disableLocalInterface = true
disableConfiguration = true
### Domain Name System
### ******************
# Uncomment this if you want to contact IPv4 hosts only (and make DNS
# queries somewhat faster):
#
# dnsQueryIPv6 = no
# Uncomment this if you want Polipo to prefer IPv4 to IPv6 for
# double-stack hosts:
#
# dnsQueryIPv6 = reluctantly
# Uncomment this to disable Polipo's DNS resolver and use the system's
# default resolver instead. If you do that, Polipo will freeze during
# every DNS query:
dnsUseGethostbyname = yes
### HTTP
### ****
# Uncomment this if you want to enable detection of proxy loops.
# This will cause your hostname (or whatever you put into proxyName
# above) to be included in every request:
disableVia = true
# Uncomment this if you want to slightly reduce the amount of
# information that you leak about yourself:
# censoredHeaders = from, accept-language
# censorReferer = maybe
censoredHeaders = from,accept-language,x-pad,link
censorReferer = maybe
# Uncomment this if you're paranoid. This will break a lot of sites,
# though:
# censoredHeaders = set-cookie, cookie, cookie2, from, accept-language
# censorReferer = true
# Uncomment this if you want to use Poor Man's Multiplexing; increase
# the sizes if you're on a fast line. They should each amount to a few
# seconds' worth of transfer; if pmmSize is small, you'll want
# pmmFirstSize to be larger.
# Note that PMM is somewhat unreliable.
# pmmFirstSize = 16384
# pmmSize = 8192
# Uncomment this if your user-agent does something reasonable with
# Warning headers (most don't):
# relaxTransparency = maybe
# Uncomment this if you never want to revalidate instances for which
# data is available (this is not a good idea):
# relaxTransparency = yes
# Uncomment this if you have no network:
# proxyOffline = yes
# Uncomment this if you want to avoid revalidating instances with a
# Vary header (this is not a good idea):
# mindlesslyCacheVary = true
# Suggestions from Incognito configuration
maxConnectionAge = 5m
maxConnectionRequests = 120
serverMaxSlots = 8
serverSlots = 2
tunnelAllowedPorts = 1-65535