SeleniumBase ist ein Testrahmen um Selenium herum — und er nimmt Proxys mit Zugangsdaten entgegen. Genau daran scheitert Selenium allein, und deshalb lohnt sich der Umweg für alles, was mit Scraping zu tun hat.
Das Problem mit Proxys in Selenium
Selenium kann einen Proxy setzen, aber keine Anmeldung daran vornehmen: Chrome ignoriert Benutzername und Passwort im Argument --proxy-server und öffnet stattdessen ein Dialogfenster, das der WebDriver nicht bedienen kann. Das früher übliche Werkzeug SeleniumWire füllte diese Lücke, wird aber seit geraumer Zeit nicht mehr gepflegt und ist keine Empfehlung mehr.
Erste Schritte
Installation
pip install seleniumbaseEin Testfall
Der folgende Test ruft die JSON-Auskunft von IPinfo ab und schreibt sie auf die Konsole — damit sehen Sie sofort, welche Adresse nach außen sichtbar ist.
from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json
class ProxyTest(BaseCase):
def test_proxy(self):
# Seite aufrufen
self.driver.get("https://ipinfo.io/json")
# JSON-Antwort einlesen
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
# Inhalt ausgeben
for k, v in location_info.items():
print(f"{k}: {v}")Den Test starten
Ausgeführt wird mit pytest.
Ohne Proxy
pytest proxy_test.py -sAuf der Konsole stehen dann Ihre eigene IP und Ihr Standort.
Mit Proxy
pytest proxy_test.py --proxy=BENUTZER:PASSWORT@pr.proxynet.io:8000 -sBenutzername, Passwort, Hostname und Port stehen in Ihrem Proxynet-Panel. Die Ausgabe sieht dann etwa so aus:
=================================== test session starts ===================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
plugins: seleniumbase-4.34.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item
proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.pxnet.io
city: Piscataway
region: New Jersey
country: US
timezone: America/New_York
.
==================================== 1 passed in 3.25s ====================================Die Adresse hat gewechselt, und zwar ohne Anmeldefenster — das ist der ganze Punkt.
Proxys rotieren
Mit Bordmitteln von Python bauen Sie daraus eine einfache Rotation. Das folgende Skript ruft denselben Test einmal je Land auf:
import subprocess
USER = "BENUTZER"
PASSWORD = "PASSWORT"
# Länder, aus denen die Anfrage kommen soll
countries = ["us", "de", "gb", "tr"]
for country in countries:
# Das Zielland gehört bei Proxynet in den Benutzernamen
proxy = f"{USER}-country-{country}:{PASSWORD}@pr.proxynet.io:8000"
subprocess.run(f"pytest proxy_test.py --proxy={proxy} -s", shell=True)Die genaue Schreibweise für das Zielland steht in Ihrem Panel; sie unterscheidet sich je nach Produkt. Wie sich dasselbe innerhalb eines Skripts statt über die Kommandozeile lösen lässt, steht in unserem Beitrag Proxys in Python rotieren.
Fazit
Mit SeleniumBase läuft ein Selenium-Test über einen Proxy mit Anmeldung, prüft den sichtbaren Standort und wechselt ihn zwischen den Durchläufen — drei Dinge, die mit Selenium allein spürbar mehr Arbeit machen.
Welche unserer Proxy-Produkte sich dafür eignen:




