Proxy

Proxy is simple HTTP proxy server. It supports basic proxy authentication and a domain blacklist (for blocking ads).

Click here to download the zip file containing binaries for the following platforms:

Example 1: Start an open proxy on port 7000

proxy 7000

Example 2: Start a proxy on port 7000 with a blacklist and authentication

proxy 7000 -a aaron:iscool -l list.txt

This uses the blacklist defined in "list.txt". To login use, username "aaron" and password "iscool".

The recommended way to test this is using Firefox because it is the only browser that lets you set a proxy separate from the system proxy. (This way only your connections within Firefox are proxied, not all connections on your computer).

In Firefox, go to Preferences → Network Settings → Settings... → Manual Proxy Configuration → HTTP Proxy. Set the server to "localhost" (or the IP of your cloud VM) and the port to 7000 (if using cloud VM, make sure port is open in firewall).

Usage

USAGE:
	proxy [port] -a [username:password] -l [blacklist]
WHERE:
	-[port] is the port
	-if -a is set, [username:password] are the credentials for basic proxy authentication
	-if -l is set, [blacklist] is a text file containing a list of domains to block, one per line

How do I generate a domain blacklist?

A domain blacklist is just a text file containing a list of domains, one per line. The recommended way to generate one is to use EasyList:

curl 'https://easylist.to/easylist/easylist.txt' | grep -o '^||.*\^' | sed 's/[|^]//g' > list.txt

This downloads EasyList, extracts the domains, strips the special characters, and saves the results as "list.txt".

How do I only proxy certain domains?

You can do this with a Proxy Auto Config (PAC) file, which is just a Javascript file that implements a callback that decides what connections to proxy. It is supported by most browsers and operating systems. See the Wikipedia article for details. If using Firefox, you will need to put the URL of your PAC file under "Automatic proxy configuration URL" (within Network Settings).