LoginToolsPricing
BirdProxies
BirdProxies
Connexion
4.9Trustpilot

selenium-landing.header.title IP BansCAPTCHAsRate LimitsBot Detection403 ErrorsAuth PopupsIP Bans|

selenium-landing.header.subtitle

selenium-landing.logoTicker.title
Selenium
Python
Java
Node.js
Chrome
Firefox
.NET
Docker
GitHub
Playwright
Puppeteer
TypeScript
Selenium
Python
Java
Node.js
Chrome
Firefox
.NET
Docker
GitHub
Playwright
Puppeteer
TypeScript

selenium-landing.useCases.title

selenium-landing.useCases.subtitle

  • Cross-Browser QA Testing

    Run the same test suite through country-targeted exit IPs to catch geo-based bugs before release: wrong currency, wrong language, region-locked content that only shows up from outside your office network.

  • Web Scraping & Data Collection

    Selenium still renders a full JS-heavy page the way a real browser would. Rotate the exit IP between WebDriver sessions so a long collection job does not run its entire volume through one address.

  • Selenium Grid Fleets

    Give each Grid node its own proxy username instead of routing every node through the same office or CI IP, so one flagged address does not take a whole grid of parallel test runs down with it.

  • Multi-Step Workflow Testing

    Login, then cart, then checkout, held on the same exit IP for the length of the WebDriver session with a sticky session tag, so the flow does not look like it changed location mid-test.

What a WebDriver session needs

HTTP and SOCKS5 into any ChromeOptions or Proxy object, one address held for a whole multi-step run, and enough clean IPs that a long suite does not start tripping the same blocks it was built to test around.

selenium-landing.setupGuide.title

selenium-landing.setupGuide.subtitle

  1. 1

    Install Selenium & Get Credentials

    Install Selenium and grab your BirdProxies gateway host, port, username, and password from the dashboard.

    pip install selenium
  2. 2

    Launch Chrome Through the Proxy

    Chrome's --proxy-server flag takes a host and port, but it does not accept an inline username:password - a plain http://user:pass@host:port string is silently dropped and Chrome shows a login popup Selenium cannot dismiss. The standard fix is a small unpacked extension that answers the auth prompt for you.

    import zipfile
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    PROXY_HOST = "gate.birdproxies.com"
    PROXY_PORT = 7777
    
    def build_proxy_extension(username, password, path="bp_proxy_auth.zip"):
        manifest = """{
      "version": "1.0.0",
      "manifest_version": 2,
      "name": "BirdProxies Auth",
      "permissions": [
        "proxy", "tabs", "unlimitedStorage", "storage",
        "<all_urls>", "webRequest", "webRequestBlocking"
      ],
      "background": { "scripts": ["background.js"] },
      "minimum_chrome_version": "22.0.0"
    }"""
        background = f"""
    var config = {{
      mode: "fixed_servers",
      rules: {{ singleProxy: {{ scheme: "http", host: "{PROXY_HOST}", port: {PROXY_PORT} }} }}
    }};
    chrome.proxy.settings.set({{ value: config, scope: "regular" }}, function() {{}});
    
    chrome.webRequest.onAuthRequired.addListener(
      function() {{
        return {{ authCredentials: {{ username: "{username}", password: "{password}" }} }};
      }},
      {{ urls: ["<all_urls>"] }},
      ["blocking"]
    );
    """
        with zipfile.ZipFile(path, "w") as zp:
            zp.writestr("manifest.json", manifest)
            zp.writestr("background.js", background)
        return path
    
    options = Options()
    options.add_extension(build_proxy_extension("YOUR_USER", "YOUR_PASSWORD"))
    
    driver = webdriver.Chrome(options=options)
    driver.get("https://example.com")
  3. 3

    Rotate Sessions & Target Countries

    Append a country or session tag to the username before building the extension. A session tag pins one IP for the whole WebDriver session; a fresh driver with a fresh username gets a new address.

    # Pin one IP for a multi-step flow: login -> cart -> checkout
    sticky_user = "YOUR_USER-country-de-session-checkout01"
    
    options = Options()
    options.add_extension(
        build_proxy_extension(sticky_user, "YOUR_PASSWORD", "sticky.zip")
    )
    driver = webdriver.Chrome(options=options)
    
    driver.get("https://example.com/login")
    # ... same exit IP through cart and checkout ...
    driver.quit()

