Wie man Proxies in Laravel verwendet: 2025 Tutorial

Beherrschen Sie die Proxy-Nutzung in Laravel, von der einfachen Konfiguration bis zur Authentifizierung und IP-Rotation, um blockierungsfreies Web-Scraping und geografischen Zugang zu gewährleisten.
3 min lesen
Laravel Proxies blog image

Am Ende dieses Leitfadens zur Laravel-Proxy-Integration werden Sie alles verstanden haben:

  • Was Proxies sind und wie sie in Laravel funktionieren
  • Wann und warum Sie sie brauchen könnten
  • Wie Sie einen Proxy in Ihrem Laravel-Projekt einrichten
  • Umgang mit Proxy-Authentifizierung, SSL-Zertifikatsproblemen und IP-Rotation in Laravel
  • So integrieren Sie einen Proxy in die HttpClient-Komponente von Symfony

Lasst uns eintauchen!

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 Datenverkehr Ihres Servers programmatisch über einen Proxy-Server zu leiten, um Ihre IP-Adresse zu verbergen.

Im Folgenden wird beschrieben, wie ein Proxy in Laravel funktioniert:

  1. Laravel sendet eine HTTP-Anfrage unter Verwendung einer HTTP-Client-Bibliothek mit einem konfigurierten Proxy.
  2. Die Anfrage läuft über den Proxyserver.
  3. Der Proxy leitet sie an den Zielserver weiter.
  4. Der Zielserver antwortet dem Proxy.
  5. Der Proxy gibt dann die Antwort an Laravel zurück.

Dadurch sieht der Zielserver, dass die Anfrage von der IP des Proxys kommt – und nicht von der Ihres Laravel-Servers. Dieser Mechanismus hilft, geografische Beschränkungen zu umgehen, die Anonymität zu verbessern und Ratenbeschränkungen zu verwalten.

Anwendungsfälle für Proxies in Laravel

Proxies in Laravel sind in vielen Szenarien nützlich, aber diese drei sind die häufigsten:

  • Web-Scraping: Verwenden Sie Proxys, um IP-Sperren, Ratenbeschränkungen oder andere Sperren beim Aufbau einer Web-Scraping-API zu vermeiden. Weitere Informationen finden Sie in unserem Tutorial über Web Scraping mit Laravel.
  • Umgehung von Ratenbeschränkungen für APIs von Drittanbietern: Rotieren Sie Proxy-IPs, um die API-Nutzungsquoten einzuhalten und Drosselungen zu vermeiden.
  • Zugriff auf geografisch eingeschränkte Inhalte: Wählen Sie Proxyserver in bestimmten Regionen, um auf Dienste zuzugreifen, die nur in bestimmten Ländern verfügbar sind.

Weitere Beispiele finden Sie in unserem Leitfaden zu Webdaten und Proxy-Anwendungsfällen.

Verwendung eines Proxys in Laravel: Schritt-für-Schritt-Anleitung

In diesem Abschnitt zeigen wir, wie man einen Proxy in Laravel integriert, indem man den Standard-HTTP-Client verwendet. Wenn Sie ein Benutzer von Symfony HttpClient sind, machen Sie sich keine Sorgen – wir werden die Proxy-Integration mit dieser Bibliothek später in diesem Artikel behandeln.

Hinweis: Der HTTP-Client von Laravel basiert auf Guzzle, daher sollten Sie sich unsere Anleitung zur Integration des Guzzle-Proxys ansehen.

Um die Integration zu demonstrieren, erstellen wir einen GET /api/v1/get-ip Endpunkt, der:

  1. Sendet eine GET-Anfrage an https://httpbin.io/ip unter Verwendung des konfigurierten Proxys.
  2. Ruft die IP-Adresse des Ausgangs aus der Antwort ab.
  3. Gibt diese IP an den Client zurück, der den Laravel-Endpunkt aufruft.

Wenn alles richtig eingerichtet ist, stimmt die von dieser API zurückgegebene IP mit der IP des Proxys überein.

Fangen wir an!

Schritt 1: Projekt einrichten

Wenn Sie bereits eine Laravel-Anwendung eingerichtet haben, können Sie diesen Schritt überspringen und mit Schritt Nr. 2 fortfahren.

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

Mit diesem Befehl wird ein neues Laravel-Projekt in einem Ordner namens laravel-proxies-application erstellt. Öffnen Sie diesen Ordner in Ihrer bevorzugten PHP-IDE.

Zu diesem Zeitpunkt sollte der obige Ordner die Standard-Laravel-Dateistruktur enthalten:

