Residential proxies
from $0.27/GB
Residential IPs pass IP-type checks on protected sites, and you can pick the country when testing a localized page.
Selenium works on
Set it in one line
Chrome and Edge: options.add_argument("--proxy-server=http://HOST:PORT"). Firefox: the network.proxy.* preferences. A proxy with a password also needs the BiDi auth handler.
One proxy per session
Selenium passes the proxy to the browser when the driver starts. To switch to a different proxy, call driver.quit() and start a new driver with new options.
Selenium Grid
Grid sends the proxy settings to the node as a capability, and the browser on the node opens the connection. That means the node machine has to reach the proxy host. A firewall rule that only lets your laptop through won't help.
Driver downloads have their own proxy setting
Selenium Manager (4.6+) downloads chromedriver and geckodriver itself. It uses a proxy set through the Proxy class (options.proxy), but not one passed as --proxy-server. If the download fails with "error sending request" behind a corporate proxy, set SE_PROXY or the proxy key in se-config.toml.
Selenium only hands the proxy settings to the browser. The browser makes the connection, so its limits are the ones that count.
| Name | Works In | Auth | Blocking Resistance | Best For | Where To Get |
|---|---|---|---|---|---|
| HTTP / HTTPS | Chrome, Edge and Firefox through --proxy-server, the Proxy class or Firefox preferences | Username and password through the BiDi auth handler; Chrome ignores user:pass inside --proxy-server | Set by the IP type (residential, ISP or datacenter) | The default for paid proxies with a username and password | Geonode residential, ISP or datacenter proxies; Geonode free list |
| SOCKS5 | Chrome and Edge with socks5://HOST:PORT; Firefox with network.proxy.socks preferences | None in Chrome and Edge: Chromium ignores SOCKS5 usernames and passwords | Same as HTTP | Proxies without a password, or IP-allowlisted SOCKS5 ports | Geonode residential or ISP proxies; Geonode free list |
| SOCKS4 | Chrome and Edge with socks4://HOST:PORT; Firefox with network.proxy.socks_version set to 4 | None: SOCKS4 has no password field | Same as HTTP | Testing scripts with free SOCKS4 proxies | Geonode free list |
Sites with bot protection look at the IP type as well as the browser. Headless Chrome on a datacenter IP fails both checks more often.
from $0.27/GB
Residential IPs pass IP-type checks on protected sites, and you can pick the country when testing a localized page.
from $1.25/IP
The IP stays fixed, so a test that signs in and runs for hours keeps one address and one session.
from $0.14/GB
Fine for your own staging servers and sites that do not block datacenter ranges.
Free
Many are slow or already offline. Use one to check that your proxy code runs, and keep real runs and logins off them.
The examples are in Python with Selenium 4. Have the proxy host and port ready, plus the username and password if the proxy is paid.
Install or update Selenium with pip install -U selenium. Selenium Manager fetches a matching chromedriver, so no PATH setup is needed.
Import the package with from selenium import webdriver.
Create the options with options = webdriver.ChromeOptions(). For Edge, use webdriver.EdgeOptions().
Add the proxy with options.add_argument("--proxy-server=http://HOST:PORT"). For SOCKS5, write socks5://HOST:PORT instead.
To skip the proxy for some hosts, add options.add_argument("--proxy-bypass-list=localhost;staging.example.com").
Or use the Proxy class: from selenium.webdriver.common.proxy import Proxy, then options.proxy = Proxy({"proxyType": "MANUAL", "httpProxy": "HOST:PORT", "sslProxy": "HOST:PORT", "noProxy": "localhost"}). Selenium Manager also downloads the driver through this proxy.
Start the browser with driver = webdriver.Chrome(options=options).
Open a page with driver.get(url) and close the browser with driver.quit() at the end.
Check detailed instructions on our blog:
Read the blog postRun driver.get("https://geonode.com/what-is-my-ip") and read the IP on the page. It should be the proxy's IP, not your own.
Open an HTTP page and an HTTPS page in the same session and compare the IPs. Both must show the proxy.
If you set a country in the username, check that the page shows that country.
Remove the --proxy-server argument, the options.proxy line or the network.proxy preferences, then start a new driver.
To skip the proxy only for some hosts, such as localhost or your staging server, list them in noProxy on the Proxy class, or in --proxy-bypass-list if you use --proxy-server.