Toujours ON, toujours gagnant

Des avantages qui vous gardent en tête

Proxies sûrs et sécurisés

Profitez de connexions privées, sans restriction et ultra-rapides sans les tracas.

Vitesses fulgurantes

Trop lent ? Trop tard ? Pas avec nous. Profitez de connexions ultra-rapides à chaque fois !

Mon IP a été signalée sur Instagram
02:14
Je la remplace, un instant
02:14
C'est fait, la nouvelle IP est dans votre dashboard
02:15
C'était rapide, merci
02:15
Des ISP allemands en stock ?
04:37
Oui, restockés à l'instant
04:37
Parfait, j'en prends quelques-uns
04:38
Écrivez-moi s'il vous faut de l'aide pour la config
04:38

Support 24/7

Jour ou nuit, nous sommes là pour vous aider 24h/24 et 7j/7.

Contourner les restrictions

403 Interdit ! Plus maintenant. Accédez à n'importe quel site, n'importe où avec facilité.

BirdProxies residential and ISP proxies plug into Selenium WebDriver through the same HTTP or SOCKS5 configuration Selenium already supports, with sticky sessions for multi-step flows and country targeting for geo testing.

Selenium is the original open-source browser automation framework, controlling real browsers (Chrome, Firefox, Edge, Safari) through the WebDriver protocol across Python, Java, C#, Ruby, and JavaScript bindings. It is still the default choice for large, established QA suites and Selenium Grid deployments, and the same WebDriver session that drives a test can drive a scraper. Selenium has no built-in proxy rotation and, on Chrome specifically, no built-in way to pass a username and password to --proxy-server, so authenticated proxies need one extra piece of setup: a small unpacked browser extension that answers the proxy's auth prompt automatically. Once that is wired up once, BirdProxies residential proxies route WebDriver traffic through real household IPs from 195+ countries, while static ISP proxies give a test suite the same fixed address across every run. Both work through Selenium's standard ChromeOptions --proxy-server argument or the selenium.webdriver.common.proxy.Proxy class, with no provider-specific SDK required.

Last updated: August 2026|By BirdProxies, Proxy Infrastructure Team

Any Language Binding

Selenium ships bindings for Python, Java, C#, Ruby, and JavaScript. The proxy configuration concept is the same across all of them.

Whether the test suite is written in Python (ChromeOptions), Java (DesiredCapabilities or ChromeOptions), C# (Selenium.WebDriver), or JavaScript (selenium-webdriver), the underlying mechanism is identical: set a proxy server on the browser options and, for authenticated proxies on Chrome, load a small extension that supplies the credentials. The same BirdProxies gateway host, port, username, and password work regardless of which binding a project uses.

Auth Needs One Extra Step

Chrome's --proxy-server flag does not accept inline username:password, unlike Playwright's browser.launch({ proxy }) API.

Playwright and Puppeteer both accept proxy credentials as structured launch options. Selenium on Chrome does not: a plain http://user:pass@host:port string is silently reduced to host:port and Chrome pops its own login dialog. The standard workaround, an unpacked extension that answers chrome.webRequest.onAuthRequired, takes a few lines of Python to generate and then works the same way for every driver instance afterward.

Sticky Sessions for Multi-Step Flows

Append a session tag to the proxy username to hold one exit IP for the length of a login-to-checkout WebDriver run.

A test or scrape that moves through several pages in one logical flow, login, then cart, then checkout, should stay on one IP the whole way through. Append -session-{id} to the proxy username before building the driver and the exit IP holds for that session. Drop the tag for one-off page checks where a fresh IP on every driver instance is preferable.

195+ Countries for Geo QA

Append -country-{code} to the proxy username to run a WebDriver session from a specific country.

Testing region-locked content, localized pricing, or currency display used to mean a VPN client on the CI box. With a country-tagged username, a fresh WebDriver session exits through that country instead, which is easier to keep in version control and easier to run in parallel across a Selenium Grid.

Residential vs ISP vs Datacenter Proxies for Selenium

For scraping and anti-bot-protected QA targets, rotating residential proxies are recommended. For fixed-address test suites and internal targets, static ISP proxies are usually simpler.

FeatureResidential (Recommended for scraping)ISP ProxiesDatacenter Proxies
Detection RiskVery low (real household IPs)Low (ISP-grade trust scores)High (IPs cataloged by anti-bot systems)
Speed / Latency50-150ms, 10-50 Mbps25-50ms, up to 1 Gbps10-30ms, up to 10 Gbps
Best ForWeb scraping, geo QA, protected targetsFixed-address QA suites, CI runnersNon-protected internal targets only
IP RotationNew IP per session (drop the session tag)Static (dedicated IP)Static (dedicated IP)
Session SupportSticky sessions (username tag, up to 30 min)Permanent static IPPermanent static IP
Price€2.25-3.50/GB€1.40-2/IP/month€0.50-2/IP/month
Selenium Chrome AuthExtension workaround required (see setup)Extension workaround required (see setup)Extension workaround required (see setup)

Proxies Built for Selenium

Starter

Test residential proxies with Selenium

€5.00

/ Go

Données1 GB
Bande passanteIllimité
Vitesse10 Gbps

€5.00

Rechargez à tout moment

Developer

Daily scraping and QA runs

€4.75

/ Go

Données5 GB
Bande passanteIllimité
Vitesse10 Gbps

€23.75

Rechargez à tout moment

Préféré des clients

Scale

High-volume data collection

€4.50

/ Go

Données10 GB
Bande passanteIllimité
Vitesse10 Gbps

€45.00

Rechargez à tout moment

Enterprise

Enterprise-scale crawling

€3.75

/ Go

Données100 GB
Bande passanteIllimité
Vitesse10 Gbps

€375.00

Rechargez à tout moment

Starter

Test residential proxies with Selenium

€5.00 / Go

€5.00

Rechargez à tout moment

Developer

Daily scraping and QA runs

€4.75 / Go

€23.75

Rechargez à tout moment

Scale

High-volume data collection

€4.50 / Go

€45.00

Rechargez à tout moment

Enterprise

Enterprise-scale crawling

€3.75 / Go

€375.00

Rechargez à tout moment

Données1 GB5 GB10 GB100 GB
Taille du pool72M+ IPs72M+ IPs72M+ IPs72M+ IPs
Pays170+170+170+170+
Type de sessionRotatif/StickyRotatif/StickyRotatif/StickyRotatif/Sticky
Non banniGarantiGarantiGarantiGaranti
Préféré des clients

selenium-landing.reviews.title

selenium-landing.reviews.subtitle

selenium-landing.reviews.trustpilot

Selenium Proxy FAQs

Everything you need to know about using proxies with Selenium

For Chrome, pass --proxy-server as a ChromeOptions argument: options.add_argument('--proxy-server=http://gate.birdproxies.com:7777'), then build the driver with webdriver.Chrome(options=options). For Firefox or other browsers, use Selenium's Proxy class (from selenium.webdriver.common.proxy import Proxy, ProxyType), set proxy.http_proxy and proxy.ssl_proxy, and assign it to options.proxy before creating the driver. Both HTTP and SOCKS5 work the same way - swap the scheme in the --proxy-server string.

Let's start our journey with a personal gift for you ❤️

SELENIUM15

BirdProxies
BirdProxies

Fast, secure, reliable proxies. ISP, Residential, and Mobile, ready when you are.

Products

  • ISP Proxies
  • Residential Proxies
  • Sneaker Proxies
  • Ticket Proxies
  • Crypto Proxies
  • Social Media Proxies
  • Betting Proxies

Company

  • Pricing
  • Partners
  • Imprint
  • Terms

Resources

  • Blog
  • Docs
  • Glossary
  • Integration Guides
  • Compare Providers
  • FAQ
  • Changelog
  • Brand Assets

Connect

  • Dashboard
  • Sign Up
  • Contact

© 2026 BirdProxies. All rights reserved.

PrivacyCookiesRefunds