Die Struktur des Laravel-Projekts

Wunderbar! Sie haben jetzt ein Laravel-Projekt eingerichtet.

Schritt Nr. 2: Definieren Sie den Test-API-Endpunkt

Führen Sie im Projektverzeichnis den folgenden Artisan-Befehl aus, um einen neuen Controller zu erstellen:

php artisan make:controller IPController

Dadurch wird eine Datei namens IPController.php im Verzeichnis /app/Http/Controllers mit diesem Standardinhalt erstellt:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class IPController extends Controller
{
    //
}

Fügen Sie nun die folgende getIP() -Methode in IPController.php ein:

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 den Http-Client von Laravel, um Ihre IP-Adresse von https://httpbin.io/ip abzurufen, und gibt sie als JSON zurück.

Vergessen Sie nicht, diese beiden Importe zu importieren:

use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Http;

Da Ihre Laravel-Anwendung zustandslose APIs anbieten soll, aktivieren Sie das API-Routing mit dem Befehl install:api Artisan:

php artisan install:api

Um diese Methode über einen API-Endpunkt bereitzustellen, fügen Sie die folgende Route in die Datei routes/api.php ein:

use App\Http\Controllers\IPController;

Route::get('/v1/get-ip', [IPController::class, 'getIP']);

Ihr neuer API-Endpunkt wird unter folgender Adresse zugänglich 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, indem Sie ihn ausführen:

php artisan serve

Ihr Server sollte jetzt lokal auf Port 8000 hören.

Stellen 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 unserer Anleitung zum Senden von GET-Anfragen mit cURL.

Sie sollten eine Antwort ähnlich der folgenden erhalten:

{
  "origin": "45.89.222.18"
}

Die obige Antwort ist genau die gleiche, die vom /ip-Endpunkt von HttpBin erzeugt wird, was bestätigt, dass Ihre Laravel-API perfekt funktioniert. Insbesondere ist die angezeigte IP-Adresse die öffentliche IP Ihres Rechners. Als Nächstes müssen wir einen Proxy integrieren, um diese IP zu maskieren!

Schritt #3: Abrufen eines Proxys

Um einen Proxy in Ihrer Laravel-Anwendung zu verwenden, benötigen Sie zunächst Zugriff auf einen funktionierenden Proxy-Server.

Zwar bieten viele Websites kostenlose Proxy-URLs an, doch ist hier Vorsicht geboten – die Unterhaltung der Proxy-Infrastruktur ist kostspielig. Wenn ein Dienst kostenlose Proxys anbietet, sollten Sie sich fragen, wie er dies finanziert. Oft handelt es sich um fragwürdige Praktiken wie das Sammeln von Daten oder die Umleitung von Datenverkehr.

Hinweis: Kostenlose Proxys sollten ausschließlich zu Test- oder Schulungszwecken verwendet werden – niemals in Produktionsumgebungen.

Wenn Sie zuverlässige Proxys benötigen, sollten Sie sich für seriöse Anbieter entscheiden, die kostenlose Testversionen oder begrenzte kostenlose Tarife anbieten. Sie können zum Beispiel unsere kostenlosen Proxys ausprobieren.

Eine typische Proxy-URL sieht folgendermaßen aus:

<protocol>://<host>:<port>

Wo:

  • Protokoll ist das Protokoll, das für die Verbindung mit dem Proxyserver erforderlich ist (z. B. http, https, socks5)
  • host ist die IP-Adresse oder Domäne des Proxy-Servers
  • Port ist der für die Weiterleitung des Datenverkehrs verwendete Port

In diesem Beispiel nehmen wir an, dass Ihre Proxy-URL lautet:

http://66.29.154.103:3128

Speichern Sie diese in einer Variablen innerhalb der Methode getIP():

$proxyUrl = 'http://66.29.154.103:3128';

Zeit zu sehen, wie man einen Proxy mit Http in Laravel verwenden!

Schritt 4: Integrieren Sie den Proxy in Http

Die Integration eines Proxys in Laravel unter Verwendung des Http-Clients 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 können, müssen Sie nur die Proxy-URL als Option mit der Methode withOptions() übergeben. Dadurch wird der HTTP-Client von Laravel angewiesen, die Anfrage unter Verwendung der Proxy-Option von Guzzle über den angegebenen Proxy-Server zu leiten.

Erstaunlich! Laravel-Proxy-Integration abgeschlossen.

Schritt #5: Alles zusammenfügen

Ihre endgültige Laravel-API-Logik mit Proxy-Integration sollte nun wie folgt aussehen:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Http;

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 stellen Sie erneut eine Verbindung zum Endpunkt /api/v1/get-ip her:

