Proxy Rotation Service
The service (Proxy Rotation Service, or PRS for short) does the following:
1) PRS is given a list of HTTP/HTTPS proxy servers, possibly with username and password for basic authentication. This list should be able to be updated dynamically (IPs added and removed) as PRS is running.
2) PRS is itself a proxy, and should have the option of basic auth.
3) When a request comes into PRS, it should randomly choose one of the downstream proxies that it was given, and route the request through that proxy. In the case of a 503 response code, PRS should mark that <IP, domain_name> pair invalid for a period of time and try another IP address that is valid for the domain name of the request. It does this up to 20 times for each request that comes in. This should not be visible from the client of PRS (i.e. the client should not know that there had to be multiple tries to get at the response)
4) There should be a customizable throttle for how often any single IP can...