So verwenden Sie Proxies mit Selenium: Complete Guide
Konfigurieren Sie GProxy proxies mit Selenium WebDriver für Browser-Automatisierung und Scraping. Deckt Chrome, Firefox, headless mode und proxy authentication ab.
Voraussetzungen
- ✓Python 3.8+ installiert
- ✓Selenium 4.x installiert (pip install selenium)
- ✓ChromeDriver oder GeckoDriver passend zu Ihrer Browser-Version
- ✓GProxy-Account mit aktivem Proxy-Plan
Schritt-für-Schritt-Einrichtung
Selenium installieren
Installieren Sie Selenium und webdriver-manager
pip install selenium webdriver-manager
Chrome mit proxy konfigurieren
Chrome WebDriver mit GProxy einrichten
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument('--proxy-server=http://proxy.gproxy.net:1000')
driver = webdriver.Chrome(options=opts)
Proxy-Authentifizierung handhaben
Für authentifizierte Proxys eine Chrome-Extension erstellen
import zipfile, json
manifest = {"version": "1.0.0", "manifest_version": 2,
"name": "Proxy Auth",
"permissions": ["proxy","webRequest","webRequestBlocking","<all_urls>"],
"background": {"scripts": ["background.js"]}}
bg_js = 'chrome.webRequest.onAuthRequired.addListener(function(d) { return {authCredentials: {username:"USER", password:"PASS"}}; }, {urls:["<all_urls>"]}, ["blocking"]);'
with zipfile.ZipFile('proxy_auth.zip','w') as zp:
zp.writestr('manifest.json', json.dumps(manifest))
zp.writestr('background.js', bg_js)
opts.add_extension('proxy_auth.zip')
Rotationslogik hinzufügen
IPs rotieren, indem neue driver-Instanzen erstellt werden
def get_driver():
opts = Options()
opts.add_argument('--headless=new')
opts.add_argument('--proxy-server=http://proxy.gproxy.net:1000')
return webdriver.Chrome(options=opts)
for url in urls:
driver = get_driver()
driver.get(url)
# ... extract data
driver.quit()
Setup testen
Überprüfen, ob der proxy funktioniert
driver.get('https://httpbin.org/ip')
print(driver.find_element('tag name', 'pre').text)
Codebeispiele
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import zipfile, json
def create_proxy_extension(proxy_host, proxy_port, proxy_user, proxy_pass):
manifest = {
"version": "1.0.0", "manifest_version": 2,
"name": "GProxy Auth",
"permissions": ["proxy", "webRequest", "webRequestBlocking", "<all_urls>"],
"background": {"scripts": ["background.js"]}
}
bg_js = f'chrome.webRequest.onAuthRequired.addListener(function(details) {{ return {{authCredentials: {{username: "{proxy_user}", password: "{proxy_pass}"}}}}; }}, {{urls: ["<all_urls>"]}}, ["blocking"]);'
ext_path = '/tmp/proxy_auth.zip'
with zipfile.ZipFile(ext_path, 'w') as zp:
zp.writestr('manifest.json', json.dumps(manifest))
zp.writestr('background.js', bg_js)
return ext_path
opts = Options()
opts.add_argument('--proxy-server=http://proxy.gproxy.net:1000')
opts.add_extension(create_proxy_extension('proxy.gproxy.net', 1000, 'USER', 'PASS'))
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=opts)
driver.get('https://httpbin.org/ip')
print(driver.find_element('tag name', 'pre').text)
driver.quit()
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_preference('network.proxy.type', 1)
opts.set_preference('network.proxy.http', 'proxy.gproxy.net')
opts.set_preference('network.proxy.http_port', 1000)
opts.set_preference('network.proxy.ssl', 'proxy.gproxy.net')
opts.set_preference('network.proxy.ssl_port', 1000)
driver = webdriver.Firefox(options=opts)
driver.get('https://httpbin.org/ip')
print(driver.page_source)
driver.quit()
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from concurrent.futures import ThreadPoolExecutor
def scrape_with_proxy(url):
opts = Options()
opts.add_argument('--headless=new')
opts.add_argument('--proxy-server=http://proxy.gproxy.net:1000')
opts.add_argument('--no-sandbox')
driver = webdriver.Chrome(options=opts)
try:
driver.set_page_load_timeout(30)
driver.get(url)
return driver.page_source
finally:
driver.quit()
urls = ['https://example.com/page1', 'https://example.com/page2']
with ThreadPoolExecutor(max_workers=4) as pool:
results = list(pool.map(scrape_with_proxy, urls))
Warum Proxies mit Selenium verwenden?
Selenium automatisiert echte Browser und ist daher ideal für das Scraping von JavaScript-lastigen Websites. Das Ausführen automatisierter Browser von einer einzigen IP aus löst jedoch schnell Anti-Bot-Systeme aus. Die über 10M+ residential IPs von GProxy ermöglichen es Ihnen, die Exit-IP Ihres Browsers zu rotieren, sodass jede Sitzung wie ein einzigere Besucher aus einem von über 150+ Ländern erscheint.
Chrome WebDriver Proxy Setup
Chrome unterstützt die Proxy-Konfiguration über ChromeOptions-Argumente. Für einfache Proxy-Setups ohne Authentifizierung übergeben Sie das Argument --proxy-server. Für authentifizierte Proxies wie GProxy benötigen Sie eine Chrome-Erweiterung, die die Proxy-Authentifizierung übernimmt, da Chrome nativ kein username:password in der Proxy-URL unterstützt.
Firefox WebDriver Proxy Setup
Firefox verwaltet die Proxy-Konfiguration über die FirefoxProfile- oder Options-Einstellungen. Im Gegensatz zu Chrome unterstützt Firefox die Proxy-Authentifizierung über die Profileinstellungen, was die Konfiguration mit den authentifizierten Endpunkten von GProxy etwas einfacher macht.
Headless Mode Überlegungen
Das Ausführen von Selenium im headless Mode ist für Server-Bereitstellungen üblich. Sowohl Chrome als auch Firefox unterstützen den headless Betrieb mit Proxies. Beachten Sie, dass einige Anti-Bot-Systeme headless Browser erkennen – die residential IPs von GProxy helfen hierbei, aber ziehen Sie auch die Verwendung von undetected-chromedriver oder das Hinzufügen realistischer Browser-Fingerprints in Betracht.
Proxy-Rotationsstrategie
Im Gegensatz zu HTTP-Bibliotheken behält Selenium eine Browser-Sitzung bei, sodass Sie Proxies nicht einfach pro Request rotieren können. Rotieren Sie stattdessen pro Sitzung: Erstellen Sie für jede Aufgabe eine neue WebDriver-Instanz mit einem anderen Proxy. Der Backconnect-Endpunkt von GProxy vereinfacht dies – jede neue Verbindung erhält automatisch eine frische IP.
Performance-Tipps
Browser-Automatisierung ist ressourcenintensiv. Um den Durchsatz zu maximieren: Verwenden Sie den headless Mode, deaktivieren Sie das Laden von Bildern und CSS, wenn diese nicht benötigt werden, setzen Sie Timeouts für das Laden von Seiten und führen Sie mehrere Browser-Instanzen parallel mit verschiedenen GProxy-Endpunkten für IP-Diversität aus.
Anwendungsfälle
JavaScript-Heavy Scraping
Scrapen Sie SPAs und dynamische Websites, die ein vollständiges Browser-Rendering erfordern.
Form Automation
Automatisieren Sie Formularübermittlungen und mehrstufige Workflows über proxied Browser.
Visual Testing
Erstellen Sie Screenshots von verschiedenen Geo-Standorten unter Verwendung gezielter Residential Proxies.
Account Management
Verwalten Sie mehrere Konten mit eindeutigen IPs pro Sitzung für sichere Automatisierung.
FAQ
Funktioniert Selenium mit SOCKS5 Proxies? +
Kann ich Proxies während einer Sitzung rotieren? +
Wie vermeide ich die Erkennung mit Selenium? +
Ist Selenium langsamer als requests? +
Bereit loszulegen?
Starten Sie mit GProxy in Minuten — Residential-Proxies ab $0,85/GB, IPv6 ab $0,03/Proxy, nutzungsbasierte Abrechnung.
