Wie man Proxies mit SeleniumBase verwendet

Richten Sie SeleniumBase mit authentifizierten Proxys ein, um Beschränkungen zu umgehen und Ihren Web-Scraping-Erfolg zu steigern.
7 min lesen
How to Use Proxies With SeleniumBase blog image

SeleniumBase wurde als Wrapper zum Ausführen von Selenium-Instanzen in einer Testumgebung entwickelt. Dennoch ist es weit mehr als nur ein Wrapper. SeleniumBase ermöglicht es uns, Selenium mit einem authentifizierten Proxy auszuführen.

Grundlegende Proxy-Probleme mit Selenium

Selenium bietet keine gute Proxy-Unterstützung. Zwar kann man ein --proxy-server Argument an Selenium übergeben, jedoch gibt es keine Unterstützung für authentifizierte Proxys. Es kommt noch schlimmer. Jahrelang war SeleniumWire die bevorzugte Option bei der Nutzung von Proxys mit Selenium. Die Integration war unglaublich einfach. Leider wurde SeleniumWire vor über einem Jahr als veraltet eingestuft und seit über zwei Jahren nicht mehr aktualisiert.

SeleniumWire Deprecation

Erste Schritte

Um loszulegen, müssen wir SeleniumBase installieren und einen Testfall schreiben. Der Testfall steuert tatsächlich Selenium und führt unsere Webdriver-Instanz für uns aus.

Installation

pip install seleniumbase

Einen Testfall schreiben

Hier ist ein einfacher Testfall. Der folgende Code stellt eine Anfrage an die IPinfo API. Sobald wir unsere JSON-Antwort erhalten, parsen wir sie und geben ihren Inhalt in der Konsole aus.

from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json

class ProxyTest(BaseCase):
   def test_proxy(self):
        #go to the site
        self.driver.get("https://ipinfo.io/json")
      
        #load the json response
        location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)

        #iterate through the dict and print its contents
        for k,v in location_info.items():
            print(f"{k}: {v}")

Den Test ausführen

Um den Code tatsächlich auszuführen, müssen wir den Test starten. Anstatt python name_of_your_script.py zu verwenden, nutzen wir pytest.

Ohne Proxy

Wenn Sie Ihr Testskript ohne Proxy ausführen möchten, können Sie den folgenden Befehl verwenden.

pytest proxy_test.py -s

Sie erhalten eine ähnliche Antwort wie diese.

=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item                                                                                                          

proxy_test.py ip: 23.28.108.255
hostname: d28-23-255-108.dim.wideopenwest.com
city: Westland
region: Michigan
country: US
loc: 42.3242,-83.4002
org: AS12083 WideOpenWest Finance LLC
postal: 48185
timezone: America/Detroit
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 1.01s ====================================================

Proxy-Konfiguration

Um einen Proxy zu verwenden, müssen wir lediglich das Flag --proxy gefolgt von unserer Proxy-URL verwenden. Sehen Sie sich das folgende Format an.

--proxy=your_proxy_url:your_proxy_port

Kostenloser Proxy

Hier ist ein Beispiel mit einem kostenlosen Proxy. Die IP-Adresse ist 155.54.239.64 und wir kommunizieren über Port 80 damit.

--proxy=155.54.239.64:80

Authentifizierter Proxy

Authentifizierte Proxys werden auf die gleiche Weise behandelt. Bei einem authentifizierten Proxy müssen Sie lediglich Ihren Benutzernamen und Ihr Passwort in die URL einfügen.

proxy=<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_URL>:<PROXY_PORT>

Die besten authentifizierten Proxy-Typen und Anbieter

Bei der Verwendung authentifizierter Proxys mit Selenium sind die besten Optionen Residential-Proxys, Datacenter-Proxys und ISP-Proxys, die jeweils unterschiedliche Grade an Anonymität und Zuverlässigkeit bieten. Residential-Proxys bieten die höchsten Erfolgsraten, da sie echte Benutzer-IPs verwenden, was sie ideal zur Umgehung der Bot-Erkennung macht. Datacenter-Proxys sind schneller und kostengünstiger, aber leichter zu erkennen. ISP-Proxys vereinen die Vorteile beider Varianten und bieten Geschwindigkeit bei hohem Vertrauensniveau.

Empfohlene Anbieter:

  • Geo-Targeting
  • Rotierende Proxys

Für SeleniumBase-Scraping sind die Residential-Proxys von Bright Data die zuverlässigste Option, die hohe Erfolgsraten und minimale Blockierungen gewährleistet.

