file_get_contents über Proxy

Die PHP Funktion file_get_contents ist praktisch. Mit ihr kann man Inhalt von diversen Datenquellen – nicht nur Dateien – einlesen um sie danach weiter zu verarbeiten. Man kann der Funktion bspw. auch eine URL übergeben. Leider funktioniert das nicht hinter einem Proxy. Hier hilft ein Streamcontext.

$aContext = array(
  'http' => array(
    'proxy' => 'tcp://PROXYIP:PROXYPORT',
    'request_fulluri' => true)
);

$cxContext =stream_context_create($aContext);

$sFile = file_get_contents("http://www.example.com", false, $cxContext);

PROXYIP muss noch mit der gültigen IP des Proxyservers und PROXYPORT mit dem Port ersetzt werden.
Teilweise muss auch noch die Server Name Indication aktiviert werden. SNI erlaubt die Benutzung von mehreren Zertifikaten unter der gleichen IP-Adresse und wird bei einem Proxy oft verwendet.
Dann sieht der Context wie folgt aus:

$aContext = array(
  'http' => array(
    'proxy' => 'tcp://PROXYIP:PROXYPORT',
    'request_fulluri' => true),
    'peer_name' => 'DER ANZUFRAGENDE HOST'
  'ssl' => array(
    'SNI_enabled' => true,
    'SNI_server_name' => 'DER ANZUFRAGENDE HOST');
);


Als erster einen Kommentar schreiben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.