0

これは、gzip されたコンテンツではなく、プレーンなコンテンツを取得します。file_get_contents が https でヘッダーを送信する方法は?

$url = 'https://www.google.co.in/';

///Try to fetch compressed content using the file_get_contents function
$opts = array(
'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en-US,en;q=0.8\r\n" .
                "Accept-Encoding: gzip,deflate,sdch\r\n" .
                "Accept-Charset:UTF-8,*;q=0.5\r\n"
)
);

$context = stream_context_create($opts);
$zipped_content = file_get_contents($url ,false,$context);

echo $zipped_content;

print_r($http_response_header);

URL がhttp://www.yahoo.co.inの場合、gzip されたコンテンツが提供されます (確認のために、ゴミのように見えます)。

しかし、「https://」を使用すると、file_get_contents が指定されたヘッダーを送信しないようです。

4

2 に答える 2

1

ヘッダーはOKではありません...User-agentを追加すれば問題ありません。

"User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP/0.4\r\n".

なんで?Googleが決定します。

于 2013-03-22T07:35:39.573 に答える
0

これを試して

 $url = "https://www.google.co.in/";   
  $ch = curl_init();    
  curl_setopt($ch,CURLOPT_URL,$url);   
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);   
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);    
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip'));   
  $contents = curl_exec($ch);   
  curl_close($ch);
于 2013-03-22T06:08:36.903 に答える