Am Ende dieses Laravel-Proxy-Integrationsleitfadens werden Sie Folgendes verstehen:
- Was Proxys sind und wie sie in Laravel funktionieren
- Wann und warum Sie sie benötigen könnten
- Wie Sie einen Proxy in Ihrem Laravel-Projekt einrichten
- Wie Sie Proxy-Authentifizierung, SSL-Zertifikatsprobleme und IP-Rotation in Laravel behandeln
- Wie Sie einen Proxy in Symfonys
HttpClient-Komponente integrieren
Legen wir los!
Was ist ein Laravel-Proxy?
Ein Laravel-Proxy fungiert als Vermittler zwischen Ihrem Laravel-Backend und einem externen Server. Er ermöglicht es Ihnen, den Traffic Ihres Servers programmatisch über einen Proxy-Server zu leiten, um Ihre IP-Adresse zu verbergen.
Nachfolgend sehen Sie, wie ein Proxy in Laravel funktioniert:
- Laravel sendet eine HTTP-Anfrage über eine HTTP-Client-Bibliothek mit konfiguriertem Proxy.
- Die Anfrage läuft über den Proxy-Server.
- Der Proxy leitet sie an den Zielserver weiter.
- Der Zielserver antwortet an den Proxy.
- Der Proxy gibt die Antwort dann an Laravel zurück.
Dadurch sieht der Zielserver die Anfrage als von der IP des Proxys kommend – nicht von Ihrem Laravel-Server. Dieser Mechanismus hilft, geografische Beschränkungen zu umgehen, die Anonymität zu verbessern und Ratenlimits zu verwalten.
Anwendungsfälle für Proxys in Laravel
Proxys in Laravel sind in vielen Szenarien nützlich, aber diese drei sind die häufigsten:
- Web-Scraping: Verwenden Sie Proxys, um IP-Sperren, Ratenlimits oder andere Blockierungen beim Erstellen einer Web-Scraping-API zu vermeiden. Lesen Sie dazu unser Tutorial zu Web-Scraping mit Laravel.
- Umgehung von Ratenlimits bei APIs von Drittanbietern: Rotieren Sie Proxy-IPs, um innerhalb der API-Nutzungskontingente zu bleiben und Drosselungen zu vermeiden.
- Zugriff auf geografisch eingeschränkte Inhalte: Wählen Sie Proxy-Server in bestimmten Regionen, um auf Dienste zuzugreifen, die nur in bestimmten Ländern verfügbar sind.
Weitere Beispiele finden Sie in unserem Leitfaden zu Web-Daten- und Proxy-Anwendungsfällen.
Proxy in Laravel verwenden: Schritt-für-Schritt-Anleitung
In diesem Abschnitt zeigen wir Ihnen, wie Sie einen Proxy in Laravel mit dem Standard-HTTP-Client integrieren. Wenn Sie ein Symfony HttpClient-Nutzer sind, keine Sorge – wir behandeln die Proxy-Integration mit dieser Bibliothek später im Artikel.
Hinweis: Laravels HTTP-Client basiert auf Guzzle, daher sollten Sie sich unseren Guzzle-Proxy-Integrationsleitfaden ansehen.
Um die Integration zu demonstrieren, erstellen wir einen GET /api/v1/get-ip-Endpunkt, der:
- Eine
GET-Anfrage anhttps://httpbin.io/ipüber den konfigurierten Proxy sendet. - Die ausgehende IP-Adresse aus der Antwort abruft.
- Diese IP an den Client zurückgibt, der den Laravel-Endpunkt aufruft.
Wenn alles korrekt eingerichtet ist, stimmt die von dieser API zurückgegebene IP mit der IP des Proxys überein.
Legen wir los!
Schritt 1: Projekteinrichtung
Wenn Sie bereits eine Laravel-Anwendung eingerichtet haben, können Sie diesen Schritt überspringen und zu Schritt 2 übergehen.
Andernfalls folgen Sie den nachstehenden Anweisungen, um ein neues Laravel-Projekt zu erstellen. Öffnen Sie Ihr Terminal und führen Sie den folgenden Composer-Befehl create-command aus, um ein neues Laravel-Projekt zu initialisieren:
composer create-project laravel/laravel laravel-proxies-application
Dieser Befehl generiert ein neues Laravel-Projekt in einem Ordner namens laravel-proxies-application. Öffnen Sie diesen Ordner in Ihrer bevorzugten PHP-IDE.
Zu diesem Zeitpunkt sollte der obige Ordner die Standard-Laravel-Dateistruktur enthalten:

