๐ŸŽ‰ Premium Proxies ยท 24-Hour Free TrialClaim Now
Comparisons

Best Proxies for Selenium: Which Type to Buy for Your Tests

Choosing a proxy for Selenium? Compare proxy types, auth modes, rotation and bandwidth billing, then size a plan to your parallel browsers before you buy.

S SparkProxy 1 16 min read
Share
Best Proxies for Selenium: Which Type to Buy for Your Tests

The best proxy for Selenium is, for most teams, a datacenter proxy with IP whitelist authentication, sticky sessions and unmetered bandwidth: residential only earns its price when a target blocks hosting networks outright, and static IPs only when a login must keep the same address.

Picking a proxy for Selenium is a different purchase from picking one for a plain HTTP scraper. A real browser pulls dozens of subresources per page, keeps cookies tied to a session, and (in Chrome's case) cannot pass a username and password to a proxy on its own. Those three facts decide which plan works, and most "best proxy" lists never mention them. This guide is about the buying decision only. If you already have proxies and need the code, our Selenium proxy setup tutorial covers Chrome, Firefox, authentication and rotation step by step.

The short answer

Buy by workload, not by pool size:

  • Testing your own app from other countries (geo content, pricing, localization, consent banners): rotating or sticky datacenter proxies. The site is yours, nobody is blocking you, and you want cheap, fast, predictable exits.
  • Scraping sites with light or no bot protection: datacenter proxies on a flat plan with sticky sessions. Browsers are bandwidth-heavy, so avoid per-GB billing.
  • Scraping sites behind serious bot management: fix the browser fingerprint first. If clean datacenter IPs still get refused on the first request with a well-configured browser, then pay for residential, and budget for per-GB pricing.
  • Logged-in flows and account work: static IPs you keep (dedicated datacenter or ISP), because an address change mid-session is a security event for the target.

Whatever you buy, confirm it supports IP whitelisting or that you have a plan for credentials in Chrome. That single detail causes more failed Selenium purchases than any quality difference between vendors.

Why Selenium changes the proxy purchase

A requests or httpx scraper sends one request and gets one HTML document back. Selenium drives a full browser, and the browser does what browsers do.

It loads everything. The HTTP Archive's 2024 Web Almanac puts the median desktop home page at 2,652 KB across 74 requests, and the median mobile home page at 2,311 KB across 70 requests. A plain scraper fetching the same URL pays for one HTML document. Selenium pays for the scripts, fonts, images, trackers and API calls too, all of which go through your proxy.

It holds state. Cookies, local storage, CSRF tokens and login sessions live inside the browser profile. Many sites bind a session to the IP that created it. Change the exit IP halfway through a page load or a checkout flow and you get logged out, re-challenged, or served an error.

It authenticates awkwardly. Chrome's --proxy-server flag accepts a host and port. It has no field for a username and password, and credentials embedded in the proxy URL are silently ignored. Chrome also does not support authentication on SOCKS5 proxies at all. So the auth method your provider supports is a hard compatibility question, not a preference.

It is expensive to run. Each browser instance takes real memory and CPU on your side. In practice your own hardware often caps parallelism before your proxy plan does, which changes how you should size the plan.

So the ideal Selenium proxy has unmetered bandwidth, sessions that hold one IP for minutes, and authentication without credentials in the browser. Pool size, the number vendors lead with, matters least.

Free trial

Scraping at scale? Skip the blocks.

Fast, unblockable datacentre proxies with unlimited bandwidth.

Proxy types for Selenium, compared

Proxy typeTypical billingSelenium fitBest forWhere it falls down
Rotating datacenter (per request)Per thread or per IP, often unmeteredGood for one page per sessionGeo QA, stateless page checksSplits one page's subresources across IPs if used inside a long session
Sticky datacenter (timed rotation)Same as rotatingVery goodMulti-page flows, scraping with sessionsHosting ASN is visible, so strict targets can block it
Static / dedicated datacenterPer IP per monthGoodAllowlisted staging environments, stable test identitiesFewer addresses, so per-IP rate limits bite sooner
ISP (static residential)Per IP per month, sometimes with traffic capsVery good for accountsLogged-in automation that must look consumer-gradeCosts several times more per address than datacenter
Rotating residentialPer GBWorkable but costlyTargets that block datacenter rangesEvery image and script is billed traffic
MobilePer GB or per portNicheMobile-only experiences, carrier-specific checksHighest cost, slowest exits

Billing and session behaviour are the two columns that matter most here, because a browser multiplies traffic. For the broader trade-off between network types, see residential vs datacenter proxies.

Match the proxy to the job

End-to-end and geo testing of your own application

This is where teams overspend most. You control the target, so nothing is trying to block your test runner. You need an exit IP in the right country, fast enough that suites don't time out.

Datacenter proxies are the correct buy here. Residential proxies add latency and cost and solve a blocking problem you don't have. If your staging environment sits behind an allowlist, a static datacenter IP (or a small set of them) is easier to add to the firewall than a rotating pool. Our guide to proxies for localization testing covers what to verify per market.

Scraping JavaScript-heavy sites with light protection

Single-page apps, infinite scroll, content that only exists after a click. Selenium is the tool because the data isn't in the raw HTML. The proxy requirements are sessions that hold one IP for the length of a page flow and bandwidth you don't pay for by the gigabyte.

Buy sticky datacenter proxies on a flat plan. Start with the smallest tier that covers your parallel browsers and measure block rate on your real targets before scaling.

Scraping sites behind bot management

Here the honest answer is that the proxy is usually the second problem. Stock Selenium exposes automation signals, navigator.webdriver among them, and bot-management vendors check the browser before they check the IP's reputation. A residential IP attached to an obviously automated browser still gets challenged.

Work through headless browser detection first. If a hardened browser on a clean datacenter IP is still refused on the very first request, the target is blocking by network type, and residential is the purchase that fixes it. Buy the smallest residential allowance you can, block images, and measure traffic per page before committing to a volume tier.

Logged-in automation and account workflows

Anything where the site remembers who you are: dashboards, seller portals, social accounts. Rotation is the wrong product. You want one IP per account that stays put for days or weeks. Buy static datacenter IPs when the target tolerates hosting ranges, and ISP proxies when it doesn't. Follow the site's terms of service; proxies don't change what you're permitted to do on a platform.

Load testing

Don't use Selenium for this: a browser per virtual user is far too heavy. Use protocol-level tools, and see proxies for distributed load testing explains when you need distributed exits at all.

Authentication: the criterion that breaks setups

Proxies authenticate in one of two ways: username and password on each connection, or an IP whitelist where the provider accepts any connection from addresses you've registered. For a plain HTTP client the difference is cosmetic. For Selenium it isn't.

Because Chrome can't take credentials through its proxy flag, teams that bought user:pass-only proxies end up with workarounds: a browser extension that answers the auth challenge, a local forwarding proxy, or Selenium Wire. Be careful with the last one. Selenium Wire's GitHub repository was archived by its owner on January 3, 2024, and its README now states that it "is no longer being maintained". Building a new pipeline on an unmaintained man-in-the-middle library is a liability you'd be buying along with the proxy. Newer Selenium versions are adding network interception through WebDriver BiDi, but support varies by browser and language binding, so check the Selenium documentation for your versions rather than assuming it works.

IP whitelisting sidesteps all of it. The browser connects to the gateway host and port, the gateway recognises your server's IP, and no credential ever touches Chrome. The catch is that your egress IP must be stable and known:

  • A fixed VPS or on-prem runner: whitelisting is ideal. Register the IP once.
  • Selenium Grid across several nodes: each node's public IP needs a slot, unless they share a NAT gateway with one fixed egress address.
  • Hosted CI runners (GitHub Actions hosted runners and similar): egress addresses change between jobs. Either route the runners through a fixed egress or use credentials with a local forwarder.

That's why the number of whitelist slots on a plan is a real Selenium buying criterion. Count your distinct egress IPs before you choose a tier. IP whitelisting for proxies explains the mechanics.

Rotation mode: per request or sticky

Rotation sounds like a pure advantage until a browser is involved.

Per-request rotation gives each new connection a different exit IP. For a single HTTP scraper that's what you want. For a browser, one page load opens many connections, so the HTML, the scripts and the API calls behind it can leave from different IPs. Sites that tie a session token to an IP will see a session hopping between addresses in under a second, which looks like exactly what it is.

Per-request rotation still works when each browser session loads one page and quits, which fits many geo checks.

Sticky sessions hold one exit IP for a window of time. That matches how a browser session behaves, so it's the safer default for any multi-page flow.

On SparkProxy's gateway (gateway.sparkproxy.io) this is a port choice rather than a separate product: port 11000 for HTTP/HTTPS with random per-request rotation, port 11002 for sticky sessions, and port 13000 for SOCKS5. Plans also support 5-minute auto rotation, which suits Selenium well: long enough for a normal page flow, short enough that no single IP accumulates a heavy request history. Restart the driver on a new session when the window ends rather than letting the IP change underneath an open page.

If the target needs one IP for hours or days, stop looking at rotation settings and buy static IPs. Rotating vs static datacenter proxies compares the two in detail, and what is a sticky session proxy covers session windows across network types.

Bandwidth: why per-GB billing punishes browsers

This is the section most Selenium buyers skip and later regret.

Take an illustrative workload, stated as an assumption rather than a measurement: 100,000 page loads a month, each close to the Web Almanac median of roughly 2.3 to 2.7 MB. That's somewhere around 230 to 265 GB of proxy traffic. The same 100,000 pages fetched as raw HTML by a non-browser scraper might be a small fraction of that, because HTML is usually a minor part of total page weight.

On a per-GB plan that multiplier lands on your invoice, and it moves with things you don't control: a redesign, a new analytics script, a retry loop. Every retry reloads every asset.

You can cut browser traffic a lot:

  • Disable image loading in the browser profile. Images are usually the largest share of page bytes.
  • Block known third-party trackers and ad hosts at the browser level so they never reach the proxy.
  • Reuse one browser session across several pages so fonts and scripts come from cache.

Even trimmed, a browser uses far more traffic than an HTTP client. The rule: for Selenium, prefer plans billed by concurrency or by IP with unmetered bandwidth, and only accept per-GB billing when the target forces residential. When it does, measure bytes per page on your own target with images blocked, then multiply by your vendor's per-GB rate before choosing a tier.

Sizing a plan: browsers are not threads

Plans billed by concurrency sell a number of threads, and it's tempting to map one thread to one browser. Don't assume that.

A browser opens several connections for a single page: one tunnel per origin it talks to, and sometimes several per origin. A page pulling assets from a dozen hosts can briefly hold a dozen or more proxy connections. How a provider counts a thread (per open connection, per session, per request in flight) determines how many browsers a tier really supports, so ask or test. Concurrent connections in proxies explains how to estimate it.

A sizing sequence:

  1. Find your hardware ceiling. How many browsers can your machines run before memory or CPU saturates? For many teams this is tens, not hundreds, per server.
  2. Measure connections per browser. Run one browser through a proxy against your real target and watch peak open connections through a page flow.
  3. Multiply and add headroom. Parallel browsers times peak connections, plus 25 percent for slow pages and retries.
  4. Pick the tier above that number, then check whitelist slots against your egress IP count.

Illustrative arithmetic, not a benchmark: 20 browsers per server at around 10 peak connections each means roughly 200 to 250 threads for that server.

SparkProxy plans mapped to Selenium workloads

SparkProxy is a datacenter proxy provider. It doesn't sell residential or mobile plans, so if your target blocks datacenter ranges outright, look elsewhere for that part of the job. For the workloads datacenter proxies suit, the published plans are:

PlanPriceThreadsWhitelist slotsSpeed cap (fair usage ceiling)Selenium fit
Starter$75/mo100525 MbpsA QA team running geo tests from a few fixed runners
Core$140/mo2501050 MbpsOne scraping server with a few dozen browsers, or a small Grid
Boost$240/mo50015100 MbpsMulti-node Grid, several scraping servers
Plus$440/mo100025150 MbpsLarge distributed browser fleets

All four include unlimited bandwidth and 30 days validity, which removes the per-GB exposure described above. Speed caps are a ceiling rather than a guaranteed rate, and browser traffic is bursty, so a tier's Mbps ceiling matters more for Selenium than for a lightweight HTTP scraper. Larger Pro (1,500 threads) and Pro+ (2,000 threads) tiers exist under the fair usage policy without public pricing; contact sales for those.

The network is 1M+ datacenter IPs across 80+ countries, including 50,000+ US addresses, with USA and worldwide rotating options.

Where to buy something else: Webshare's own pricing page lists a free tier of 10 proxies with no card required, and per-proxy rates starting at $0.0299 at 100 proxies (both as of September 2026; check the vendor site for current rates). For a single developer proving a Selenium script works against one target, that's a cheaper place to start. Our best datacenter proxy providers ranking compares more vendors on their published terms.

When a proxy is the wrong purchase

If you're using Selenium only because pages render with JavaScript, and you don't need clicks, form fills or scrolling, a rendering API can replace the browser fleet. SparkProxy's Scraping API renders JavaScript for 5 credits per request (1 credit for a plain fetch, 10 for a screenshot or PDF), with 1,000 free credits and no card to test. Starter is $49 for 250,000 credits a month with 50 concurrent requests. You stop managing Chrome versions, memory and proxy auth; you give up fine-grained interaction control. Web scraping API vs self-managed proxies walks through that trade-off.

If you're choosing a browser framework at the same time as a proxy, it's worth reading Playwright vs Selenium for web scraping first. Playwright accepts proxy credentials natively in its launch options, which removes the Chrome authentication problem entirely.

A pre-purchase checklist

Run through this before paying for any proxy for Selenium:

  1. Workload named: own-app testing, light scraping, protected scraping, or account work.
  2. Auth path chosen: whitelist with known egress IPs, or credentials plus a maintained way to supply them to the browser.
  3. Egress IPs counted against the plan's whitelist slots, including every Grid node and CI runner.
  4. Rotation mode matched to session length: per request for one-page sessions, sticky for flows, static for accounts.
  5. Billing unit checked: unmetered or per-thread for browsers, per-GB only when the target forces residential.
  6. Bytes per page measured on your real target, with images blocked, if any per-GB plan is on the table.
  7. Connections per browser measured and multiplied by parallel browsers, plus headroom.
  8. Trial run on your own targets before the first full month.

Then set it up with the Selenium WebDriver datacenter proxy setup guide, which has working Python, Node.js and Java configurations.

Frequently asked questions

FAQ

For most Selenium workloads, a datacenter proxy with IP whitelisting, sticky sessions and unmetered bandwidth is the best fit. Choose residential only when a target blocks datacenter IP ranges even with a well-configured browser, and choose static IPs for logged-in account work.

Usually not. Testing your own application and scraping lightly protected sites both work on datacenter proxies. Residential proxies help only when a site refuses hosting-network IPs outright, and because they're billed per GB, every script and image a browser loads adds to the cost.

Chrome's proxy-server flag accepts only a host and port, and it ignores credentials placed in the proxy URL. It also doesn't support authentication on SOCKS5 proxies. Use IP whitelisting, a browser extension or a local forwarding proxy, or switch to a framework that accepts proxy credentials natively.

Use sticky sessions for any flow that spans several pages or depends on cookies, because per-request rotation can send one page's subresources out through different IPs. Per-request rotation is fine when each browser session loads a single page and then closes.

Multiply your parallel browsers by the peak connections each browser opens during a page flow, then add about 25 percent headroom. A single browser often holds several connections at once, so one thread per browser usually undersizes the plan.

It's risky for new projects. The Selenium Wire repository was archived on January 3, 2024, and its maintainer states it is no longer maintained. IP whitelisting avoids the need for it, and newer Selenium network APIs or Playwright's built-in proxy credentials are maintained alternatives.

Special Discount ยท 20% off

Get 20% off your first month

Premium datacentre proxies with unlimited bandwidth. Use the code at checkout.

Save up to 15% more on quarterly, half-yearly and yearly plans

Claim Discount

About the author

Written by the SparkProxy Technical Team. SparkProxy runs a datacenter proxy network of 1M+ IPs across 80+ countries, including 50,000+ US addresses, plus a managed Scraping API with JavaScript rendering. Third-party figures in this guide come from the named source's own published pages and are dated so you can check them. Corrections: support@sparkproxy.io.

Keep reading

Related articles