curl -X GET 'http://localhost:8000/api/v1/get-ip' 

Diesmal sollte die Ausgabe in etwa so aussehen:

{
  "origin": "66.29.154.103"
}

Das Feld "Herkunft" zeigt die IP-Adresse des Proxy-Servers an und bestätigt, dass Ihre tatsächliche IP-Adresse nun hinter dem Proxy verborgen ist.

Warnung: Kostenlose Proxyserver sind oft instabil oder kurzlebig. Zu dem Zeitpunkt, an dem Sie dies ausprobieren, funktioniert der Beispiel-Proxy möglicherweise nicht mehr. Ersetzen Sie bei Bedarf die $proxyUrl durch eine derzeit aktive, bevor Sie testen.

Hinweis: Wenn bei der Anfrage SSL-Fehler auftreten, lesen Sie die Tipps zur Fehlerbehebung im Abschnitt “Erweiterte Anwendungsfälle” weiter unten.

Fortgeschrittene Anwendungsfälle

Sie haben soeben die Grundlagen der Proxy-Integration mit Laravel kennengelernt, aber es gibt noch 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 Anmeldedaten angeben, erhalten Sie diese Fehlermeldung:

cURL error 56: CONNECT tunnel failed, response 407

Die URL eines authentifizierten Proxys hat in der Regel dieses Format:

<protocol>://<username>:<password>@<host>:<port>

Benutzername und Passwort sind Ihre Authentifizierungsdaten.

Die Http-Klasse von Laravel (die unter der Haube auf Guzzle basiert) unterstützt vollständig authentifizierte Proxys. Sie brauchen also nicht viel zu ä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 Datenverkehr nun an den konfigurierten authentifizierten Proxyserver weiter!

Vermeiden Sie Probleme mit SSL-Zertifikaten

Wenn Sie einen Proxy mit dem Http-Client von Laravel einrichten, können Ihre Anfragen aufgrund von SSL-Zertifikatsprüfungsfehlern fehlschlagen:

cURL error 60: SSL certificate problem: self-signed certificate in certificate chain

Dies geschieht in der Regel, wenn der Proxy-Server ein selbstsigniertes SSL-Zertifikat verwendet.

Wenn Sie dem Proxyserver vertrauen und nur lokal oder in einer sicheren Umgebung testen, können Sie die SSL-Überprüfung wie folgt deaktivieren:

$response = Http::withOptions([
    'proxy' => $proxyUrl,
    'verify' => false, // disable SSL certificate verification
])->get('https://httpbin.io/ip');

Warnung: Die Deaktivierung der SSL-Überprüfung setzt Sie Man-in-the-Middle-Angriffen aus. Verwenden Sie diese Option daher nur in vertrauenswürdigen Umgebungen.

Andernfalls können Sie die Zertifikatsdatei des Proxyservers (z. B. proxy-ca.crt) 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');

Vergewissern Sie sich, dass die Datei proxy-ca.crt in einem sicheren und zugänglichen Verzeichnis gespeichert ist (z. B. storage/certs/) und Laravel die Berechtigung hat, sie zu lesen.

Mit beiden Methoden sollte der durch den Proxy verursachte SSL-Überprüfungsfehler verschwinden.

Rotation des Bevollmächtigten

Wenn Sie immer wieder denselben Proxy-Server verwenden, wird die Ziel-Website wahrscheinlich irgendwann die IP-Adresse dieses Proxy-Servers erkennen und blockieren. Um dies zu vermeiden, können Sie Ihre Proxyserver wechseln undfür jede Anfrage einen anderen verwenden.

Dies sind die Schritte zum Drehen von Proxys in Laravel:

  1. Ein Array mit mehreren Proxy-URLs erstellen
  2. Zufällige Auswahl vor jeder Anfrage
  3. Setzen Sie den ausgewählten Proxy in der HTTP-Client-Konfiguration

Implementieren Sie das mit diesem Code:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Http;

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 Ausschnitt zeigt, wie man einen Proxy zufällig aus einer Liste auswählt, um eine Proxy-Rotation zu simulieren. Dieser Ansatz funktioniert zwar, hat aber einige Nachteile:

  1. Sie müssen einen Pool von zuverlässigen Proxyservern unterhalten, was oft mit Kosten verbunden ist.
  2. Für eine effektive Rotation muss der Proxy-Pool groß genug sein. Ohne einen großen Pool werden immer wieder dieselben Proxys verwendet, was zur 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 automatisch IP-Adressen in Ihrem Namen und ermöglicht Ihnen den Zugang zu:

  • 1500M+ IPs in 195 Ländern
  • Proxys für Privathaushalte, Rechenzentren, ISPs und Mobiltelefone
  • Hohe Betriebszeit und eine Erfolgsquote von 99,9

