Skip to main content
All CollectionsSet Up, Integration, and API CommandsConfiguration Guides
Selenium with Username and Password (API Key) Authentication
Selenium with Username and Password (API Key) Authentication

How to configure your Proxyrack proxies in Selenium using your username and password (API key)

Evan avatar
Written by Evan
Updated over 6 months ago

Selenium does not allow you to use username and password (API key) authentication by default. You can use the workaround below to do this instead of IP whitelisting.

import os
import zipfile
from selenium import webdriver
PROXY_HOST = 'premium.residential.proxyrack.net' # this is for Premium Residential proxies. you can substitute the DNS of the service you are using
PROXY_PORT = 9000 # port (use "10000" for a sticky port)
PROXY_USER = 'user' # your username
PROXY_PASS = 'password' # your password (API key)
manifest_json = """
{
"version": "1.0.0",
"manifest_version": 2,
"name": "Chrome Proxy",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"<all_urls>",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
},
"minimum_chrome_version":"22.0.0"
}
"""
background_js = """
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "http",
host: "%s",
port: parseInt(%s)
},
bypassList: ["localhost"]
}
};
chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
function callbackFn(details) {
return {
authCredentials: {
username: "%s",
password: "%s"
}
};
}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: ["<all_urls>"]},
['blocking']
);
""" % (PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS)
def get_chromedriver(use_proxy=False, user_agent=None):
path = os.path.dirname(os.path.abspath(__file__))
chrome_options = webdriver.ChromeOptions()
if use_proxy:
pluginfile = 'proxy_auth_plugin.zip'
with zipfile.ZipFile(pluginfile, 'w') as zp:
zp.writestr("manifest.json", manifest_json)
zp.writestr("background.js", background_js)
chrome_options.add_extension(pluginfile)
if user_agent:
chrome_options.add_argument('--user-agent=%s' % user_agent)
driver = webdriver.Chrome(
os.path.join(path, 'chromedriver'),
chrome_options=chrome_options)
return driver
def main():
driver = get_chromedriver(use_proxy=True)
driver.get('http://api.ipify.org/?format=json') # any url you want to crawl

Did this answer your question?