Ausführen mit einem Proxy

Das folgende Beispiel ist so konfiguriert, dass es mit einem unserer Proxys bei Bright Data ausgeführt wird. Achten Sie darauf, Benutzername, Zonenname und Passwort durch Ihre eigenen zu ersetzen.

pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>@brd.superproxy.io:33335 -s

Wenn wir es ausführen, erhalten wir die folgende Ausgabe. Wenn Sie genau hinsehen, werden Sie feststellen, dass sich unser Standort geändert hat.

=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item                                                                                                          

proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.lum-int.io
city: Piscataway
region: New Jersey
country: US
loc: 40.4993,-74.3990
org: AS20473 The Constant Company, LLC
postal: 08854
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.25s ====================================================

Ihren Standort steuern

Mit unseren Proxys können Sie sogar Ihren Standort wählen. Dies können Sie mit dem Flag country tun. Jedes Land verfügt über einen zweistelligen Ländercode, den Sie an den Proxy übergeben können.

pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>[email protected]:33335 -s

Wenn Sie es (Spanien) als Ländercode verwenden, werden Sie über einen Proxy in Spanien geleitet. Dies können Sie in der folgenden Ausgabe überprüfen.

=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item                                                                                                          

proxy_test.py ip: 176.119.14.158
city: Paracuellos de Jarama
region: Madrid
country: ES
loc: 40.5035,-3.5278
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28860
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.98s ====================================================

Unsere Geolokalisierungs-Dokumentation finden Sie hier.

Rotierende Proxys

Mit nur den Grundlagen von Python können Sie ein recht gutes Proxy-System erstellen. Im folgenden Code verwenden wir einen Satz von Ländercodes, diese können jedoch leicht durch tatsächliche Proxy-IPs ersetzt werden. countries enthält unsere Liste von Ländercodes. Anschließend durchlaufen wir diese und führen unseren Proxy-Test mit allen vier Ländercodes aus.

  • us: Vereinigte Staaten
  • es: Spanien
  • il: Israel
  • gb: Großbritannien
import subprocess

#list of country codes
countries = [
    "us",
    "es",
    "il",
    "gb",
]

#iterate through the countries and make a shell command for each one
for country in countries:
    command = f"pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-<YOUR-ZONE-NAME>-country-{country}:[email protected]:33335 -s"

    #run the shell command
    subprocess.run(command, shell=True)

Sie können dies als normale Python-Datei ausführen.

python rotate_proxies.py

Wenn Sie den Code ausführen, sollten Sie eine ähnliche Ausgabe wie diese erhalten.

(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item                                                                                                          

proxy_test.py ip: 164.90.142.33
city: Clifton
region: New Jersey
country: US
loc: 40.8344,-74.1377
org: AS14061 DigitalOcean, LLC
postal: 07014
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.84s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item                                                                                                          

proxy_test.py ip: 5.180.9.15
city: Madrid
region: Madrid
country: ES
loc: 40.4066,-3.6724
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28007
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.60s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item                                                                                                          

proxy_test.py ip: 64.79.233.151
city: Tel Aviv
region: Tel Aviv
country: IL
loc: 32.0809,34.7806
org: AS9009 M247 Europe SRL
timezone: Asia/Jerusalem
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 3.36s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item                                                                                                          

proxy_test.py ip: 185.37.3.107
city: London
region: England
country: GB
loc: 51.5085,-0.1257
org: AS9009 M247 Europe SRL
postal: E1W
timezone: Europe/London
readme: https://ipinfo.io/missingauth
.

==================================================== 1 passed in 2.90s ====================================================

Wie Sie sehen können, steuern wir mit nur sehr wenig Code Proxys in den USA, Spanien, Israel und Großbritannien.

Fazit

Beim Web-Scraping eröffnet SeleniumBase Möglichkeiten in Selenium, die viele Menschen für unmöglich halten. Im Laufe dieses Leitfadens haben Sie gelernt, wie Sie Proxys konfigurieren, Ihre Geolokalisierung steuern und sogar Proxys rotieren. Diese Werkzeuge helfen Ihnen, die meisten Blockierungsmechanismen zu umgehen, auf die Sie stoßen.

Schöpfen Sie das volle Potenzial von Selenium-basiertem Scraping mit den branchenführenden Proxy-Diensten von Bright Data aus. Starten Sie noch heute und erleben Sie nahtlose, zuverlässige Datenerfassung in großem Maßstab!