Im nächsten Abschnitt zeigen wir Ihnen, wie Sie die rotierenden Proxys von Bright Data mit Laravel verwenden können.

Verwendung eines Bright Data Proxy in Laravel

Bright Data betreibt eines der größten Proxynetzwerke der Welt, das Fortune-500-Unternehmen und über 20.000 Kunden unterstützt. Ihr Proxy-Netzwerk umfasst:

Führen Sie die folgenden Schritte aus, um Bright Data-Proxys für Wohngebiete mit Laravel zu verwenden.

Wenn Sie noch kein Konto haben, melden Sie sich bei Bright Data an. Wenn Sie bereits ein Konto haben, melden Sie sich an, um auf Ihr Benutzer-Dashboard zuzugreifen:

Das Bright Data Dashboard

Wenn Sie angemeldet sind, klicken Sie auf die Schaltfläche “Proxy-Produkte abrufen”, um fortzufahren:

Klicken Sie auf die Schaltfläche "Proxy-Produkte abrufen".

Sie werden auf die Seite “Proxies & Scraping-Infrastruktur” weitergeleitet:

Die Seite "Proxies & Scraping Infrastruktur".

Suchen Sie in der Tabelle die Zeile “Wohnen” und klicken Sie sie an:

Anklicken der Zeile "Wohnen

Sie werden auf die Seite für die Wohnsitzvollmacht weitergeleitet:

Die Seite "Wohnen"

Wenn Sie es zum ersten Mal tun, folgen Sie dem Assistenten, um den Proxy-Dienst nach Ihren Bedürfnissen zu konfigurieren. Wenn Sie weitere Unterstützung benötigen, wenden Sie sich bitte an den 24/7-Support.

Auf der Registerkarte “Übersicht” finden Sie den Host, den Port, den Benutzernamen und das Passwort Ihres Proxys:

Die Proxy-Anmeldeinformationen

Verwenden Sie diese Angaben, um Ihre Proxy-URL zu erstellen:

$proxyUrl = 'http://<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>';

eplace die Platzhalter (, , , ) durch Ihre tatsächlichen Proxy-Anmeldedaten.

Vergewissern Sie sich, dass die Einstellung “Aus” aktiviert ist, um das Proxy-Produkt zu aktivieren, und folgen Sie den restlichen Anweisungen, um die Einrichtung abzuschließen:

Anklicken des Aktivierungsknotens

Nachdem Sie die Proxy-URL eingerichtet haben, können Sie sie nun mit dem Http-Client in Laravel integrieren. Hier die Logik zum Senden einer Anfrage über den rotierenden Bright Data Wohn-Proxy in Laravel:

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, wird eine andere Exit-IP angezeigt.

Die Laravel-Proxy-Rotation war noch nie so einfach wie mit den automatisch rotierenden Proxys von Bright Data!

[Extra] Symfony’s HttpClient Proxy Integration

Angenommen, Sie bevorzugen die HttpClient-Komponente von Symfony gegenüber dem Standard-HTTP-Client Http von Laravel.

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 den HttpClient von Symfony mit einem Proxy wie folgt verwenden:

<?php

namespace App\Http\Controllers;

use Symfony\Contracts\HttpClient\HttpClientInterface;
use Illuminate\Http\JsonResponse;

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);
    }
}

Dieses Setup ermöglicht es Ihnen, den HttpClient von Symfony zu verwenden, um Anfragen über einen Proxy zu senden.

Schlussfolgerung

In diesem Tutorial zur Proxy-Integration haben Sie gelernt, warum Proxies wichtig sind und wie man sie in Laravel verwendet. Wir haben behandelt, wie man Proxys in Laravel einfach konfiguriert, sowohl mit dem Standard-HTTP-Client von Laravel als auch mit dem HttpClient von Symfony.

Sie haben auch gesehen, warum kostenlose Proxydienste unzuverlässig und sogar riskant sein können. Um eine stabile Leistung, Sicherheit und Skalierbarkeit zu gewährleisten, müssen Sie einen vertrauenswürdigen Proxy-Anbieter wählen. Sparen Sie Zeit und Energie und wenden Sie sich direkt an den besten Proxy-Anbieter auf dem Markt, Bright Data.

Erstellen Sie ein Konto und testen Sie unsere Proxys noch heute kostenlos!

Keine Kreditkarte erforderlich