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. Mit der Option request_fulluri muss man etwas rumprobieren. Manche Proxies brauchen diese Einstellung, andere wiederum stört es. Teilweise muss auch noch die Server Name Indication aktiviert werden. SNI erlaubt 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)
'ssl' => array(
'peer_name' => 'DER ANZUFRAGENDE HOST'
'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.