Felix Riesterer: HTTPS-Resource via PHP-Socket hinter Proxy laden

Beitrag lesen

Nochmal Nachtrag.

Wenn ich neue Erkenntnisse habe, poste ich sie hier.

mit stream_context geht's jetzt:

// new data
$response = '';

$stream = stream_context_create(
  Array(
    'http' => Array(
      'method' => 'GET',
      'timeout' => 20,
      'header' => array(
        'Connection: close',
        'User-agent: '.$t->settings['user-agent'],
        'Proxy-Authorization: Basic '.$t->settings['proxy-auth']
      ),
      'protocol_version' => '1.1',
      'proxy' => sprintf(
        'tcp://%1$s:%2$s',
        $t->settings['proxy-server'],
        $t->settings['proxy-port']
      ),
      'request_fulluri' => true /* without this option we get an HTTP error! */
    ),
    'ssl' => Array(
      'SNI_enabled' => true,
      'SNI_server_name' => $t->settings['host']
    ),
  )
);

$fp = fopen(
  sprintf(
    'https://%1$s/%2$s',
    $t->settings['host'],
    // ensure absolute path
    preg_replace(
      '~^/?~',
      '',
      $display['url']
    )
  ),
  'r',
  false,
  $stream
);

if ($fp !== -1) {

  while (!feof($fp)) {
    $response .= fread($fp, 4096);
  }

  fclose($fp);
}

if (strlen($response)) {

  $filename = 'downloaded.html';

  file_put_contents($filename, $response);
}

Liebe Grüße,

Felix Riesterer.