20 IPs for 60 minutes on the country-mix package. No card required.
Start free trialScrape with Selenium and proxies that work in the vanilla driver: whitelist auth instead of credential code, stable IPs for rate limits and geo-specific pages, from $19/mo.
The reason this question exists at all: Chrome has never accepted proxy credentials from automation. Pass user:pass@IP:port to --proxy-server and the browser silently drops the credentials, then blocks your script with a native login popup no driver can click. For years the standard workaround was a small generated extension that injected the username and password at runtime — Chrome 137 (mid-2025) removed the --load-extension switch from branded builds, and the --disable-features flag that re-enabled it was closed in Chrome 142. Frameworks like SeleniumBase patched around the removal through the DevTools protocol, but that’s one more moving part that breaks with major Chrome updates.
IP whitelisting removes the problem instead of working around it. Add the IP of the machine running your scripts in the Dashboard — every plan includes up to five whitelisted source IPs, which covers a typical fleet of scraping servers — and the vanilla driver needs exactly one line:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=IP:port") # whitelisted, so no credentials
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
No extension, no interception layer, nothing to re-fix after the next browser release. The same option works in headless mode, in Firefox, and in a Selenium Grid proxy setup — whitelist each node’s IP once and every session it hosts is covered.
Rotation stays in your hands: export the package list in any format (TXT, CSV, or a custom template) and hand out addresses to your workers — one exit IP per browser instance is the pattern that scales, and the general mechanics of pools and pacing are covered on the web scraping proxies page. Packages start at 100 IPs, from $19/mo. Product specs are in the adjacent panel, and the comparison table below shows how datacenter packages stack up against other proxy types. For a step-by-step walkthrough — Chrome and Firefox, authentication, and rotation from a list — see the Selenium proxy setup guide.
Four infrastructure types — and the use cases each one fits best.
| Our pick for Selenium Packagesdatacenter IPv4 |
Rotating | ISP | IPv6 | |
|---|---|---|---|---|
| IP source | Datacenter, IPv4 | Datacenterthe same 100,000+ IP pool | Consumer ISP networks | Datacenter |
| IP allocation | Static list | Full pool accessthe exit IP rotates on every request | Static list | Static list |
| List refreshes | Up to 3 per month, free | Not applicable | Up to 3 per month, free | Provider-dependent |
| Pricing model | Per-IP packageunlimited bandwidth | Credit-basedyou pay per request, not per IP | Per-IP packageunlimited bandwidth | Per-IP package |
| Website compatibility | ✓ ~100% | ✓ ~100% | ✓ ~100% | ✕ Limitedmany websites don't support IPv6 |
| Speed | Up to 500 Mbps | Up to 300 Mbps | Up to 500 Mbps | Datacenter-grade |
| Anti-fraud trust | Medium | MediumIP rotation helps | High | Low to medium |
| Price | $from $0.07 per IP/month | $$$from $49.00/month | $$from $0.22 per IP/month | $typically the lowest-cost option |
| Best for | Web scraping and automation at a predictable volume: your own IPs, unlimited bandwidth | API scraping that needs as many different IPs as possible without buying a fixed list | Social media, accounts, long sessions — wherever IP trust matters | Use cases where the target site is guaranteed to support IPv6 |
| Buy now | Rotating proxies | ISP proxies | We don't sell these: too many limitations for general-purpose work |
Whitelist access is the base method on every plan — which makes Selenium proxy authentication without Selenium Wire the default here, not a workaround. Copy the example for your stack, or paste it into your AI coding assistant to adapt.
# HTTP or HTTPS proxy curl -x http://login:password@IP:port https://example.com # SOCKS5 curl --socks5-hostname IP:port \ --proxy-user login:password \ https://example.com
import requests proxy = "http://login:password@IP:port" # your proxy from the Dashboard r = requests.get( "https://example.com", proxies={"http": proxy, "https": proxy}, ) print(r.status_code)
import { ProxyAgent } from "undici"; const dispatcher = new ProxyAgent("http://login:password@IP:port"); const res = await fetch("https://example.com", { dispatcher }); console.log(res.status);
$ch = curl_init("https://example.com"); curl_setopt($ch, CURLOPT_PROXY, "IP:port"); curl_setopt($ch, CURLOPT_PROXYUSERPWD, "login:password"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch);
Choose a standard format or create a custom one with any field order and delimiter your software requires.
See the FAQ for the ports used by each protocol.
You can automate purchases, renewals, whitelist changes, and proxy list exports. Create an API key in your Dashboard in a couple of clicks.
Claude, Cursor, and other agents buy proxies, renew plans, and export updated proxy lists through an access token you create in your Dashboard. See how it works.
Per-IP prices shown are for the largest package size. Get an exact quote in the calculator above.
| IP | Country | Port | Protocol | |
|---|---|---|---|---|
| 212.183.88.215 | AT | 80 | HTTP | |
| 47.243.92.199 | HK | 3128 | HTTP | |
| 212.183.88.153 | AT | 80 | HTTP | |
| 212.183.88.13 | AT | 80 | HTTP | |
| 203.95.199.159 | KH | 8080 | HTTP | |
| 154.92.9.3 | JP | 80 | HTTP | |
| 113.204.79.230 | CN | 9091 | HTTP | |
| 181.214.1.97 | AE | 80 | HTTP | |
| 219.93.101.63 | MY | 80 | HTTP | |
| 185.18.250.64 | CH | 80 | HTTP |
A few service metrics—and feedback from our customers.
I use proxies for online games. I have been using the service for many months and I am satisfied with the quality and efficiency. Proxies work as they should and there are practically no disconnects. I recommend it, you will not regret it!
Like the service! Responsive and fast support, affordable prices, convenient renewal panel and network selection. Just what I need!
I used the service for social networking. At first I bought it for a month, but now I will definitely renew it because the quality is really good! I am very glad that I finally found a really cool service!
Proxies do not fail, and at this price it is a great gift. I buy them when I need them, usually once every few months. There have been a few minor glitches but the support here is above all praise. Responsive, kind, understanding and fast. All issues were resolved promptly. It is very nice to work with true professionals.
Can't find your answer? Message us in live chat — real humans reply.
You didn't do anything wrong — Chrome ignores credentials embedded in the --proxy-server value, so the proxy never receives them and the browser falls back to the native login prompt your script can't click. The old fix — a generated extension that answered the auth challenge — stopped working when Chrome 137 removed the --load-extension switch from branded builds (and Chrome 142 closed the --disable-features flag that briefly re-enabled it). You can still handle the challenge through the DevTools protocol (Fetch.continueWithAuth), but that's auth code you now own and maintain. The simpler route is to remove authentication from the picture: whitelist your server's IP in the Dashboard and pass a plain --proxy-server=IP:port. At PapaProxy.net whitelisting is the primary access method, so this works on any plan with no extra code.
Not for new projects. The original package was archived in January 2024 (its last release dates back to October 2022) and fails at import on current dependency versions. Community forks exist, but the architectural cost remains: Selenium Wire routes all browser traffic through a local interception proxy with its own TLS certificate — an extra hop that slows page loads and adds a MITM signature some targets detect. If the only reason you reached for it was proxy authentication, whitelisted IPs make the whole layer unnecessary: the vanilla driver connects straight to the proxy.
Rotating proxies for Selenium scraping come in two shapes, and the cheaper one is usually enough. --proxy-server is fixed for the lifetime of a browser instance, so rotation happens in your code: keep the exported proxy list, and each time you launch a driver, take the next address from it. For parallel scraping, assign each worker its own exit IP — packages start at 100 IPs, so a hundred concurrent browsers can each run behind a different address. Export the list from the Dashboard in TXT, CSV, or a custom field order to match whatever rotation logic you already have. If you'd rather skip managing the list entirely, rotating proxies handle the switching for you.
Yes — --proxy-server=socks5://IP:port works in Chrome and Firefox, with one caveat: the credentials limitation applies to SOCKS5 too, and there's no extension workaround for SOCKS authentication at all. With IP whitelisting that constraint disappears, so both protocols are equally usable. Every address in our packages answers on HTTP, HTTPS, SOCKS4, and SOCKS5 — the protocol is a client-side setting, not a purchase option, so you can switch your fleet between HTTP and SOCKS5 without touching the proxy list.
A different proxy type may be a better fit for your use case. All products use the same Dashboard and support team.
An IP reserved exclusively for you, available from a single IP. Speeds of up to 500 Mbps per proxy.
Learn moreStatic ISP-registered residential IPs for use cases where network origin matters.
Learn morePay per request and access the full 100,000+ IP pool through a single gateway. Built for web scraping and API workloads.
Learn moreSOCKS5 with UDP support — for gaming, streaming, and VoIP.
Learn moreWe can sign a contract and provide all the documents your accounting team needs. Most business orders are activated within 24 hours of your request.