# DIY Proxy with Rotating IPs
I found [this project](https://github.com/pry0cc/ProxyDock) a while back and it has come in handy a few times now.
Say we have a webservice and I need to send a ton of web requests to it, but the service blocks ips after seeing so many requests.
Or I have website I would like to try to password spray on, but it also blocks after so many bad requests.
One way around this would be to pay for a residential proxy service like brightdata.com.
They claim to use ethically sourced ip addresses, but in reality trick users into installing apps like [hola vpn](https://hola.org/cms/bright-data-a-partner-we-can-trust/), that bundle Luminati into their free apps which essentially joins them to a botnet.
Some sketchier residential proxies just straight up use botnets sourced from malware.

I'm not a fan of either option.
What you can however do is pay for a VPN service like Private Internet Access or Hide My Ass and they allow 1 connection for every country they support (currently 84 for pia)
Using containers and a load balancer you can abuse this, which is exactly what [DoxyCannon](https://github.com/audibleblink/doxycannon) does.
https://web.archive.org/web/20201109035658/https://sec.alexflor.es/post/password_spraying_with_doxycannon/
The project creates a container for every connection and is running a dante socks proxy.
A container running haproxy is then used to randomly rotate between them all.
Simply install docker, download your ovpn certs, run the python project to spin up the containers, and set your browser's socks proxy to the haproxy port.
Every request you make will come from one of the random countries.
This is likely against your vpn providers terms of service in some way and may not work in the future, but is a neat trick for now.
There are other ways to do this like: [aws lambda's](https://github.com/dan-v/awslambdaproxy), [AWS API Gateway](https://github.com/Ge0rg3/requests-ip-rotator), [spoofed ipv6 space with TrevorProxy](https://github.com/blacklanternsecurity/TREVORproxy), or use [plain ipv6 on linode](https://www.linode.com/docs/guides/an-overview-of-ipv6-on-linode/) as nodes are assigned very large blocks of ip space