Wunderbar! Sie haben jetzt ein Laravel-Projekt eingerichtet.
Schritt 2: Den Test-API-Endpunkt definieren
Führen Sie im Projektverzeichnis den folgenden Artisan-Befehl aus, um einen neuen Controller zu generieren:
php artisan make:controller IPController
Dadurch wird eine Datei namens IPController.php im Verzeichnis /app/Http/Controllers mit folgendem Standardinhalt erstellt:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class IPController extends Controller
{
//
}
Fügen Sie nun die Methode getIP() unten zu IPController.php hinzu:
public function getIP(): JsonResponse
{
// make a GET request to the "/ip" endpoint to get the IP of the server
$response = Http::get('https://httpbin.io/ip');
// retrieve the response data
$responseData = $response->json();
// return the response data
return response()->json($responseData);
}
Diese Methode verwendet Laravels Http-Client, um Ihre IP-Adresse von https://httpbin.io/ip abzurufen und als JSON zurückzugeben.
Vergessen Sie nicht, diese beiden Imports hinzuzufügen:
use IlluminateHttpJsonResponse;
use IlluminateSupportFacadesHttp;
Da Ihre Laravel-Anwendung zustandslose APIs anbieten soll, aktivieren Sie das API-Routing mit dem Artisan-Befehl install:api:
php artisan install:api
Um diese Methode über einen API-Endpunkt verfügbar zu machen, fügen Sie die folgende Route zur Datei routes/api.php hinzu:
use AppHttpControllersIPController;
Route::get('/v1/get-ip', [IPController::class, 'getIP']);
Ihr neuer API-Endpunkt wird unter folgender Adresse erreichbar sein:
/api/v1/get-ip
Hinweis: Beachten Sie, dass jede Laravel-API standardmäßig unter dem Pfad /api verfügbar ist.
Zeit, den Endpunkt /api/v1/get-ip zu testen!
Starten Sie den Laravel-Entwicklungsserver mit:
php artisan serve
Ihr Server sollte nun lokal auf Port 8000 lauschen.
Senden Sie eine GET-Anfrage an den Endpunkt /api/v1/get-ip mit cURL:
curl -X GET 'http://localhost:8000/api/v1/get-ip'
Hinweis: Unter Windows ersetzen Sie curl durch curl.exe. Erfahren Sie mehr in unserem Leitfaden zum Senden von GET-Anfragen mit cURL.
Sie sollten eine Antwort ähnlich dieser erhalten:
{
"origin": "45.89.222.18"
}
Die obige Antwort ist genau dieselbe wie die vom /ip-Endpunkt von HttpBin, was bestätigt, dass Ihre Laravel-API einwandfrei funktioniert. Insbesondere zeigt die angezeigte IP-Adresse die öffentliche IP Ihres Rechners. Als Nächstes integrieren wir einen Proxy, um diese IP zu verbergen!
Schritt 3: Einen Proxy abrufen
Um einen Proxy in Ihrer Laravel-Anwendung zu verwenden, benötigen Sie zunächst Zugriff auf einen funktionierenden Proxy-Server.
Obwohl viele Websites kostenlose Proxy-URLs anbieten, ist Vorsicht geboten – die Aufrechterhaltung einer Proxy-Infrastruktur ist kostspielig. Wenn ein Dienst Proxys kostenlos anbietet, fragen Sie sich, wie dieser finanziert wird. Oft steckt dahinter eine fragwürdige Praxis wie Datensammlung oder Traffic-Umleitung.
Hinweis: Kostenlose Proxys sollten ausschließlich zu Test- oder Bildungszwecken verwendet werden – niemals in Produktionsumgebungen.
Wenn Sie zuverlässige Proxys benötigen, wenden Sie sich an renommierte Anbieter, die kostenlose Testversionen oder begrenzte kostenlose Pläne anbieten.
Eine typische Proxy-URL sieht so aus:
<protocol>://<host>:<port>
Wobei:
protocoldas Protokoll ist, das für die Verbindung zum Proxy-Server erforderlich ist (z. B.http,https,socks5)hostdie IP-Adresse oder Domain des Proxy-Servers istportder Port ist, der zum Routen des Traffics verwendet wird
Nehmen wir in diesem Beispiel an, dass Ihre Proxy-URL lautet:
http://66.29.154.103:3128
Speichern Sie diese in einer Variable innerhalb der Methode getIP():
$proxyUrl = 'http://66.29.154.103:3128';
Zeit zu sehen, wie man einen Proxy mit Http in Laravel verwendet!
Schritt 4: Den Proxy in Http integrieren
Die Integration eines Proxys in Laravel mit dem Http-Client erfordert nur eine geringe zusätzliche Konfiguration:
$proxyUrl = 'http://66.29.154.103:3128';
$response = Http::withOptions([
'proxy' => $proxyUrl
])->get('https://httpbin.io/ip');
$responseData = $response->json();
Wie Sie sehen, müssen Sie lediglich die Proxy-URL als Option mit der Methode withOptions() übergeben. Dies weist Laravels HTTP-Client an, die Anfrage über den angegebenen Proxy-Server zu leiten, mithilfe der Guzzle-Option proxy.
Ausgezeichnet! Laravel-Proxy-Integration abgeschlossen.
Schritt 5: Alles zusammenfügen
Ihre finale Laravel-API-Logik mit Proxy-Integration sollte nun so aussehen:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateHttpJsonResponse;
use IlluminateSupportFacadesHttp;
class IPController extends Controller
{
public function getIP(): JsonResponse
{
// the URL of the proxy server
$proxyUrl = 'http://66.29.154.103:3128'; // replace with your proxy URL
// make a GET request to /ip endpoint through the proxy server
$response = Http::withOptions([
'proxy' => $proxyUrl
])->get('https://httpbin.io/ip');
// retrieve the response data
$responseData = $response->json();
// return the response data
return response()->json($responseData);
}
}
Testen Sie es, indem Sie Laravel lokal ausführen:
php artisan serve
Und verbinden Sie sich erneut mit dem Endpunkt /api/v1/get-ip:
curl -X GET 'http://localhost:8000/api/v1/get-ip'
Diesmal sollte die Ausgabe etwa so aussehen:
{
"origin": "66.29.154.103"
}
Das Feld "origin" zeigt die IP-Adresse des Proxy-Servers, was bestätigt, dass Ihre tatsächliche IP nun hinter dem Proxy verborgen ist.
Warnung: Kostenlose Proxy-Server sind oft instabil oder kurzlebig. Bis Sie dies ausprobieren, funktioniert der Beispiel-Proxy möglicherweise nicht mehr. Ersetzen Sie bei Bedarf $proxyUrl vor dem Testen durch einen aktuell aktiven Proxy.
Hinweis: Wenn bei der Anfrage SSL-Fehler auftreten, lesen Sie die Tipps zur Fehlerbehebung im Abschnitt über fortgeschrittene Anwendungsfälle unten.
Fortgeschrittene Anwendungsfälle
Sie haben gerade die Grundlagen der Proxy-Integration mit Laravel gelernt, aber es gibt weitere fortgeschrittene Szenarien zu berücksichtigen.
Proxy-Authentifizierung
Premium-Proxys erfordern oft eine Authentifizierung, damit nur autorisierte Benutzer darauf zugreifen können. Wenn Sie in diesem Fall nicht die richtigen Zugangsdaten angeben, erhalten Sie diesen Fehler:
cURL error 56: CONNECT tunnel failed, response 407
Die URL eines authentifizierten Proxys folgt normalerweise diesem Format:
<protocol>://<username>:<password>@<host>:<port>
Wobei username und password Ihre Authentifizierungsdaten sind.
Laravels Http-Klasse (die intern auf Guzzle basiert) unterstützt authentifizierte Proxys vollständig. Sie müssen also nicht viel ändern. Fügen Sie einfach die Authentifizierungsdaten direkt in die Proxy-URL ein:
$proxyUrl = '<protocol>://<username>:<password>@<host>:<port>';
Zum Beispiel:
// authenticated proxy with username and password
$proxyUrl = 'http://<username>:<password>@<host>:<port>';
$response = Http::withOptions([
'proxy' => $proxyUrl
])->get('https://httpbin.io/ip');
Ersetzen Sie den Wert von $proxyUrl durch eine gültige authentifizierte Proxy-URL.
Http leitet den Traffic nun an den konfigurierten authentifizierten Proxy-Server weiter!
SSL-Zertifikatsprobleme vermeiden
Beim Einrichten eines Proxys mit Laravels Http-Client können Ihre Anfragen aufgrund von SSL-Zertifikatsverifizierungsfehlern wie diesem fehlschlagen:
cURL error 60: SSL certificate problem: self-signed certificate in certificate chain
Dies tritt normalerweise auf, wenn der Proxy-Server ein selbstsigniertes SSL-Zertifikat verwendet.
Wenn Sie dem Proxy-Server vertrauen und nur lokal oder in einer sicheren Umgebung testen, können Sie die SSL-Verifizierung so deaktivieren:
$response = Http::withOptions([
'proxy' => $proxyUrl,
'verify' => false, // disable SSL certificate verification
])->get('https://httpbin.io/ip');
Warnung: Das Deaktivieren der SSL-Verifizierung setzt Sie Man-in-the-Middle-Angriffen aus. Verwenden Sie diese Option daher nur in vertrauenswürdigen Umgebungen.
Andernfalls, wenn Sie die Zertifikatsdatei des Proxy-Servers haben (z. B. proxy-ca.crt), können Sie diese für die SSL-Verifizierung wie folgt verwenden:
$response = Http::withOptions([
'proxy' => $proxyUrl,
'verify' => storage_path('certs/proxy-ca.crt'), // Path to the CA bundle
])->get('https://httpbin.io/ip');
Stellen Sie sicher, dass die Datei proxy-ca.crt in einem sicheren und zugänglichen Verzeichnis gespeichert ist (z. B. storage/certs/) und Laravel über die Berechtigung zum Lesen verfügt.
Mit einer der beiden Methoden sollte der durch den Proxy verursachte SSL-Verifizierungsfehler verschwinden.
Proxy-Rotation
Wenn Sie immer wieder denselben Proxy-Server verwenden, wird die Zielwebsite wahrscheinlich irgendwann die IP-Adresse dieses Proxys erkennen und blockieren. Um dies zu vermeiden, können Sie Ihre Proxy-Server rotieren – für jede Anfrage einen anderen verwenden.
Dies sind die Schritte, um Proxys in Laravel zu rotieren:
- Erstellen Sie ein Array mit mehreren Proxy-URLs
- Wählen Sie vor jeder Anfrage zufällig eine aus
- Legen Sie den ausgewählten Proxy in der HTTP-Client-Konfiguration fest
Implementieren Sie dies mit diesem Code:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateHttpJsonResponse;
use IlluminateSupportFacadesHttp;
function getRandomProxyUrl(): string
{
// a list of valid proxy URLs (replace with your proxy URLs)
$proxies = [
'<protocol_1>://<proxy_host_1>:<port_1>',
// ...
'<protocol_n>://<proxy_host_n>:<port_n>',
];
// return a proxy URL randomly picked from the list
return $proxies[array_rand($proxies)];
}
class IPController extends Controller
{
public function getIP(): JsonResponse
{
// the URL of the proxy server
$proxyUrl = getRandomProxyUrl();
// make a GET request to /ip endpoint through the proxy server
$response = Http::withOptions([
'proxy' => $proxyUrl
])->get('https://httpbin.io/ip');
// retrieve the response data
$responseData = $response->json();
// return the response data
return response()->json($responseData);
}
}
Der obige Codeausschnitt zeigt, wie man zufällig einen Proxy aus einer Liste auswählt, um Proxy-Rotation zu simulieren. Obwohl dieser Ansatz funktioniert, hat er einige Nachteile:
- Sie müssen einen Pool zuverlässiger Proxy-Server pflegen, was oft mit Kosten verbunden ist.
- Für eine effektive Rotation muss der Proxy-Pool groß genug sein. Ohne einen großen Pool werden dieselben Proxys wiederholt verwendet, was zu Erkennung und Blockierung führen kann.
Um diese Einschränkungen zu umgehen, sollten Sie das rotierende Proxy-Netzwerk von Bright Data nutzen. Diese Infrastruktur rotiert IP-Adressen automatisch für Sie und bietet Ihnen Zugriff auf:
- Über 1500 Mio. IPs in 195 Ländern
- Hohe Verfügbarkeit und eine Erfolgsquote von 99,9 %
Im nächsten Abschnitt zeigen wir Ihnen, wie Sie die rotierenden Proxys von Bright Data mit Laravel verwenden.
Einen Bright-Data-Proxy in Laravel verwenden
Bright Data betreibt eines der größten Proxy-Netzwerke der Welt und unterstützt Fortune-500-Unternehmen und 50,000+ Kunden. Ihr Proxy-Netzwerk umfasst:
- Datacenter-Proxys – 1,300,000+ Datacenter-IPs.
- Residential-Proxys – 400M+ Residential-IPs in mehr als 195 Ländern.
- ISP-Proxys – 1,300,000+ ISP-IPs.
Folgen Sie den nachstehenden Schritten, um die Residential-Proxys von Bright Data mit Laravel zu verwenden.
Wenn Sie noch kein Konto haben, melden Sie sich bei Bright Data an. Wenn Sie bereits eines haben, melden Sie sich an, um auf Ihr Benutzer-Dashboard zuzugreifen:

