How rotation works
By default, every request gets a different exit IP. You do nothing to make that happen.
# Run this twice. Two different addresses.That is the right behavior for most scraping: each request looks unrelated to the last, and no single address accumulates enough traffic to get rate-limited.
When rotation is wrong
Section titled “When rotation is wrong”Anything with state breaks. A login, a cart, a multi-step form, a paginated result set behind a session cookie. All of them expect the same client throughout, and a new IP on request three looks like a hijack.
For those, hold an IP with a sticky session.
Choosing
Section titled “Choosing”| You are doing | Use |
|---|---|
| Independent page fetches | Rotating (default) |
| A login, then pages behind it | Sticky |
| A flow that breaks if the IP moves at all | Strict sticky |
| Long-running work on one identity | Sticky plus duration |
One session per worker
Section titled “One session per worker”If you run requests concurrently, give each worker its own session id. Sharing one id across ten threads sends ten simultaneous requests down one device’s connection, which is slower than not using a session at all and looks nothing like a person.
Retries still matter
Section titled “Retries still matter”Residential exits are real devices and they go offline. Rotating traffic absorbs this invisibly, because the next request just gets another exit. Sticky traffic does not, which is the whole point of it. See Errors & retries.
Was this page helpful?
Thanks — that helps us fix it.