Getting started
Rotating vs sticky sessions
How exit IPs are assigned per connection, when they change, and how the _sticky suffix keeps one for about 5 minutes.
The session mode is chosen per request by a suffix on the username, so one credential can be used both ways at the same time.
Rotating
With no suffix, each new connection to the proxy gets a new exit IP:
mlabs_a1f9c3:<PASSWORD>@proxy.masklabs.io:8080
An exit IP is assigned when a connection to the proxy is opened, and it stays
with that connection for as long as it is open. For HTTPS this means one IP
per tunnel: the client opens a CONNECT tunnel to the target, and every
request sent through that tunnel leaves from the same IP. The IP changes when
the next tunnel is opened.
So "a new IP on every request" depends on your client opening a new connection for every request. Most HTTP clients and every browser reuse connections by default (keep-alive, connection pooling), and requests that share a connection share an exit IP. To rotate on every request, make the client open a new connection each time:
- Disable keep-alive or connection pooling, or create a new client or session per request.
- In a browser, a normal reload reuses the open connection and keeps the IP. Close the tab or start a new browser context to get a new one.
curlopens a new connection per invocation, so running the same command twice gives two IPs.
If your client reuses connections and you want each connection to keep its IP, that is already how it works. If you want the same IP across connections, use a sticky session.
Sticky
Append _sticky to keep the same exit IP for about 5 minutes, across
connections:
mlabs_a1f9c3_sticky:<PASSWORD>@proxy.masklabs.io:8080
Every connection made with that login during the window uses the same exit. When the window ends, the next connection picks a new exit and starts a new window.
Combining with a location
A location suffix goes before the mode suffix:
mlabs_a1f9c3_loc_ORD_sticky:<PASSWORD>@proxy.masklabs.io:8080
See Location targeting for the codes.