Nach der Anmeldung klicken Sie auf die Schaltfläche “Get proxy products”, um fortzufahren:

Sie werden zur Seite “Proxies & Scraping Infrastructure” weitergeleitet:

Suchen Sie in der Tabelle die Zeile “Residential” und klicken Sie darauf:

Sie werden zur Residential-Proxy-Seite weitergeleitet:

Wenn dies Ihr erstes Mal ist, folgen Sie dem Assistenten, um den Proxy-Dienst nach Ihren Bedürfnissen zu konfigurieren. Bei weiteren Fragen wenden Sie sich gerne an den 24/7-Support.
Im Tab “Overview” finden Sie Host, Port, Benutzername und Passwort Ihres Proxys:

Verwenden Sie diese Angaben, um Ihre Proxy-URL zu erstellen:
$proxyUrl = 'http://<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>';
Ersetzen Sie die Platzhalter (<brightdata_proxy_username>, <brightdata_proxy_password>, <brightdata_proxy_host>, <brightdata_proxy_port>) durch Ihre tatsächlichen Proxy-Zugangsdaten.
Stellen Sie sicher, dass Sie die Einstellung “Off” umschalten, um das Proxy-Produkt zu aktivieren, und befolgen Sie die restlichen Anweisungen, um die Einrichtung abzuschließen:

