Lokale Schnittstelle und Proxy in einer einzigen cURL-Übertragung wählen
CURLOPT_INTERFACE für die lokale Quelle und CURLOPT_PROXY für den Vermittler nutzen, unter Berücksichtigung von OS-Routing und NAT.
Ein Rechner mit mehreren lokalen Adressen kann eine davon für seine Verbindung zu einem Forward-Proxy benötigen. cURL kann beide Entscheidungen ausdrücklich treffen:
curl_setopt_array($handle, [
CURLOPT_URL => 'https://example.com/',
CURLOPT_INTERFACE => '192.0.2.20',
CURLOPT_PROXY => 'http://proxy.example:8080',
]);
Dies ist eine beispielhafte Konfiguration für ein vorhandenes cURL-Handle. Ersetzen Sie 192.0.2.20 durch eine Quelladresse, die auf dem PHP ausführenden Rechner tatsächlich verfügbar ist. Für eine zulässige öffentliche Anfrage ohne Proxy-Konto kann die HTTP-Proxy-Liste den entfernten Listener für den Proxy-Wert liefern.
CURLOPT_INTERFACE wählt die lokale Seite der ausgehenden Verbindung. CURLOPT_PROXY wählt den Vermittler, der die Anfrage weiterleitet. Die Wahl einer lokalen Quelle macht den Rechner nicht zu einem entfernten Proxy und verleiht ihm keine beliebige öffentliche IP.
Auf diesem Weg beeinflusst die lokale Auswahl die Verbindung zum Proxy. Die Website sieht im Allgemeinen die weiterleitende Quelladresse des Proxys. NAT zwischen beiden Peergruppen kann die Adresse, die jeder Empfänger sieht, zusätzlich übersetzen.
Wird die Schnittstellenauswahl weggelassen, lässt libcurl den TCP-Stack eine geeignete Quelle wählen. Diese Wahl folgt der Netzwerkkonfiguration des Rechners; es ist keine allgemeine Regel, dass die erste Adresse in einer Konfigurationsdatei gewinnt.
libcurl akzeptiert Schnittstellennamen auf unterstützten Plattformen, aber seine Dokumentation schließt die Auswahl von Windows-Schnittstellennamen für diese Option aus. Die Verwendung eines Hostnamens kann ebenfalls eine blockierende Namensauflösung auslösen. Eine bekannte lokale Adresse ist eine klarere Eingabe, wenn dies die Absicht der Anwendung ist.