LittleProxy

LittleProxy is a high-performance HTTP proxy written in Java atop Trustin Lee's Netty framework. It's a side-project of LittleShoot and the Brave New Software Project. While many may still think of "high-performance" and "Java" as a contradiction in terms, the JVM has made astonishing strides over the years. That combined with Netty's use of event-based IO means that LittleProxy outperforms mod_proxy in every test we've ever run, beating it by as much as 83% on some tests using Apache Benchmark. LittleProxy is still a young project, but it works well.

LittleProxy is open source and used the Apache 2 license. If you would like to use LittleProxy under another license, please contact us at littleproxy at littleshoot.org or inquire on the forum.

To run LittleProxy, you need two things: Java and maven.

Enjoy, and please let us know if you have any issues over on the LittleProxy discussion group.

Quick Start - Run from Source

You can either run LittleProxy directly from source or you can include the LittleProxy jar via maven or direct download.

To run from the source, do the following:

  $ git clone git://github.com/adamfisk/LittleProxy.git 
  $ cd LittleProxy
  $ ./run.bash &> out.txt &

Quick Start - Maven

To include the LittleProxy jar in your maven project, simply add it as a dependency, as shown below. LittleProxy releases are synced with the Maven Central Repository.

    <dependencies>
       ...
        <dependency>
            <groupId>org.littleshoot</groupId>
            <artifactId>littleproxy</artifactId>
            <version>0.4</version>
        </dependency>
    </dependencies>

    ...

    <repositories>
        ...
        <repository>
            <id>littleshoot</id>
            <name>LittleShoot Repository</name>
            <url>http://svn.littleshoot.org/maven</url>
        </repository>
    </repositories>

If you want to run SNAPSHOT versions of LittleProxy for any reason, you need to add the Sonatype Nexus Snapshot repository. Along with the LittleProxy snapshot dependency, you would do that as follows:

    <dependencies>
       ...
        <dependency>
            <groupId>org.littleshoot</groupId>
            <artifactId>littleproxy</artifactId>
            <version>0.5-SNAPSHOT</version>
        </dependency>
    </dependencies>

    ...

    <repositories>
        ...
        <repository>
            <id>sonatype-nexus-snapshots</id>
            <name>Sonatype Nexus Snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

Once you've included LittleProxy, you can start the server with the following:

final HttpProxyServer server = new DefaultHttpProxyServer(8080);
server.start();

There are lots of filters and such you can also add to LittleProxy. If you run into any issues, please add them to GitHub at

https://github.com/adamfisk/LittleProxy/issues

If you have any other questions, please visit our forum here: