Polipo: Lightweight Caching HTTP Proxy for Faster BrowsingPolipo is a small, fast, and efficient caching HTTP proxy designed to accelerate web browsing by storing frequently requested resources and serving them locally. Initially developed by Marco d’Itri, Polipo targets environments where simplicity, low memory usage, and responsiveness are important — for example, on older hardware, embedded systems, or as a personal proxy for privacy and speed.
What Polipo Does
Polipo acts as an intermediary between a web browser (or other HTTP client) and the internet. When a client requests a resource (HTML page, image, script), Polipo can:
- Retrieve the resource from the origin server and cache it locally.
- Serve subsequent requests for the same resource from the cache, reducing latency and bandwidth use.
- Reuse and multiplex connections to upstream servers to reduce connection overhead.
- Provide minimal filtering and rewrite capabilities to improve compatibility or privacy.
Polipo is a caching, non-transparent HTTP/1.1 proxy focused on speed and small resource footprint rather than the full feature set of larger proxies like Squid.
Key Features
- Small memory footprint and modest CPU usage.
- HTTP/1.1-aware cache and pipelining support.
- Connection pooling and multiplexing to upstream servers.
- Configurable cache size, TTLs, and request handling.
- Support for IPv4 and IPv6.
- Optional SOCKS proxying (useful with Tor for anonymity).
- Simple, human-readable configuration file.
- Designed for single-user or small-network setups.
Typical Use Cases
- Personal caching proxy on a laptop or desktop to speed up repeated browsing.
- Local proxy on a netbook or Raspberry Pi to provide caching for a small home network.
- Front-end cache for bandwidth-constrained environments (e.g., metered connections).
- Privacy-focused setups pairing Polipo with Tor via SOCKS to perform HTTP-to-SOCKS forwarding (note: extra care required to avoid DNS leaks and preserve anonymity).
- Development use for testing requests, rewrites, and local caching behavior.
How Caching Improves Performance
Caching saves time by eliminating repeated downloads of the same resources:
- Network round-trip time (RTT) is avoided for cached resources.
- Bandwidth is conserved; repeated large resources (images, scripts) don’t re-download.
- Connection reuse and HTTP pipelining reduce overhead for multiple requests to the same host.
Example: On a page with many repeated assets, Polipo serving images and scripts from its cache can reduce page load time significantly compared to fetching each resource over a high-latency link.
Installing Polipo
Polipo is packaged in many Linux distributions and can also be compiled from source. Example (Debian/Ubuntu):
sudo apt update sudo apt install polipo
To compile from source:
wget http://www.pps.jussieu.fr/~jch/software/polipo/polipo-VERSION.tar.gz tar xzf polipo-VERSION.tar.gz cd polipo-VERSION ./configure make sudo make install
(Replace VERSION with the actual release number.)
Basic Configuration
Polipo’s configuration usually lives in /etc/polipo/config or ~/.polipo/config. A minimal configuration for a local proxy listening on port 8123:
proxyAddress = "0.0.0.0" proxyPort = 8123 diskCacheRoot = "" diskCacheIsShared = false disableIndexing = true
Key options:
- proxyAddress / proxyPort — where Polipo listens.
- diskCacheRoot — path for disk cache (empty = no disk caching).
- diskCacheSize — maximum disk cache size in bytes.
- objectLifetime — default cache TTL for objects without explicit expiry.
- socksParentProxy — set to “localhost:9050” to forward through Tor’s SOCKS port.
Remember to secure your proxy (bind to localhost or restrict access) if you don’t want others using it.
Example: Using Polipo with Tor
Polipo historically was used to convert HTTP proxy requests into SOCKS for Tor. Example config lines:
socksParentProxy = "localhost:9050" socksProxyType = socks5
Important privacy notes:
- Modern guidance often recommends using Tor Browser instead of setting up system-wide proxies with Polipo to avoid leaks.
- Ensure DNS requests do not leak to the local resolver; Polipo must be configured carefully or bypassed in favor of Tor Browser which handles this.
Tuning and Best Practices
- Use memory caching for speed; enable disk caching only if you need persistence across restarts.
- Set diskCacheSize appropriate to available disk space and expected working set.
- Tune objectLifetime and maxAgeRespect to balance freshness and cache hit rate.
- Restrict listening address to localhost for single-user setups: proxyAddress = “127.0.0.1”.
- Use firewall rules or Polipo’s allowedClients to limit access on shared networks.
- Monitor logs for cache hits/misses to understand benefits and tune settings.
Limitations and Security Considerations
- Polipo is not actively maintained as a widely-updated proxy like Squid; check project status before deploying in production.
- It does not implement full access controls or advanced filtering found in larger proxies.
- When used with anonymity tools, misconfiguration can produce DNS or other leaks.
- Polipo’s caching respects HTTP headers but may require careful TTL tuning to avoid serving stale content.
Alternatives
Common alternatives depending on needs:
- Squid — full-featured caching proxy with access control and extensive tuning.
- Varnish — high-performance HTTP accelerator mainly for web application caching (reverse proxy).
- Privoxy — filtering proxy focused on privacy and ad-blocking (often used with Tor instead of Polipo for HTTP filtering).
- Tinyproxy — another lightweight HTTP proxy for small deployments.
Proxy | Strengths | When to use |
---|---|---|
Polipo | Very small, fast, simple config | Personal caching, low-resource devices |
Squid | Feature-rich, scalable | Large networks, complex access control |
Varnish | High-performance HTTP acceleration | Reverse proxy for web servers |
Privoxy | Privacy filtering, ad blocking | Privacy-focused filtering with Tor |
Tinyproxy | Lightweight and simple | Minimal forward proxy needs |
Troubleshooting
- Check logs (often /var/log/polipo or system journal) for errors on startup or cache issues.
- Verify port binding and firewall rules if clients can’t connect.
- Use curl with proxy option to test behavior: curl -x http://127.0.0.1:8123 http://example.com
- If content appears stale, review caching headers and objectLifetime settings.
Conclusion
Polipo is a useful tool when you need a straightforward, low-overhead HTTP caching proxy. It shines on resource-constrained devices and for individual users wanting faster browsing through caching or simple HTTP-to-SOCKS forwarding. For production-grade deployments or advanced access control, consider more actively maintained alternatives like Squid or Varnish.
Leave a Reply