Dieser Leitfaden erklärt, wie Sie SeleniumBase mit authentifizierten Proxies einrichten, um Einschränkungen zu umgehen und Ihren Web-Scraping-Erfolg zu steigern.
Selenium unterstützt keine authentifizierten Proxies. Da SeleniumWire bereits seit über einem Jahr als deprecated gilt und seit über zwei Jahren keine Updates mehr erhalten hat, besteht die Lösung darin, SeleniumBase zu verwenden. Das letztgenannte Projekt wurde ursprünglich als Wrapper konzipiert, um Selenium-Instanzen auszuführen und Web-Automatisierung & Testing mit Python durchzuführen. Für uns ermöglicht es jedoch, Selenium über einen authentifizierten Proxy auszuführen.
Beginnen Sie mit der Installation von SeleniumBase:
pip install seleniumbaseSchreiben Sie nun einen Testfall, der Selenium steuert und die webdriver-Instanz ausführt. Der folgende Code stellt eine Anfrage an die IPinfo API. Sobald das Skript die JSON-Antwort erhält, parst es die Antwort und gibt deren 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}")Führen wir den Test mit pytest statt mit python aus.
Um das Testskript ohne Proxy auszuführen, verwenden Sie den folgenden Befehl:
pytest proxy_test.py -sDie Antwort wird ähnlich wie diese aussehen:
=================================================== 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 ====================================================
Verwenden Sie das --proxy-Flag, gefolgt von der Proxy-URL. Hier ist die Vorlage:
--proxy=your_proxy_url:your_proxy_port
Das folgende Beispiel verwendet einen free proxy von Bright Data. Die IP-Adresse lautet 155.54.239.64, und wir sprechen sie über Port 80 an.
--proxy=155.54.239.64:80
Authentifizierte Proxies werden auf die gleiche Weise gehandhabt. Fügen Sie einfach Ihren Benutzernamen und Ihr Passwort in die URL ein:
proxy=<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_URL>:<PROXY_PORT>
Die besten Optionen für authentifizierte Proxies sind:
- Residential proxies: verwenden echte User-IPs, wodurch sie ideal sind, um Bot-Erkennung zu umgehen.
- Datacenter proxies: schneller und kosteneffizienter, aber leichter zu erkennen.
- ISP proxies: kombinieren die Vorteile beider Ansätze und bieten Geschwindigkeit bei hoher Vertrauenswürdigkeit.
Das folgende Beispiel ist so eingerichtet, dass es mit einem unserer Proxies bei Bright Data ausgeführt wird. Stellen Sie sicher, dass Sie den Benutzernamen, den Zonen-Namen und das Passwort durch Ihre eigenen Zugangsdaten ersetzen.
pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>@brd.superproxy.io:33335 -sBeim Ausführen erhalten Sie die folgende Ausgabe:
=================================================== 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 ====================================================
Mit den Proxies von Bright Data können Sie Ihren Standort auswählen, indem Sie das country-Flag und einen zweibuchstabigen Ländercode verwenden:
pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>-country-es@brd.superproxy.io:33335 -sWenn Sie es (Spanien) als Ländercode verwenden, werden Sie über einen Proxy in Spanien geroutet. Sie können dies in der folgenden Ausgabe verifizieren.
=================================================== 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 ====================================================
Bitte lesen Sie die Geolokalisierungsdokumentation für Details.
Der folgende Code verwendet eine Reihe von Ländercodes, diese können jedoch problemlos durch tatsächliche Proxy-IPs ersetzt werden. countries enthält die Liste der Ländercodes. Als Nächstes iterieren wir über diese und führen unseren Proxy-Test mit allen vier Ländercodes aus.
us: United Stateses: Spainil: Israelgb: Great Britain
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 reguläre Python-Datei ausführen:
python rotate_proxies.pyDie Ausgabe sollte ähnlich wie diese sein:
(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 ====================================================
SeleniumBase eröffnet viele Web-Scraping-Fähigkeiten in Selenium. Schöpfen Sie das volle Potenzial von Selenium-basiertem Scraping mit den branchenführenden Proxy-Services von Bright Data aus: industry-leading proxy services. Starten Sie noch heute Ihre kostenlose Testversion!