Mit eingerichteter Proxy-URL können Sie diese nun mit dem Http-Client in Laravel integrieren. Hier die Logik, um eine Anfrage über den rotierenden Bright-Data-Residential-Proxy in Laravel zu senden:
public function getIp()
{
// TODO: replace the placeholders with your Bright Data's proxy info
$proxyUrl = 'http://<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>';
// make a GET request to "/ip" through the proxy
$response = Http::withOptions([
'proxy' => $proxyUrl,
])->get('https://httpbin.org/ip');
// get the response data
$responseData = $response->json();
return response()->json($responseData);
}
Jedes Mal, wenn Sie das obige Skript ausführen, sehen Sie eine andere ausgehende IP.
Laravel-Proxy-Rotation war noch nie so einfach wie mit den automatisch rotierenden Proxys von Bright Data!
[Extra] Proxy-Integration von Symfonys HttpClient
Angenommen, Sie bevorzugen die HttpClient-Komponente von Symfony gegenüber Laravels Standard-HTTP-Client Http.
Folgen Sie den nachstehenden Anweisungen, um die Proxy-Integration in HttpClient mit Laravel zu implementieren.
Zunächst müssen Sie das Symfony-HTTP-Client-Paket über Composer installieren:
composer require symfony/http-client
Als Nächstes können Sie Symfonys HttpClient mit einem Proxy wie folgt verwenden:
<?php
namespace AppHttpControllers;
use SymfonyContractsHttpClientHttpClientInterface;
use IlluminateHttpJsonResponse;
class IpController extends Controller
{
// where to store the HttpClient instance
private $client;
public function __construct(HttpClientInterface $client)
{
// initialize the HttpClient private instance
$this->client = $client;
}
public function getIp(): JsonResponse
{
// your proxy URL
$proxyUrl = 'http://66.29.154.103:3128'; // replace with your proxy URL
// make a GET request to the "/ip" endpoint through the proxy
$response = $this->client->request('GET', 'https://httpbin.io/ip', [
'proxy' => $proxyUrl,
]);
// parse the response JSON and return it
$responseData = $response->toArray();
return response()->json($responseData);
}
}
Mit diesem Setup können Sie Symfonys HttpClient verwenden, um Anfragen über einen Proxy zu senden.
Fazit
In diesem Proxy-Integrationstutorial haben Sie erfahren, warum Proxys wichtig sind und wie man sie in Laravel verwendet. Wir haben behandelt, wie Sie Proxys in Laravel sowohl mit Laravels Standard-HTTP-Client als auch mit Symfonys HttpClient einfach konfigurieren können.
Sie haben auch gesehen, warum kostenlose Proxy-Dienste unzuverlässig und sogar riskant sein können. Für stabile Leistung, Sicherheit und Skalierbarkeit müssen Sie einen vertrauenswürdigen Proxy-Anbieter wählen. Sparen Sie Zeit und Energie und gehen Sie direkt zum besten Proxy-Anbieter auf dem Markt, Bright Data.
Erstellen Sie ein Konto und testen Sie unsere Proxys noch heute!