Eine HTTP-URL über einen Proxy mit PHP file_get_contents abrufen
Konfigurieren Sie den HTTP-Stream-Wrapper von PHP für einen Forward-Proxy, einschließlich Anforderungsformatierung und der Grenzen von Stream-Kontexten.
Für eine gewöhnliche HTTP-Anfrage ohne PHP cURL übergeben Sie einen Proxy-Kontext an den HTTP-Stream-Wrapper:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://203.0.113.10:8080',
'request_fulluri' => true,
'timeout' => 10,
],
]);
$body = file_get_contents('http://example.com/', false, $context);Ersetzen Sie den Dokumentationsendpunkt durch Ihren HTTP-Proxy oder einen Kandidaten aus der HTTP-Proxy-Liste. HTTP-Kontext-Schnittstelle erwartet eine TCP-Adresse für proxy. request_fulluri=true setzt den vollständigen Ziel-URI in die Anforderungszeile, wie viele Forward-Proxys verlangen. Das Timeout begrenzt den Stream-Vorgang nach den Regeln dieses Wrappers.
Prüfen Sie den Rückgabewert und die Warnung, bevor Sie den Body parsen; ein fehlgeschlagenes Lesen und eine leere erfolgreiche Antwort erfordern unterschiedliche Behandlung. Beginnen Sie die Diagnose mit diesem einen HTTP-Ziel und der begrenzten Anfrage. HTTPS fügt Tunneling und TLS-Verhalten hinzu, die für die tatsächliche Wrapper-/PHP-Version geprüft werden müssen; dieses Beispiel belegt diese Fähigkeiten nicht.
Den Kontext bei diesem Aufruf zu übergeben hält die Route sichtbar und vermeidet Änderungen an unabhängigen URL-Lesevorgängen. Ein gemeinsam genutzter Standardkontext ist nur dann angemessen, wenn die Anwendung diese Richtlinie bewusst möchte; Bibliotheken sollten seinen größeren Geltungsbereich berücksichtigen.
Dies konfiguriert PHP-Streams, nicht ein unabhängig erstelltes cURL-Handle, einen Browser oder einen anderen Prozess. Ermitteln Sie den tatsächlichen HTTP-Transport eines Pakets, bevor Sie erwarten, dass es diesen Kontext verwendet.