Proxy mit SeleniumBase: Anmeldung und Rotation

Veröffentlicht:

2 Min. Lesezeit

Acar Diveroli
Autor: Acar Diveroli
Proxy mit SeleniumBase verwenden

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

bash
pip install seleniumbase

Ein 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.

python
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

bash
pytest proxy_test.py -s

Auf der Konsole stehen dann Ihre eigene IP und Ihr Standort.

Mit Proxy

bash
pytest proxy_test.py --proxy=BENUTZER:PASSWORT@pr.proxynet.io:8000 -s

Benutzername, 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:

python
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:

ChatGPT fragenClaude fragen