LoginToolsPricing
BirdProxies
BirdProxies
Entrar
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()

Sempre Ligado, Sempre Vencendo

Benefícios Que Mantêm Você na Frente

Proxies Seguros & Protegidos

Aproveite conexões privadas, sem restrições e ultra-rápidas sem complicações.

Velocidades Ultra-Rápidas

Muito lento? Muito tarde? Não com a gente. Aproveite conexões ultra-rápidas sempre!

Meu IP foi sinalizado no Instagram
02:14
Estou trocando agora, um segundo
02:14
Pronto, o novo IP já está no seu dashboard
02:15
Que rápido, valeu
02:15
Tem ISPs da Alemanha em estoque?
04:37
Sim, acabamos de repor
04:37
Perfeito, vou pegar alguns agora
04:38
Me chama se precisar de ajuda na configuração
04:38

Suporte 24/7

Dia ou noite, estamos aqui para ajudar você 24/7.

Contorne Restrições

403 Proibido! Não mais. Acesse qualquer site, em qualquer lugar com facilidade.

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

/ GB

Dados1 GB
Largura de BandaIlimitado
Velocidade10 Gbps

€5.00

Recarregue quando quiser

Developer

Daily scraping and QA runs

€4.75

/ GB

Dados5 GB
Largura de BandaIlimitado
Velocidade10 Gbps

€23.75

Recarregue quando quiser

Preferido pelos clientes

Scale

High-volume data collection

€4.50

/ GB

Dados10 GB
Largura de BandaIlimitado
Velocidade10 Gbps

€45.00

Recarregue quando quiser

Enterprise

Enterprise-scale crawling

€3.75

/ GB

Dados100 GB
Largura de BandaIlimitado
Velocidade10 Gbps

€375.00

Recarregue quando quiser

Starter

Test residential proxies with Selenium

€5.00 / GB

€5.00

Recarregue quando quiser

Developer

Daily scraping and QA runs

€4.75 / GB

€23.75

Recarregue quando quiser

Scale

High-volume data collection

€4.50 / GB

€45.00

Recarregue quando quiser

Enterprise

Enterprise-scale crawling

€3.75 / GB

€375.00

Recarregue quando quiser

Dados1 GB5 GB10 GB100 GB
Tamanho do Pool72M+ IPs72M+ IPs72M+ IPs72M+ IPs
Países170+170+170+170+
Tipo de SessãoRotativo/FixoRotativo/FixoRotativo/FixoRotativo/Fixo
DesbloqueadoGarantidoGarantidoGarantidoGarantido
Preferido pelos clientes

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